server

server

نصب و پيكربندي Nextcloud در اوبونتو 20.04

۰ بازديد

Nextcloud ، يك انشعاب از ownCloud ، يك سرور مجازي اشتراك فايل است كه به شما امكان مي دهد محتواي شخصي خود را مانند اسناد و تصاوير را، بسيار شبيه به Dropbox ، در يك مكان متمركز ذخيره كنيد. تفاوتش با Nextcloud در اين است كه تمام ويژگي هاي آن منبع باز هستند. همچنين كنترل و امنيت داده هاي حساس شما را به شما باز مي گرداند ، بنابراين استفاده از سرويس ميزباني ابري شخص ثالث را از بين مي برد.
در اين آموزش ، يك نمونه Nextcloud را روي يك سرور مجازي Ubuntu 20.04 نصب و پيكربندي خواهيم كرد.
پيش نيازها
براي انجام مراحل در اين راهنما به موارد زير نياز داريد:
⦁ كاربر غير ريشه ** sudo و فايروال كه روي سرور مجازي شما تنظيم شده باشند: مي توانيد با دنبال كردن راهنماي اوليه سرور مجازي اوبونتو 20.04 يك كاربر با امتيازات sudo ايجاد كرده و يك فايروال اساسي را تنظيم كنيد.
⦁ (اختياري) يك نام دامنه كه به سرور مجازي شما اشاره كند: ما با TLS / SSL اتصالات را براي نصب Nextcloud ايمن مي كنيم. اگر سرور مجازي شما داراي نام دامنه باشد ، Nextcloud مي تواند گواهي SSL رايگان و قابل اعتماد را از  ⦁ Let’s Encrypt رمزگذاري و مديريت كند. در غير اين صورت ، Nextcloud مي تواند گواهي SSL خود امضا شده را تنظيم كند كه بتواند اتصالات را رمزگذاري كند ، اما به طور پيش فرض در مرورگرهاي وب قابل اعتماد نخواهد بود.
پس از اتمام مراحل فوق ، به ادامه نحوه يادگيري راه اندازي Nextcloud در سرور مجازي خود بپردازيد.
مرحله 1 – نصب Nextcloud
ما با استفاده از سيستم بسته بندي snap، Nextcloud را نصب خواهيم كرد. اين سيستم بسته بندي ، كه به طور پيش فرض در Ubuntu 20.04 موجود است ، به سازمان ها امكان مي دهد تا نرم افزار را به همراه كليه متعلقات و پيكربندي هاي مربوطه ، به يك واحد خودشمول با به روز رساني هاي خودكار منتقل كنند. اين بدان معني است كه به جاي نصب و پيكربندي يك سرور مجازي وب و پايگاه داده و سپس پيكربندي برنامه Nextcloud براي اجراي آن ، مي توانيم بسته snap را كه به طور خودكار سيستم هاي زيرين را كنترل مي كند نصب كنيم.
براي دانلود پكيج snap Nextcloud و نصب آن بر روي سيستم ، تايپ كنيد:
⦁ $ sudo snap install nextcloud

بسته Nextcloud روي سرور مجازي شما دانلود و نصب مي شود. شما مي توانيد با ليست كردن تغييراتي كه مربوط به snap است ، تاييد كنيد كه مراحل نصب موفقيت آميز بوده است:
⦁ $ snap changes nextcloud

Output
ID Status Spawn Ready Summary
4 Done today at 16:12 UTC today at 16:12 UTC Install “nextcloud” snap

وضعيت و خلاصه نشان مي دهد كه نصب بدون هيچ مشكلي انجام شده است.
دريافت اطلاعات اضافي درباره Snap Nextcloud
اگر اطلاعات بيشتري درباره nextcloud snap مي خواهيد ، چند دستور وجود دارد كه مي توانند مفيد باشند.
دستور snap info مي تواند توضيحات ، دستورات مديريت Nextcloud موجود و همچنين نسخه نصب شده و كانال snap در حال پيگيري را به شما نشان دهد:
⦁ $ snap info nextcloud

snap ​​مي تواند اتصالاتي را كه پشتيباني مي كنند تعريف كند ، كه از يك سوراخ و دو شاخه تشكيل شده است كه در صورت اتصال به يكديگر ، دسترسي سريع به قابليت هاي خاص يا سطح دسترسي را به شما مي دهد. به عنوان مثال ، snap هايي كه بايد به عنوان كلاينت شبكه عمل كنند بايد اتصال به شبكه را داشته باشند. براي ديدن اينكه snap كدام اتصالات را تعريف مي كند ، تايپ كنيد:
⦁ $ snap connections nextcloud

Output
Interface Plug Slot Notes
network nextcloud:network :network –
network-bind nextcloud:network-bind :network-bind –
removable-media nextcloud:removable-media – –

براي اطلاع از كليه سرويس ها و برنامه هاي خاصي كه اين snap ارائه مي دهد ، مي توانيد با تايپ كردن دستور زير به فايل تعريف snap نگاهي بيندازيد:
⦁ $ cat /snap/nextcloud/current/meta/snap.yaml

در صورت نياز به كمك به اشكال زدايي ، اين امكان را به شما مي دهد تا مؤلفه هاي جداگانه موجود در آن را ببينيد.
مرحله 2 – پيكربندي يك حساب كاربري
چند روش مختلف براي تنظيم پيكربندي Snap Nextcloud وجود دارد. در اين راهنما ، به جاي ايجاد يك كاربر اداري از طريق رابط وب ، يك كاربر را در خط فرمان ايجاد خواهيم كرد تا از يك پنجره كوچك جلوگيري كنيم كه در آن صفحه ثبت نام ادمين براي هر كسي كه از آدرس IP سرور مجازي يا نام دامنه شما بازديد كند ، قابل دسترسي باشد.
براي پيكربندي پيوند Nextcloud با يك حساب ادمين جديد ، از دستور nextcloud.manual-install استفاده كنيد. به عنوان آرگومان بايد نام كاربري و رمزعبور را وارد كنيد:
⦁ $ sudo nextcloud.manual-install sammy password

پيام زير نشان مي دهد كه Nextcloud به درستي پيكربندي شده است:
Output
Nextcloud was successfully installed

اكنون كه Nextcloud نصب شده است ، بايد دامنه هاي مورد اعتماد را تنظيم كنيم تا Nextcloud با استفاده از نام دامنه يا آدرس IP سرور مجازي به درخواست ها پاسخ دهد.
مرحله 3 – تنظيم دامنه هاي قابل اعتماد
هنگام نصب از خط فرمان ، Nextcloud نام هاي ميزبان را محدود مي كند كه نمونه به آن پاسخ مي دهد. به طور پيش فرض ، اين سرويس فقط به درخواست هاي ارسال شده به نام ميزبان “localhost” پاسخ مي دهد. ما از طريق نام دامنه سرور مجازي يا آدرس IP سرور مجازي به Nextcloud دسترسي خواهيم داشت ، بنابراين براي پذيرش اين نوع درخواست ها ، بايد اين تنظيم را مشخص كنيم.
مي توانيد تنظيمات فعلي را با جستجوي مقدار آرايه trusted_domains مشاهده كنيد:
⦁ $ sudo nextcloud.occ config:system:get trusted_domains

Output
localhost

در حال حاضر ، فقط localhost به عنوان اولين مقدار در آرايه موجود است. مي توانيم با تايپ كردن دستور زير، ورودي براي نام دامنه يا آدرس IP سرور مجازي خود را اضافه كنيم:
⦁ $ sudo nextcloud.occ config:system:set trusted_domains 1 –value=example.com

Output
System config value trusted_domains => 1 set to string example.com

اگر مجدداً دامنه هاي مورد اعتماد را جستجو كنيم ، خواهيم ديد كه اكنون دو ورودي داريم:
⦁ $ sudo nextcloud.occ config:system:get trusted_domains

Output
localhost
example.com

اگر مي خواهيد يك روش ديگر براي دستيابي به مثال Nextcloud اضافه كنيد ، مي توانيد با اجراي مجدد دستور config:system:set با يك شماره ايندكس افزايشي (“1” در دستور اول) و تنظيم –value دامنه ها يا آدرس هاي ديگري را اضافه كنيد .
مرحله 4 – ايمن سازي رابط وب Nextcloud با SSL
قبل از شروع استفاده از Nextcloud ، بايد رابط وب را ايمن كنيم.
اگر يك نام دامنه در ارتباط با سرور مجازي Nextcloud خود داريد ، nextcloud snap مي تواند به شما در دستيابي و پيكربندي يك گواهينامه SSL قابل اعتماد از Let’s Encrypt كمك كند. اگر سرور مجازي Nextcloud شما نام دامنه نداشته باشد ، Nextcloud مي تواند گواهي خود امضا شده را تنظيم كند كه ترافيك وب شما را رمزگذاري مي كند اما به طور خودكار توسط مرورگر وب شما قابل اعتماد نخواهد بود.
با اين حساب ، بخش زير را كه با سناريوي شما مطابقت دارد ، دنبال كنيد.
گزينه 1: تنظيم SSL با Let’s Encrypt
اگر يك نام دامنه در ارتباط با سرور مجازي Nextcloud خود داريد ، بهترين گزينه براي تأمين امنيت رابط وب شما ، دريافت گواهي Let’s Encrypt SSL است.
با باز كردن پورتها در فايروال شروع كنيد كه Let’s Encryptبراي تأييد مالكيت دامنه استفاده مي كند. اين باعث مي شود صفحه ورود Nextcloud به صورت عمومي قابل دسترسي باشد ، اما از آنجا كه ما قبلاً يك حساب ادمين تنظيم كرده ايم ، هيچ كس نمي تواند نصب را بدزدد:
⦁ $ sudo ufw allow 80,443/tcp

در مرحله بعد با تايپ دستور ز يك گواهي Let’s Encrypt درخواست كنيد:
⦁ $ sudo nextcloud.enable-https lets-encrypt

ابتدا از شما سؤال خواهد شد كه آيا سرور مجازي شما شرايط لازم را براي درخواست گواهينامه از سرويس Let’s Encrypt را دارد:
Output
In order for Let’s Encrypt to verify that you actually own the
domain(s) for which you’re requesting a certificate, there are a
number of requirements of which you need to be aware:

1. In order to register with the Let’s Encrypt ACME server, you must
agree to the currently-in-effect Subscriber Agreement located
here:

https://letsencrypt.org/repository/

By continuing to use this tool you agree to these terms. Please
cancel now if otherwise.

2. You must have the domain name(s) for which you want certificates
pointing at the external IP address of this machine.

3. Both ports 80 and 443 on the external IP address of this machine
must point to this machine (e.g. port forwarding might need to be
setup on your router).

Have you met these requirements? (y/n)

براي ادامه y را تايپ كنيد.
در مرحله بعد ، از شما خواسته مي شود تا يك آدرس ايميل براي استفاده در عمليات بازيابي ارائه دهيد:
Output
Please enter an email address (for urgent notices or key recovery):

براي ادامه ايميل خود را وارد كرده و Enter را فشار دهيد.
در آخر ، نام دامنه مرتبط با سرور مجازي Nextcloud خود را وارد كنيد:
Output
Please enter your domain name(s) (space-separated): example.com

از گواهي Let’s Encrypt شما درخواست مي شود و به شرط آنكه همه چيز خوب پيش برود ، نمونه داخلي Apache دوباره راه اندازي مي شود تا بلافاصله SSL را پياده سازي كنيد:
Output
Attempting to obtain certificates… done
Restarting apache… done

اكنون مي توانيد به مرحله بعد پيش برويد تا براي اولين بار وارد Nextcloud شويد.
گزينه 2: تنظيم SSL با گواهي خود امضا شده
اگر سرور مجازي Nextcloud شما نام دامنه ندارد ، مي توانيد با ايجاد يك گواهي SSL خود امضا شده رابط وب را ايمن كنيد. اين گواهينامه امكان دسترسي به رابط وب از طريق اتصال رمزگذاري شده را مي دهد ، اما نمي تواند هويت سرور مجازي شما را تأييد كند ، بنابراين مرورگر شما به احتمال زياد يك هشدار را نمايش مي دهد.
براي توليد يك گواهي خود امضا شده و پيكربندي Nextcloud براي استفاده از آن ، اين دستور تايپ كنيد:
⦁ $ sudo nextcloud.enable-https self-signed

Output
Generating key and self-signed certificate… done
Restarting apache… done

خروجي فوق نشان مي دهد كه Nextcloud يك گواهي خود امضا شده توليد و فعال كرده است.
اكنون كه رابط ايمن است ، پورت هاي وب را در فايروال باز كنيد تا به رابط وب دسترسي پيدا كنيد:
⦁ $ sudo ufw allow 80,443/tcp

اكنون براي اولين بار آماده ورود به Nextcloud هستيد.
مرحله 5 – ورود به رابط وب Nextcloud
اكنون كه Nextcloud پيكربندي شد ، از نام دامنه يا آدرس IP سرور مجازي خود در مرورگر وب خود بازديد كنيد:
https://example.com

توجه: اگر يك گواهي SSL خود امضا شده تنظيم كرده ايد ، مرورگر شما مي تواند هشداري را در مورد عدم امنيت اتصال نشان دهد زيرا گواهي سرور مجازي توسط يك مجوز معتبر شناخته شده امضا نشده است. اين براي گواهي هاي خود امضا شده پيش بيني مي شود ، بنابراين براي رفتن به سايت ، بر روي هشدار كليك كنيد.

از آنجا كه قبلاً يك حساب ادمين را از خط فرمان پيكربندي كرده ايد ، به صفحه ورود Nextcloud منتقل مي شويد. اعتباراتي را كه براي كاربر ادمين ايجاد كرده ايد وارد كنيد:

براي ورود به رابط وب Nextcloud روي دكمه Log in كليك كنيد.
اولين باري كه وارد مي شويد ، پنجره اي با متن معرفي و پيوندهايي با كلاينت هاي مختلف Nextcloud نمايش داده مي شود كه مي توانند براي دسترسي به نمونه Nextcloud شما استفاده كنند:

براي دانلود هر كلاينتي كه به آن علاقه داريد ، روي دانلود كليك كنيد يا با كليك بر روي X در گوشه بالا سمت راست ، از پنجره خارج شويد. به رابط اصلي Nextcloud منتقل خواهيد شد ، جايي كه مي توانيد شروع به آپلود و مديريت فايل ها كنيد:

اكنون نصب شما كامل و ايمن است. براي آشنايي بيشتر با ويژگي ها و كارايي سيستم جديد خود ، مي توانيد در رابط كاربري خود به راحتي جستجو كنيد.
نتيجه
Nextcloud مي تواند قابليت هاي سرويس هاي محبوب ذخيره سازي ابري شخص ثالث را كپي كند. محتوا مي تواند بين كاربران يا به صورت خارجي با URL هاي عمومي به اشتراك گذاشته شود. مزيت Nextcloud اين است كه اطلاعات در مكاني كه شما كنترل مي كنيد بصورت ايمن ذخيره مي شوند.
براي عملكردهاي بيشتر ، به Nextcloud’s app store مراجعه كنيد ، جايي كه مي توانيد افزونه هايي را براي گسترش قابليت هاي سرويس نصب كنيد.

 

از اين لينك ها زير مي توانيد آمورش هاي بيشتري براي لينوكس پيدا كنيد :

چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهيد

نحوه ايجاد نماها (Views) براي توسعه وب Django

نصب Mount NFS در اوبونتو 20.04

نحوه توسعه برنامه ها در Kubernetes با Okteto

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

نحوه تنظيم Jupyter Notebook با پايتون در Ubuntu 20.04

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

مقدمه اي بر مديريت پيكربندي با Ansible

نحوه نصب R روي اوبونتو 20.04

ارائه برنامه هاي Flask با uWSGI و Nginx در اوبونتو 18.04

نصب و پيكربندي Postfix در اوبونتو 20.04

 

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان – 

 

برچسب‌ها:DropboxNextcloudownCloud

نصب و پيكربندي Ansible در اوبونتو 20.04

۰ بازديد

سيستم هاي مديريت پيكربندي به منظور ساده سازي فرايند كنترل تعداد زيادي سرور مجازي ، براي مديران و تيم هاي عملياتي طراحي شده اند. آنها به شما اجازه مي دهند بسياري از سيستم هاي مختلف را به صورت خودكار از يك مكان مركزي كنترل كنيد.
در حالي كه بسياري از ابزارهاي مديريت پيكربندي محبوب براي سيستمهاي لينوكس مانند Chef و Puppet در دسترس هستند ، اينها معمولاً پيچيده تر از چيزي هستند كه افراد مي خواهند يا نياز دارند. Ansible يك گزينه عالي براي اين منظور است زيرا معماري ساده اي را ارائه مي دهد كه نيازي به نصب نرم افزار ويژه روي nodes ندارد ، از SSH براي انجام كارهاي اتوماسيون و فايل هاي YAML براي تعريف جزئيات تهيه استفاده مي كند.
در اين راهنما ، به چگونگي نصب Ansible در سرور مجازي Ubuntu 20.04 ميپردازيم و در مورد اصول استفاده از اين نرم افزار به صورت جزيي ميپردازيم. براي دريافت اطلاعات سطح بالاتر به مقاله مقدمه اي بر مديريت پيكربندي با Ansible مراجعه كنيد
پيش نيازها
براي دنبال كردن اين آموزش ، به موارد زير نياز داريد:
يك node كنترل Ansible: node كنترل Ansible ماشيني است كه ما براي اتصال و كنترل هاست هاي Ansible روي SSH از آن استفاده خواهيم كرد. node كنترل Ansible شما يا مي تواند دستگاه محلي شما باشد يا يك سرور مجازي اختصاص داده شده براي اجراي Ansible ، اگرچه اين راهنما فرض مي كند كه node كنترل شما يك سيستم اوبونتو 20.04 است. اطمينان حاصل كنيد كه node كنترل داراي موارد زير است:
o يك كاربر غير ريشه با امتيازات sudo. براي تنظيم اين گزينه ، مي توانيد مراحل 2 و 3 راهنماي اوليه راه اندازي سرور مجازي ما براي اوبونتو 20.04 را دنبال كنيد. با اين وجود ، لطفاً توجه داشته باشيد كه اگر از سرور مجازي راه دور به عنوان node كنترل Ansible خود استفاده مي كنيد ، بايد هر مرحله از اين راهنما را دنبال كنيد. با اين كار فايروال روي سرور مجازي با ufw پيكربندي شده و دسترسي خارجي به پروفايل كاربر غير ريشه شما امكان پذير خواهد شد ، كه هر دو به حفظ امنيت سرور مجازي از راه دور كمك مي كنند.
o صفحه كليد SSH مرتبط با اين كاربر. براي انجام اين كار ، مي توانيد مرحله 1 راهنماي ما درباره نحوه تنظيم كليدهاي SSH در اوبونتو 20.04 را دنبال كنيد.
يك يا چند هاست Ansible: هاست Ansible هر دستگاهي است كه node كنترل Ansible شما براي خودكار سازي آن تنظيم شده باشد. اين راهنما فرض مي كند كه هاست هاي Ansible شما سرور مجازي هاي Ubuntu 20.04 از راه دور هستند. اطمينان حاصل كنيد كه هر هاست Ansible داراي موارد زير است:
o كليد عمومي SSH node كنترل Ansible به authorized_keys كاربر سيستم اضافه شده باشد. اين كاربر مي تواند يا كاربر ريشه يا يك كاربر معمولي با امتيازات sudo باشد. براي تنظيم اين گزينه ، مي توانيد مرحله 2 نحوه تنظيم كليدهاي SSH را در اوبونتو 20.04 دنبال كنيد.
مرحله 1 – نصب Ansible
براي شروع استفاده از Ansible به عنوان ابزاري براي مديريت زيرساخت هاي سرور مجازي خود ، بايد نرم افزار Ansible را روي دستگاه نصب كنيد كه به عنوان node كنترل Ansible عمل خواهد كرد. براي آن از مخازن پيش فرض Ubuntu استفاده خواهيم كرد.
ابتدا ايندكس بسته سيستم خود را ريفرش كنيد :
$ sudo apt update

پس از اين بروزرساني ، مي توانيد نرم افزار Ansible را با دستور زير نصب كنيد:
$ sudo apt install ansible

node كنترلي Ansible شما اكنون تمامي نرم افزارهاي مورد نياز براي مديريت هاست شما را دارد. در مرحله بعد ، به نحوه اضافه كردن هاست ها به فايل موجودي node كنترل خواهيم پرداخت تا بتواند آنها را كنترل كند.
مرحله 2 – تنظيم فايل موجودي
فايل موجودي (Inventory) شامل اطلاعات مربوط به هاست هايي است كه با Ansible آنها را مديريت خواهيد كرد. شما مي توانيد از يك تا چند صد سرور مجازي در فايل موجودي خود داشته باشيد و هاست ها را مي توانيد در گروه ها و زير گروه ها سازماندهي كنيد. فايل موجودي نيز اغلب براي تنظيم متغيرهايي مورد استفاده قرار مي گيرد كه فقط براي هاست يا گروه هاي خاص معتبر باشند ، تا در playbookها و قالب ها مورد استفاده قرار گيرند. برخي از متغيرها همچنين مي توانند بر نحوه اجراي يك playbook اثر بگذارند ، مانند متغير ansible_python_interpreter كه به زودي مشاهده خواهيم كرد.
براي ويرايش محتواي موجودي پيش فرض Ansible ، فايل / etc / ansible / hosts را با استفاده از ويرايشگر متن مورد نظر خود، در node كنترل Ansible باز كنيد:
$ sudo nano /etc/ansible/hosts

توجه: برخي از نصب هاي Ansible فايل موجودي پيش فرض را ايجاد نمي كنند. اگر اين فايل در سيستم شما وجود ندارد ، مي توانيد يك فايل جديد را در / etc / ansible / hosts ايجاد كنيد يا يك مسير موجودي سفارشي را با استفاده از پارامتر -i هنگام اجراي دستورات و playbooks تهيه كنيد.

فايل موجودي پيش فرض موجود توسط نصب Ansible شامل تعدادي مثال است كه مي توانيد از آنها به عنوان مرجع براي تنظيم موجودي خود استفاده كنيد. مثال زير گروهي را به نام [servers] با سه سرور مجازي مختلف در آن تعريف مي كند كه هر يك توسط يك نام مستعار مشخص شده اند: server1 ،server2 و server3. حتما IP هاي هايلايت شده را با آدرس هاي IP هاست هاي Ansible جايگزين كنيد.
/etc/ansible/hosts
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113

[all:vars]
ansible_python_interpreter=/usr/bin/python3

زير گروهall: vars پارامتر هاست ansible_python_interpreter را تعيين مي كند كه براي همه هاست هاي موجود در اين موجودي معتبر خواهد بود. اين پارامتر اطمينان حاصل مي كند كه سرور راه دور به جاي / usr / bin / python (Python 2.7) از / usr / bin / python3 (Python 3) قابل اجرا استفاده مي كند كه در نسخه هاي اخير اوبونتو وجود ندارد.
پس از اتمام ، فايل را با فشار دادن CTRL + X سپس Y و ENTER ذخيره كرده و آن را ببنديد تا تغييرات خود را تأييد كنيد.
هر زمان كه مي خواهيد موجودي خود را بررسي كنيد ، مي توانيد اين دستور را اجرا كنيد:
$ ansible-inventory –list -y

خروجي شبيه به اين را خواهيد ديد ، اما زيرساخت سرور مجازي خود را مطابق با فايل موجودي خود تعريف مي كنيد:
Output
all:
children:
servers:
hosts:
server1:
ansible_host: 203.0.113.111
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: 203.0.113.112
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: 203.0.113.113
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}

اكنون كه فايل موجودي خود را پيكربندي كرده ايد ، همه موارد لازم براي آزمايش اتصال به هاست هاي Ansible خود را داريد.
مرحله 3 – آزمايش اتصال
پس از تنظيم فايل موجودي براي شامل شدن سرور مجازي هاي خود، وقت آن است كه بررسي كنيم آيا Ansible قادر به اتصال به اين سرور مجازي ها و اجراي دستورات از طريق SSH است يا خير.
براي اين راهنما ، ما از حساب ريشه Ubuntu استفاده خواهيم كرد زيرا اين تنها حساب موجود به طور پيش فرض در سرور مجازي هاي تازه ايجاد شده است. اگر هاست هاي Ansible شما قبلاً يك كاربر sudo معمولي ايجاد كرده اند ، به شما توصيه مي شود كه به جاي ريشه از آن حساب استفاده كنيد.
براي مشخص كردن كاربر سيستم از راه دور مي توانيد از آرگومان -u استفاده كنيد. در صورت عدم ارائه ، Ansible سعي خواهد كرد كه به عنوان كاربر فعلي سيستم شما در node كنترل متصل شود.
از دستگاه محلي يا node كنترل Ansible خود اين دستور را اجرا كنيد:
$ ansible all -m ping -u root

اين دستورالعمل از ماژول ping داخلي Ansible براي انجام يك تست اتصال در همه nodes از موجودي پيش فرض شما ، به عنوان root استفاده مي كند. ماژول ping موارد زير را تست خواهد كرد:
آيا هاست ها در دسترس هستند.
آيا اعتبار SSH معتبري داريد؛
آيا هاست ها قادرند ماژول هاي Ansible را با استفاده از پايتون اجرا كنند.
بايد خروجي مشابه اين دريافت كنيد:
Output
server1 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
server2 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
server3 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}

اگر اين اولين بار است كه از طريق SSH به اين سرور مجازي ها وصل مي شويد ، از شما خواسته مي شود كه صحت هاست هايي را كه از طريق Ansible به آنها وصل مي شويد ، تأييد كنيد. وقتي از شما خواسته شد ، yes را تايپ كنيد و سپس براي تأييد ENTER را بزنيد.
هنگامي كه پاسخ “pong” را از هاست دريافت كرديد ، به اين معني است كه شما آماده اجراي دستورات و playbookهاي Ansible در آن سرور مجازي هستيد.
توجه: اگر نمي توانيد پاسخ موفقي از سرور مجازي هاي خود دريافت كنيد ، براي اطلاعات بيشتر در مورد نحوه اجراي دستورات Ansible با گزينه هاي مختلف اتصال ، راهنماي برگه تقلب Ansible ما را بررسي كنيد.

مرحله 4 – اجراي دستورات Ad-Hoc (اختياري)
پس از تأييد اينكه node كنترل Ansible شما قادر به برقراري ارتباط با هاست شماست ، مي توانيد دستورات ad-hoc و playbooks را روي سرور مجازي هاي خود اجرا كنيد.
هر دستوري كه معمولاً بر روي SSH از سرور مجازي راه دور اجرا مي كنيد مي تواند با Ansible در سرور مجازي هاي مشخص شده در فايل موجودي شما اجرا شود. به عنوان نمونه ، مي توانيد ميزان استفاده از ديسك را در همه سرور مجازي ها با دستور زير بررسي كنيد:
$ ansible all -a “df -h” -u root

Output

server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 798M 624K 798M 1% /run
/dev/vda1 155G 2.3G 153G 2% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0

server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 608K 394M 1% /run
/dev/vda1 78G 2.2G 76G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 395M 0 395M 0% /run/user/0

فرمان هايلايت شده df -h را مي توان با هر دستوري كه دوست داريد جايگزين كنيد.
همچنين مي توانيد ماژول هاي Ansible را از طريق دستورات ad-hoc ، مشابه آنچه قبلاً با ماژول ping براي آزمايش اتصال انجام داده ايم ، اجرا كنيد. به عنوان مثال ، در اينجا چگونگي استفاده از ماژول apt براي نصب جديدترين نسخه vim بر روي همه سرور مجازي هاي موجود در موجودي شما آورده شده است:
$ ansible all -m apt -a “name=vim state=latest” -u root

همچنين هنگام اجراي دستورات Ansible مي توانيد هاست هاي فردي و همچنين گروه ها و زير گروه ها را هدف قرار دهيد. به عنوان مثال ، به اين ترتيب شما مي توانيد uptime هر هاست در گروه سرور مجازي ها را بررسي كنيد:
$ ansible servers -a “uptime” -u root

ما مي توانيم هاست هاي مختلفي را با جدا كردن آنها با دو نقطه مشخص كنيم:
$ ansible server1:server2 -m ping -u root

براي كسب اطلاعات بيشتر در مورد نحوه استفاده از Ansible ، از جمله نحوه اجراي playbooks براي اتوماسيون تنظيم سرور مجازي ، مي توانيد راهنماي مرجع Ansible ما را بررسي كنيد.
نتيجه
در اين راهنما ، شما Ansible را نصب كرديد و يك فايل موجودي را براي اجراي دستورات ad-hoc از يك node كنترل Ansible اجرا كرديد.
هنگامي كه تأييد كرديد كه قادر هستيد زيرساختهاي خود را از يك دستگاه كنترلر مركزي Ansible متصل كرده و كنترل كنيد ، مي توانيد هر دستور يا palybook مورد نظر را در مورد آن هاست اجرا كنيد.
براي كسب اطلاعات بيشتر در مورد نحوه استفاده از Ansible ، راهنماي كمكي در صفحه ما را ببينيد.

 

از اين لينك ها زير مي توانيد آمورش هاي بيشتري براي لينوكس پيدا كنيد :

چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهيد

نحوه ايجاد نماها (Views) براي توسعه وب Django

نصب Mount NFS در اوبونتو 20.04

نحوه توسعه برنامه ها در Kubernetes با Okteto

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

نحوه تنظيم Jupyter Notebook با پايتون در Ubuntu 20.04

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

مقدمه اي بر مديريت پيكربندي با Ansible

نحوه نصب R روي اوبونتو 20.04

ارائه برنامه هاي Flask با uWSGI و Nginx در اوبونتو 18.04

نصب و پيكربندي Postfix در اوبونتو 20.04

 

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان – 

 

برچسب‌ها:AnsibleplaybookPuppet

مقدمه اي بر مديريت پيكربندي با Ansible

۱ بازديد

مديريت پيكربندي فرايندي است براي مديريت تغييرات در يك سيستم به شكلي كه از يكپارچگي در طول زمان اطمينان حاصل كند ، و به طور معمول شامل ابزار و فرآيندهايي است كه اتوماسيون و قابليت مشاهده را تسهيل مي كند. حتي اگر اين مفهوم از صنعت IT سرچشمه نگرفته باشد ، اين اصطلاح به طور گسترده اي براي اشاره به مديريت پيكربندي سرور مجازي ها به كار مي رود.
در زمينه سرور مجازي ها ، مديريت پيكربندي معمولاً به IT Automation  يا  Server Orchestration نيز شناخته مي شود. هر دو عبارت جنبه هاي عملي مديريت پيكربندي و توانايي كنترل چندين سيستم از يك سرور مجازي مركزي را تاكيد مي كنند.
اين راهنما شما را با مزاياي استفاده از يك ابزار مديريت پيكربندي براي اتوماسيون تنظيم زيرساخت سرور مجازي تان، آشنا مي كند و اينكه چگونه يك ابزار از جمله Ansible مي تواند در اين زمينه به شما كمك كند.
مزاياي استفاده از يك ابزار مديريت پيكربندي
ابزارهاي مديريت پيكربندي متعددي در بازار وجود دارند كه سطح پيچيدگي و سبك هاي معماري متنوعي دارند. اگرچه هر يك از اين ابزارها ويژگي هاي خاص خود را دارند و به روش هاي كمي متفاوت كار مي كنند ، همه آنها عملكرد مشابهي را ارائه مي دهند: اطمينان حاصل كنيد كه وضعيت سيستم مطابق با وضعيت توصيف شده توسط مجموعه اي از اسكريپت هاي آماده سازي ميباشد.
بسياري از مزاياي مديريت پيكربندي براي سرور مجازي ها از توانايي تعريف زيرساخت هاي شما به صورت كد نشات مي گيرد. اين سيستم به شما امكان مي دهد:
از يك سيستم كنترل نسخه براي پيگيري هرگونه تغيير در زيرساخت هاي خود استفاده كنيد
از تهيه اسكريپت براي چندين سرور مجازي محيط مانند توسعه ، آزمايش و توليد، استفاده مجدد كنيد
اسكريپت هاي آماده سازي بين همكاران را براي سهولت همكاري در يك محيط توسعه استاندارد به اشتراك بگذاريد
روند تكثير سرور مجازي ها را ساده تر كنيد ، و اين باعث مي شود تا بازيابي از خطاهاي مهم تسهيل شود
علاوه بر اين ، ابزارهاي مديريت پيكربندي راهي براي كنترل يك تا صدها سرور مجازي از يك مكان متمركز را به شما ارائه مي دهند كه مي تواند به طور چشمگيري بهره وري و يكپارچگي زيرساختهاي سرور مجازي شما را بهبود ببخشد.
بررسي اجمالي
Ansible ابزاري براي مديريت پيكربندي مدرن است كه وظيفه تنظيم و نگهداري سرور مجازي هاي از راه دور را تسهيل مي كند ، با يك طراحي مينيماليستي كه براي به روزرساني و اجراي سريع كاربران در نظر گرفته شده است.
كاربران ، اسكريپت هاي تهيه Ansible را در YAML مي نويسند ، يك استاندارد سريال سازي داده هاي كاربر پسند كه به هيچ زبان برنامه نويسي خاصي ربط ندارد. اين به كاربران امكان مي دهد در مقايسه با ابزارهاي مشابه در همان دسته ، اسكريپت هاي تخصصي را بطور شهودي تر ايجاد كنند.
Ansible نيازي به نصب نرم افزار خاصي روي گره هايي كه با اين ابزار مديريت مي شوند، ندارد. يك دستگاه كنترل با نرم افزار Ansible راه اندازي ميشود كه سپس از طريق SSH استاندارد با گره ها ارتباط برقرار مي كند.
Ansible به عنوان يك ابزار مديريت پيكربندي و چارچوب اتوماسيون ، كليه ويژگيهاي رايج موجود در ساير ابزارهاي همان گروه را ضبط مي كند ، در حالي كه هنوز تمركز زيادي روي سادگي و عملكرد دارد:
رفتار Idempotent
Ansible وضعيت منابع موجود در سيستم هاي مديريت شده را براي جلوگيري از تكرار كارهايي كه قبلاً انجام شده بودند ، پيگيري مي كند. اگر بسته اي از قبل نصب شده باشد ، ديگر آن را نصب نميكند. هدف اين است كه بعد از اجراي هر مرحله ، سيستم به حالت مورد نظر برسد (يا آن را حفظ كند) حتي اگر چندين بار آن را اجرا كنيد. اين همان چيزي است كه Ansible و ساير ابزارهاي مديريت پيكربندي را به خاطر داشتن يك رفتار Idempotent متمايز مي كند. هنگام اجراي يك playbook ، وضعيت هر كاري را كه بايد اجرا شود مشاهده مي كنيد و اينكه آيا اين كار باعث تغيير در سيستم شده است يا خير.
پشتيباني از متغيرها ، شرط ها و حلقه ها
هنگام نوشتن اسكريپت هاي اتوماسيون Ansible ، مي توانيد از متغيرها ، شرط ها و حلقه ها استفاده كنيد تا اتوماسيون خود را متنوع تر و كارامدتر كنيد.
حقايق سيستم
Ansible مجموعه اي از اطلاعات دقيق در مورد گره هاي مديريت شده ، مانند رابط هاي شبكه و سيستم عامل را جمع آوري كرده و آن را به عنوان متغيرهاي جهاني به نام واقعيت هاي سيستم ارائه مي دهد. از واقعيت ها مي توان در playbook ها استفاده كرد تا اتوماسيون شما متنوع تر و سازگارتر شود ، و بسته به سيستم مجهز شده ، متفاوت رفتار كند.
سيستم قالب بندي
Ansible از سيستم قالب بندي Jinja2 Python استفاده مي كند تا امكان عبارات پويا و دسترسي به متغيرها را فراهم كند. از الگوهاي مي توان براي تسهيل تنظيم فايل ها و خدمات پيكربندي استفاده كرد. به عنوان مثال ، مي توانيد از يك الگو براي تنظيم يك ميزبان مجازي جديد در Apache استفاده كنيد ، در حالي كه از همان قالب براي نصب چندين سرور مجازي استفاده مي كنيد.
پشتيباني از افزونه ها و ماژول ها
Ansible با صدها ماژول داخلي براي تسهيل اتوماسيون نوشتن جهت كارهاي اجرايي رايج سيستمها ، مانند نصب بسته هايي با apt و همزمان سازي فايل ها با rsync ، و همچنين براي كار با نرم افزارهاي رايج مانند سيستم هاي پايگاه داده (مانند MySQL ، PostgreSQL ، MongoDB ، و غيره) و ابزارهاي مديريت متعلقات (PHP’s composer, Ruby’s gem, Node’s npm و غيره) همراه است. جداي از آن ، روش هاي مختلفي وجود دارد كه مي توانيد Ansible را گسترش دهيد: وقتي به عملكردي سفارشي احتياج داريد كه به طور پيش فرض وجود ندارد ، افزونه ها و ماژول ها گزينه هاي خوبي هستند.
همچنين مي توانيد ماژول ها و افزونه هاي شخص ثالث را در پرتال Ansible Galaxy پيدا كنيد.
آشنايي با مفاهيم Ansible
اكنون به اصطلاحات و مفاهيم Ansible نگاهي خواهيم داشت تا به شما در آشنايي با اين اصطلاحات در طول مجموعه مقاله ها كمك كنيم.
Control Node (گره كنترل)
گره كنترل سيستمي است كه Ansible براي اتصال به سرور مجازي شما نصب و تنظيم شده است. شما مي توانيد چندين گره كنترل داشته باشيد ، و هر سيستم قادر به اجراي Ansible مي تواند به عنوان يك گره كنترل از جمله رايانه هاي شخصي يا لپ تاپ هايي كه داراي سيستم عامل مبتني بر لينوكس يا يونيكس هستند ، تنظيم شود. در حال حاضر ، Ansible در هاست هاي ويندوز قابل نصب نيست ، اما مي توانيد با تنظيم يك ماشين مجازي كه لينوكس را اجرا كرده و از آنجا Ansible را اجرا ميكند ، اين محدوديت را دور بزنيد.
Managed Nodes (گره هاي مديريت شده)
سيستمهايي كه با استفاده از Ansible كنترل مي كنيد گره هاي مديريت شده ناميده مي شوند. Ansible نياز دارد گره هاي مديريت شده از طريق SSH قابل دستيابي باشند ، و پايتون 2 (نسخه 2.6 يا بالاتر) يا پايتون 3 (نسخه 3.5 يا بالاتر) نصب شده باشد.
Ansible انواع مختلفي از سيستم عامل ها از جمله سرور مجازي هاي ويندوز را به عنوان گره هاي مديريت شده پشتيباني مي كند.
Inventory
فايل Inventory (موجودي ) شامل ليستي از هاست هايي است كه شما با استفاده از Ansible مديريت خواهيد كرد. گرچه Ansible به طور معمول هنگام نصب يك فايل Inventory پيش فرض ايجاد مي كند ، مي توانيد از Inventory هاي هر پروژه استفاده كنيد تا از زيرساختهاي خود تفكيك بهتري داشته باشيد و از اجراي دستورات يا Playbook ها روي سرور مجازي اشتباه جلوگيري كنيد. موجودي هاي استاتيك معمولاً به صورت فايلهاي .ini ايجاد مي شوند ، اما شما مي توانيد از موجودي هايي كه به صورت پويا توليد شده نيز به هر زبان برنامه نويسي كه قادر به بازگشت JSON است ، استفاده كنيد.
Tasks
در Ansible ، يك Task (كار) ، واحد مجزايي از كار براي اجراي يك گره مديريت شده است. هر عملي براي انجام به عنوان يك Task تعريف مي شود. كارها مي توانند به عنوان يك عمل يك طرفه از طريق دستورات ad-hoc اجرا شوند ، يا در يك Playbook به عنوان بخشي از يك اسكريپت اتوماسيون گنجانده شوند.
Playbook
Playbook شامل ليست سفارشي از وظايف و چند دستورالعمل ديگر است تا مشخص كند كدام هاست ها هدف آن اتوماسيون باشند ، آيا از سيستم افزايش امتياز براي اجراي آن كارها استفاده شود، و بخش هاي اختياري براي تعريف متغيرها يا مشموليت فايل ها دارد. Ansible وظايف را به صورت متوالي انجام مي دهد و يك اجراي كامل Playbook را يك play مي نامند. Playbook ها با فرمت YAML نوشته ميشوند.
Handlers
براي دستيابي به اقدامات روي يك سرويس ، مانند راه اندازي مجدد يا متوقف كردن سرويسي كه به طور فعال در سيستم گره مديريت شده اجرا مي شود ، از Handler استفاده مي شود. Handler ها معمولاً توسط taksها تحريك مي شوند و پس از اتمام همه كارها ، اجراي آنها در پايان يك play اتفاق مي افتد. به اين ترتيب ، اگر بيش از يك كار سرويس را ريستارت كند ، سرويس فقط يك بار و پس از انجام همه كارها ريستارت ميشود. اگرچه رفتار پيش فرض Handler كارآمدتر است و در كل يك عمل بهتر ميباشد ، اما در صورت نياز توسط يك كار نيز مي توان مجبور به اجراي سريع آن شد.
Roles
role ، مجموعه اي از Playbook و فايل هاي مرتبط است كه به يك ساختار از پيش تعريف شده توسط Ansible سازمان دهي شده است. role ها استفاده مجدد و بازگشت مجدد از Playbook ها را به بسته هاي قابل تقسيم اتوماسيون دانه اي براي اهداف خاص مانند نصب يك سرور مجازي وب ، نصب يك محيط PHP يا تنظيم سرور مجازي MySQL تسهيل مي كند.
نتيجه
Ansible ابزاري براي اتوماسيون فناوري اطلاعات جزيي است كه داراي منحني يادگيري ملايم ميباشد ، و تا حدودي به خاطر استفاده از YAML براي تهيه اسكريپت ها مفيد ميباشد. داراي تعداد زيادي ماژول داخلي است كه مي تواند براي كارهاي انتزاعي مانند نصب بسته ها و كار با قالب ها استفاده شود. الزامات ساده زيرساختي و دستورات قابل دسترس آن مي تواند مناسب كساني باشد كه مديريت پيكربندي را شروع مي كنند.
در قسمت بعدي اين مجموعه ، نحوه نصب و شروع كار با Ansible را در سرور مجازي Ubuntu 20.04 مشاهده خواهيم كرد.

 

از اين لينك ها زير مي توانيد آمورش هاي بيشتري براي لينوكس پيدا كنيد :

چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهيد

نحوه ايجاد نماها (Views) براي توسعه وب Django

نصب Mount NFS در اوبونتو 20.04

نحوه توسعه برنامه ها در Kubernetes با Okteto

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

نحوه تنظيم Jupyter Notebook با پايتون در Ubuntu 20.04

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

مقدمه اي بر مديريت پيكربندي با Ansible

نحوه نصب R روي اوبونتو 20.04

ارائه برنامه هاي Flask با uWSGI و Nginx در اوبونتو 18.04

نصب و پيكربندي Postfix در اوبونتو 20.04

 

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان – 

 

برچسب‌ها:AnsibleIdempotentIT AutomationplaybookServer OrchestrationYAML

نحوه نصب R روي اوبونتو 20.04

۰ بازديد

R يك زبان برنامه نويسي منبع باز است كه در تحليل داده و محاسبات آماري استفاده ميشود. با حمايت بنياد R براي محاسبات آماري ، از آن به صورت گسترده توسط جامعه فعالي استفاده ميشود. R بسياري از بسته هاي توليد شده توسط كاربر را براي حوزه هاي خاصي از مطالعه ارائه مي دهد ، كه باعث مي شود اين امر در بسياري از زمينه ها كاربرد داشته باشد.
در اين آموزش R را نصب مي كنيم و نحوه اضافه كردن بسته ها از شبكه رسمي بايگاني جامع R (CRAN) را نشان مي دهيم.
پيش نيازها
براي دنبال كردن اين آموزش به سرور مجازي اوبونتو 20.04 با:
• حداقل 1 گيگابايت رم
• كاربر غير ريشه با امتيازات sudo
نياز داريد
براي يادگيري چگونگي دستيابي به اين تنظيمات ، راهنماي ستاپ اوليه سرور مجازي را دنبال كنيد.
پس از اتمام اين پيش نيازها ، آماده شروع هستيد.
مرحله 1 – نصب R
از آنجا كه R يك پروژه به سرعت در حال حركت است ، آخرين نسخه پايدار هميشه از منابع اوبونتو در دسترس نيست ، بنابراين ما با اضافه كردن منبع خارجي كه توسط CRAN نگهداري مي شود ، شروع خواهيم كرد.
توجه : CRAN منابع درون شبكه خود را حفظ مي كند ، اما همه منابع خارجي قابل اعتماد نيستند. مطمئن شويد كه فقط از منابع معتبر نصب كنيد.

ابتدا بياييد كليد GPG مربوطه را اضافه كنيم.
$ sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

وقتي دستور را اجرا مي كنيم ، خروجي زير را دريافت خواهيم كرد:
Output
Executing: /tmp/apt-key-gpghome.cul0ddtmN1/gpg.1.sh –keyserver keyserver.ubuntu.com –recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
gpg: key 51716619E084DAB9: public key “Michael Rutter ” imported
gpg: Total number processed: 1
gpg: imported: 1

پس از داشتن كليد قابل اعتماد ، مي توانيم منبع را اضافه كنيم.
توجه داشته باشيد كه اگر از 20.04 استفاده نمي كنيد ، مي توانيد منبع مربوطه را از ليست R Project Ubuntu ، كه براي هر نسخه نامگذاري شده است ، پيدا كنيد. اوبونتو 20.04 به Focal Fossa اشاره دارد و جديدترين نسخه R، 4.0.0 است، بنابراين قرارداد نامگذاري منبع زير، focal-cran40 است.
$ sudo add-apt-repository ‘deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/’

در بين خروجي نمايش داده شده ، بايد خطوط مشابه زير را پيدا كنيد:
Output

Get:7 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ InRelease [3622 B]
Get:8 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages [15.6 kB]

اكنون ، براي اينكه مانيفيست (اعلان) هاي بسته از منبع جديد را شامل شود ، بايد پس از اين به روزرساني كنيم.
$ sudo apt update
در بين خروجي بايد يك خط شبيه به زير باشد:
Output

Hit:5 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ InRelease

اگر خط فوق در خروجي از دستور UPDATE ظاهر شود ، ما منبع را با موفقيت اضافه كرده ايم. مي توانيم مطمئن باشيم كه به طور تصادفي نسخه قديمي را نصب نمي كنيم.
در اين مرحله ، آماده نصب R با دستور زير هستيم.
$sudo apt install r-base
اگر از شما خواسته شد كه نصب را تأييد كنيد ، براي ادامه ، y را فشار دهيد.
در زمان نوشتن اين مقاله، آخرين نسخه پايدار R از CRAN نسخه 4.0.1 ميباشد كه هنگام شروع R نمايش داده مي شود.
از آنجا كه ما قصد داريم يك پكيج نمونه براي هر كاربر روي سيستم نصب كنيم ، R را به صورت root شروع خواهيم كرد تا كتابخانه ها بصورت خودكار در دسترس همه كاربران قرار بگيرند. از طرف ديگر ، اگر دستور R را بدون sudo اجرا كنيد ، مي توانيد يك كتابخانه شخصي براي كاربر خود تنظيم كنيد.
$ sudo -i R
Output

R version 4.0.0 (2020-04-24) — “Arbor Day”
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

Type ‘demo()’ for some demos, ‘help()’ for on-line help, or
‘help.start()’ for an HTML browser interface to help.
Type ‘q()’ to quit R.

>

اين تأييد مي كند كه ما R را با موفقيت نصب كرده ايم و وارد پوسته تعاملي آن شديم.
مرحله 2 – نصب بسته هاي R از CRAN
بخشي از قدرت R فراواني در دسترس بسته هاي افزودني آن است. به هدف توضيحي ، txtplot را نصب خواهيم كرد ، كتابخانه اي كه نمودارهاي ASCII را در بر مي گيرد كه شامل نمودار پراگندگي ، نمودار خطي ، نمودار چگالي ، نمودارهاي acf و نمودارهاي ميله اي است:
> install.packages(‘txtplot’)
توجه: خروجي زير نشان مي دهد كه بسته در كجا نصب خواهد شد.
Output

Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)

اين مسير گسترده در سايت وجود دارد زيرا ما R را به عنوان root اجرا كرديم. اين مكان صحيحي است كه بسته را در دسترس همه كاربران قرار ميدهد.
پس از اتمام نصب ، مي توانيم txtplot را لود كنيم:
> library(‘txtplot’)
اگر پيام خطايي وجود ندارد ، كتابخانه با موفقيت لود شده است. بياييد اكنون آن را با مثالي كه عملكرد نمودارسازي پايه را با برچسب هاي محور نشان مي دهد ، در مرحله عمل قرار دهيم. داده هاي مثال ، تهيه شده توسط بسته هاي datasets درR ، شامل سرعت اتومبيل ها و مسافت موردنياز براي متوقف كردن بر اساس داده هاي دهه 1920 است:
$ txtplot(cars[,1], cars[,2], xlab = ‘speed’, ylab = ‘distance’)

Output
+—-+———–+————+———–+———–+–+
120 + * +
| |
d 100 + * +
i | * * |
s 80 + * * +
t | * * * * |
a 60 + * * * * * +
n | * * * * * |
c 40 + * * * * * * * +
e | * * * * * * * |
20 + * * * * * +
| * * * |
0 +—-+———–+————+———–+———–+–+
5 10 15 20 25
speed

اگر علاقه مند به كسب اطلاعات بيشتر در مورد txtplot هستيد ، از help)txtplot) در داخل مفسر R استفاده كنيد.
هر بسته از پيش كامپايل شده را مي توان از CRAN با install.packages () نصب كرد. براي كسب اطلاعات بيشتر در مورد آنچه در دسترس است ، مي توانيد ليستي از بسته هاي رسمي بر اساس نام كه از طريق ليست نام بسته هاي موجود CRAN سازماندهي شده ، پيدا كنيد.
براي خروج از R ، مي توانيد q () را تايپ كنيد. مگر اينكه بخواهيد تصوير فضاي كاري را ذخيره كنيد ، مي توانيد در صورت درخواست از شما n را فشار دهيد.
نتيجه
با نصب موفقيت آميز R روي سرور مجازي ، ممكن است علاقه مند به اين راهنما در مورد نصب سرور مجازي RStudio باشيد تا بتوانيد يك IDE را در استقرار مبتني بر سرور مجازي كه تازه تكميل كرده ايد ، قرار دهيد. همچنين مي توانيد نحوه تنظيم سرور مجازي Shiny را براي تبديل كد R خود به صفحات وب تعاملي بياموزيد.
براي كسب اطلاعات بيشتر در مورد نحوه نصب پكيج هاي R با استفاده از ابزارهاي مختلف ، مي توانيد نحوه نصب مستقيم از GitHub ، BitBucket يا ساير لوكيشن ها را مطالعه كنيد. اين كار به شما امكان مي دهد تا از آخرين كارهاي جامعه فعال بهره ببريد.

 

از اين لينك ها زير مي توانيد آمورش هاي بيشتري براي لينوكس پيدا كنيد :

چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهيد

نحوه ايجاد نماها (Views) براي توسعه وب Django

نصب Mount NFS در اوبونتو 20.04

نحوه توسعه برنامه ها در Kubernetes با Okteto

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

نحوه تنظيم Jupyter Notebook با پايتون در Ubuntu 20.04

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

مقدمه اي بر مديريت پيكربندي با Ansible

نحوه نصب R روي اوبونتو 20.04

ارائه برنامه هاي Flask با uWSGI و Nginx در اوبونتو 18.04

نصب و پيكربندي Postfix در اوبونتو 20.04

 

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان – 

 

برچسب‌ها:CRANنصب R

ارائه برنامه هاي Flask با uWSGI و Nginx در اوبونتو 18.04

۰ بازديد

در اين راهنما يك برنامه Python را با استفاده از ميكروفريم Flask در Ubuntu 18.04 ايجاد خواهيد كرد. بخش عمده اين مقاله در مورد نحوه تنظيم سرور مجازي برنامه uWSGI و نحوه راه اندازي و پيكربندي برنامه Nginx براي عمل به عنوان يك پروكسي معكوس front-end خواهد بود.
پيش نيازها
قبل از شروع اين راهنما ، بايد اين موارد را داشته باشيد:
⦁ سرور مجازي با اوبونتو 18.04 و يك كاربر غير ريشه با امتيازات sudo. براي راهنمايي ، مقاله ستاپ اوليه سرور مجازي ما را دنبال كنيد.
⦁ Nginx نصب شده داشته باشيد، مراحل 1 و 2 نحوه نصب Nginx در اوبونتو 18.04 را دنبال كنيد.
⦁ نام دامنه پيكربندي شده براي اشاره به سرور مجازي شما. مي توانيد يكي از آنها را در Namecheap خريداري كنيد يا يكي از آنها را به صورت رايگان در Freenom دريافت كنيد. با دنبال كردن مستندات مربوط به دامنه ها و DNS مي توانيد ياد بگيريد كه چگونه دامنه ها را به vpsgol نشان دهيد. حتماً سوابق DNS زير را ايجاد كنيد:
o يك ركورد A با your_domain كه به آدرس IP عمومي سرور مجازي شما اشاره مي كند.
o يك ركورد A با www.your_domain كه به آدرس IP عمومي سرور مجازي شما اشاره كند.
⦁ آشنايي با uWSGI ، سرور مجازي برنامه ما و مشخصات WSGI. اين بحث به تفصيل به تعاريف و مفاهيم مي پردازد.
مرحله 1 – نصب مولفه ها از مخازن اوبونتو
اولين قدم ما نصب تمام بخش ها مورد نياز از مخازن اوبونتو خواهد بود. pip ، مدير بسته پايتون را براي مديريت اجزاي پايتون خود نصب خواهيم كرد. همچنين فايل هاي توسعه پايتون لازم براي ساخت uWSGI را دريافت خواهيم كرد.
ابتدا ، اجازه دهيد ايندكس بسته محلي را به روز كنيم و بسته هايي را نصب كنيم كه به ما امكان مي دهد محيط Python خود را بسازيم. اين موارد شامل python3-pip ، همراه با چند بسته ديگر و ابزار توسعه لازم براي يك محيط برنامه نويسي قوي است:
⦁ $ sudo apt update

⦁ $ sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools

با استفاده از اين بسته ها ، به سمت ايجاد يك فضاي مجازي براي پروژه خود برويم.
مرحله 2 – ايجاد يك محيط مجازي پايتون
در مرحله بعدي ، يك محيط مجازي تنظيم خواهيم كرد تا بتوانيم برنامه Flask خود را از ساير فايل هاي Python روي سيستم جدا كنيم.
با نصب بسته python3-venv كه ماژول venv را نصب خواهد كرد شروع كنيد:
⦁ $ sudo apt install python3-venv

در مرحله بعد ، بياييد يك دايركتوري والد براي پروژه Flask تهيه كنيم. بعد از ايجاد آن وارد پوشه شويد:
⦁ $ mkdir ~/myproject

⦁ $ cd ~/myproject

يك محيط مجازي ايجاد كنيد تا نيازمندي هاي پايتون پروژه Flask خود را با تايپ كردن دستور زير ذخيره كنيد:
⦁ $ python3.6 -m venv myprojectenv

با اين كار يك كپي محلي از Python و pip در ديركتوري به نام myprojectenv درون ديركتوري پروژه شما كپي ميشود.
قبل از نصب برنامه ها در محيط مجازي ، بايد آن را فعال كنيد. اين كار را با تايپ كردن دستور زير انجام دهيد:
⦁ $ source myprojectenv/bin/activate

اعلان شما تغيير مي كند و نشان مي دهد كه اكنون در محيط مجازي كار مي كنيد. چيزي شبيه به (myprojectenv)user@host:~/myproject$ به نظر مي رسد .
مرحله 3 – تنظيم يك برنامه Flask
اكنون كه در محيط مجازي خود قرار داريد ، مي توانيد Flask و uWSGI را نصب كرده و طراحي برنامه خود را شروع كنيد.
ابتدا بگذاريد wheel  را با نمونه محلي pip نصب كنيم تا اطمينان حاصل شود كه بسته هاي ما حتي در صورت از دست دادن بايگاني wheel ، نصب مي شوند:
⦁ $ pip install wheel

توجه داشته باشيد
صرفنظر از اينكه از كدام نسخه Python استفاده مي كنيد ، هنگامي كه محيط مجازي فعال مي شود ، بايد از دستور pip استفاده كنيد (نه pip3)
سپس ، اجازه دهيد Flask و uWSGI را نصب كنيم:
⦁ (myprojectenv) $ pip install uwsgi flask

ايجاد يك برنامه نمونه
اكنون كه Flask را در دسترس داريد ، مي توانيد يك برنامه ساده ايجاد كنيد. Flask يك ميكرو فريم ورك است. و بسياري از ابزارهايي كه ممكن است چهارچوبهاي كامل تري داشته باشند را شامل نميشود، و عمدتاً به عنوان ماژول وجود دارد كه مي توانيد براي شروع برنامه هاي وب از كمك بگيريد تا بتوانيد به پروژه هاي خود وارد شويد.
در حالي كه ممكن است برنامه شما پيچيده تر باشد ، ما برنامه Flask خود را در يك فايل واحد با نام myproject.py ايجاد خواهيم كرد:
⦁ (myprojectenv) $ nano ~/myproject/myproject.py

كد برنامه در اين فايل قرار دارد. Flask را وارد مي كند و يك آبجكت Flask را معرفي مي كند. شما مي توانيد از اين ويژگي براي تعريف كاركردهايي استفاده كنيد كه بايد هنگام درخواست يك مسير خاص انجام شود:
~/myproject/myproject.py
from flask import Flask
app = Flask(__name__)

@app.route(“/”)
def hello():
return “

Hello There!

if __name__ == “__main__”:
app.run(host=’0.0.0.0′)

اين كد اساساً مشخص مي كند كه هنگام دستيابي به حوزه root ، چه محتوايي ارائه شود. پس از اتمام فايل را ذخيره كنيد و ببنديد.
اگر راهنماي اوليه تنظيم سرور مجازي را دنبال كرده ايد ، بايد فايروال UFW را فعال كرده باشيد. براي تست برنامه ، بايد دسترسي به پورت 5000 را داشته باشيد:
⦁ (myprojectenv) $ sudo ufw allow 5000

اكنون مي توانيد برنامه Flask خود را با تايپ كردن دستور زير تست كنيد:
⦁ (myprojectenv) $ python myproject.py

خروجي مانند اين را مشاهده خواهيد كرد ، كه شامل يك هشدار مفيد است كه به شما يادآوري مي كند از اين ستاپ سرور مجازي در توليد استفاده نكنيد:
Output
* Serving Flask app “myproject” (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

از آدرس IP سرور مجازي و به دنبال آن: 5000 در مرورگر وب خود بازديد كنيد:
http://your_server_ip:5000
بايد چيزي شبيه به اين را ببينيد:

پس از اتمام ، CTRL-C را در پنجره ترمينال خود بزنيد تا سرور مجازي توسعه Flask متوقف شود.
ايجاد نقطه ورود WSGI
در مرحله بعدي ، فايلي را ايجاد ميكنيم كه به عنوان نقطه ورود برنامه ما باشد. اين به سرور مجازي uWSGI مي گويد كه چگونه مي توان با آن تعامل برقرار كرد.
بياييد فايل wsgi.py را فراخواني كنيم:
⦁ (myprojectenv) $ nano ~/myproject/wsgi.py

در اين فايل ، بياييد نمونه Flask را از برنامه خود وارد كنيم و سپس آن را اجرا كنيم:
~/myproject/wsgi.py
from myproject import app

if __name__ == “__main__”:
app.run()

پس از اتمام فايل را ذخيره كنيد و ببنديد.
مرحله 4 – پيكربندي uWSGI
برنامه شما اكنون با يك نقطه ورود مشخص نوشته شده است. اكنون مي توانيم به سراغ پيكربندي uWSGI برويم.
تست سرويس UWSGI
بياييد تست كنيم تا مطمئن شويم كه uWSGI مي تواند برنامه ما را ارائه كند.
ما مي توانيم اين كار را با ساده تر كردن نام ورودي خود انجام دهيم. اين با نام ماژول ساخته شده است (منهاي پسوند .py) به علاوه نام قابل فراخواني درون برنامه. در نمونه ما ، wsgi:app است.
بياييد سوكت را نيز مشخص كنيم ، به طوري كه آن را بر روي يك رابط در دسترس عمومي و همچنين پروتكل راه اندازي كنيد تا از HTTP به جاي پروتكل باينري uwsgi استفاده كند. ما از همان شماره پورت ، 5000 ، كه قبلاً باز كرديم استفاده خواهيم كرد:
⦁ (myprojectenv) $ uwsgi –socket 0.0.0.0:5000 –protocol=http -w wsgi:app

آدرس IP سرور مجازي خود را به همراه 5000 در ادامه اش بازديد كنيد
http: // your_server_ip: 5000
بايد دوباره خروجي برنامه خود را مشاهده كنيد:

وقتي تأييد كرد كه به درستي كار ميكند ، CTRL-C را در پنجره ترمينال خود فشار دهيد.
اكنون محيط مجازي خود را ايجاد كرده ايم ، بنابراين مي توانيم آن را غيرفعال كنيم:
⦁ (myprojectenv) $ deactivate

هر دستور پايتون اكنون دوباره از محيط پايتون سيستم استفاده خواهد كرد.
ايجاد يك فايل پيكربندي uWSGI
آزمايش كرده ايد كه uWSGI قادر به ارائه برنامه شما است ، اما در نهايت براي استفاده طولاني مدت چيزي قوي تر مي خواهيد. مي توانيد با استفاده از گزينه هاي مربوطه ، يك فايل پيكربندي uWSGI ايجاد كنيد.
بياييد آن فايل را در فهرست پروژه خود قرار دهيم و آن را myproject.ini بناميم:
⦁ $ nano ~/myproject/myproject.ini

در داخل ، با عنوان [uwsgi] شروع خواهيم كرد تا uWSGI بداند كه مي تواند تنظيمات را اعمال كند. دو مورد را مشخص خواهيم كرد: خود ماژول با مراجعه به فايل wsgi.py منهاي پسوند و فراخواني در فايل ، app:
~/myproject/myproject.ini
[uwsgi]
module = wsgi:app

در مرحله بعد ، به uWSGI خواهيم گفت كه در حالت مستر راه اندازي شود و پنج فرآيند كارگر را براي ارائه درخواست هاي واقعي ايجاد كند:
~/myproject/myproject.ini
[uwsgi]
module = wsgi:app

master = true
processes = 5

هنگام آزمايش ، uWSGI را در پورت شبكه قرار داده ايد. با اين حال ، مي توانيد از Nginx براي رسيدگي به اتصالات واقعي كلاينت استفاده كنيد ، كه سپس درخواست ها را به uWSGI منتقل مي كند. از آنجا كه اين مولفه ها در همان رايانه كار مي كنند ، سوكت يونيكس ترجيح داده مي شود زيرا سريع تر و ايمن تر است. بياييد سوكت را myproject.sock بناميم و در اين ديركتوري قرار دهيم.
بياييد مجوزهاي موجود در سوكت را نيز تغيير دهيم. بعداً به گروه Nginx مالكيت پروسه uWSGI را مي دهيم ، بنابراين بايد اطمينان حاصل كنيم كه مالك گروه سوكت مي تواند اطلاعاتي را از آن بخواند و براي آن بنويسد. ما همچنين با اضافه كردن گزينه vacuum ، سوكت را تميز كنيم:
~/myproject/myproject.ini
[uwsgi]
module = wsgi:app

master = true
processes = 5

socket = myproject.sock
chmod-socket = 660
vacuum = true

آخرين كاري كه انجام خواهيم داد اينست كه گزينه die-on-term  را تنظيم كنيم. اين مي تواند اطمينان حاصل كند كه سيستم init و uWSGI پيش فرض هاي يكساني در مورد معني هر سيگنال فرآيند دارند. تنظيم اين دو مؤلفه سيستم ، رفتار مورد انتظار را اجرا مي كند:
~/myproject/myproject.ini
[uwsgi]
module = wsgi:app

master = true
processes = 5

socket = myproject.sock
chmod-socket = 660
vacuum = true

die-on-term = true

شايد متوجه شده باشيد كه ما پروتكلي مانند خط فرمان مشخص نكرديم. دليل اين است كه به طور پيش فرض ، uWSGI با استفاده از پروتكل uwsgi ، يك پروتكل باينري سريع طراحي شده براي برقراري ارتباط با ديگر سرور مجازي ها ، ارتباط برقرار مي كند. Nginx مي تواند اين پروتكل را به صورت بومي اجرا كند ، بنابراين بهتر است از اين استفاده كنيد به جاي اينكه مجبور به برقراري ارتباط توسط HTTP شويد.
پس از اتمام ، فايل را ذخيره كنيد و ببنديد.
مرحله 5 – ايجاد يك فايل واحد سيستماتيك
در مرحله بعدي ، بياييد فايل واحد خدمات سيستمي سرويس را ايجاد كنيم. ايجاد يك فايل واحد سيستمي به سيستم اوليه Ubuntu امكان مي دهد تا UWSGI را به طور خودكار شروع كرده و هر زمان كه سرور مجازي بوت ميشود ، سرويس Flask را ارائه دهد.
براي شروع يك فايل واحد كه به service . ختم ميشود در ديركتوري /etc/systemd/system ايجاد مي كنيم:
⦁ $ sudo nano /etc/systemd/system/myproject.service

در داخل ، با بخش [Unit] شروع خواهيم كرد ، كه براي مشخص كردن ابرداده و متعلقات استفاده مي شود. بياييد شرح خدمات خود را در اينجا قرار دهيم و به سيستم init بگوييم كه فقط پس از رسيدن به هدف شبكه ، سيستم را شروع كند:
/etc/systemd/system/myproject.service
[Unit]
Description=uWSGI instance to serve myproject
After=network.target

سپس ، اجازه دهيد بخش [Service] را باز كنيم. با اين كار كاربر و گروهي را كه مي خواهيم تحت روند كار قرار بگيرند مشخص مي كند. بياييد مالكيت اين فرآيند را به حساب كاربري معمول خود بدهيم زيرا اين فايل در اختيار همه فايل هاي مربوطه است. همچنين بياييد مالكيت گروه را به گروه www-data واگذار كنيم تا Nginx بتواند به راحتي با فرآيندهاي uWSGI ارتباط برقرار كند. به ياد داشته باشيد كه نام كاربري خود را در اينجا جايگزين كنيد:
/etc/systemd/system/myproject.service
[Unit]
Description=uWSGI instance to serve myproject
After=network.target

[Service]
User=sammy
Group=www-data

در مرحله بعدي ، بگذاريد ديركتوري كار را مشخص كنيم و متغير محيطي PATH را تنظيم كنيم تا سيستم اوليه بداند كه موارد اجرايي اين فرآيند در محيط مجازي ما قرار دارند. بياييد فرمان شروع سرويس را نيز مشخص كنيم. Systemd نياز دارد كه ما مسير كامل را به uWSGI قابل اجرا كه در محيط مجازي ما نصب شده است ، واگذار كنيم. نام فايل پيكربندي .ini را كه در ديركتوري پروژه خود ايجاد كرده ايم ، ارسال خواهيم كرد.
به ياد داشته باشيد كه نام كاربري و مسير پروژه را با اطلاعات شخصي خود جايگزين كنيد:
/etc/systemd/system/myproject.service
[Unit]
Description=uWSGI instance to serve myproject
After=network.target

[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myproject
Environment=”PATH=/home/sammy/myproject/myprojectenv/bin”
ExecStart=/home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini

در آخر ، بياييد يك بخش [Install] اضافه كنيم. اگر سيستم را فعال كنيم كه در بوت شروع شود ، به چه سيستم ميگويد كه به اين سرويس چه چيزي وصل كند. ما مي خواهيم با شروع به كار سيستم معمولي چند كاربره ، اين سرويس شروع شود:
/etc/systemd/system/myproject.service
[Unit]
Description=uWSGI instance to serve myproject
After=network.target

[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myproject
Environment=”PATH=/home/sammy/myproject/myprojectenv/bin”
ExecStart=/home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini

[Install]
WantedBy=multi-user.target

با اين كار ، فايل سرويس سيستمي ما كامل است. اكنون آن را ذخيره كنيد و ببنديد.
اكنون مي توانيم سرويس uWSGI را كه ايجاد كرديم شروع كنيم و آن را فعال كنيم تا در بوت شروع شود:
⦁ $ sudo systemctl start myproject

⦁ $ sudo systemctl enable myproject

بگذاريد وضعيت را بررسي كنيم:
⦁ $ sudo systemctl status myproject

بايد خروجي مانند اين را مشاهده كنيد:
Output
● myproject.service – uWSGI instance to serve myproject
Loaded: loaded (/etc/systemd/system/myproject.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-07-13 14:28:39 UTC; 46s ago
Main PID: 30360 (uwsgi)
Tasks: 6 (limit: 1153)
CGroup: /system.slice/myproject.service
├─30360 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini
├─30378 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini
├─30379 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini
├─30380 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini
├─30381 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini
└─30382 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini

در صورت مشاهده هر گونه خطا ، حتما آنها را قبل از ادامه آموزش برطرف كنيد.
مرحله 6 – پيكربندي Nginx در درخواستهاي پروكسي
سرور مجازي برنامه uWSGI ما بايد اكنون به روز و در حال اجرا و منتظر درخواست هايي روي فايل سوكت در ديركتوري پروزه باشد. بياييد Nginx را پيكربندي كنيم تا درخواست هاي وب را با استفاده از پروتكل uwsgi به آن سوكت منتقل كنيم.
با ايجاد يك فايل پيكربندي بلوك جديد سرور مجازي در ديركتوري sites-available Nginx شروع كنيد. بياييد اين پروژه را myproject بناميم تا با بقيه راهنما مطابقت داشته باشد:
⦁ $ sudo nano /etc/nginx/sites-available/myproject

يك بلوك سرور مجازي باز كنيد و به Nginx بگوييد كه به پورت پيش فرض 80 گوش كند. بياييد به آن نيز بگوييم كه از اين بلوك براي درخواست هاي نام دامنه سرور مجازي ما استفاده كند:
/etc/nginx/sites-available/myproject
server {
listen 80;
server_name your_domain www.your_domain;
}

سپس ، بياييد يك بلوك موقعيت مكاني اضافه كنيم كه مطابق با هر درخواست باشد. در اين بلوك ، فايل uwsgi_params را وارد خواهيم كرد كه پارامترهاي كلي UWSGI مورد نياز براي تنظيم را مشخص مي كند. سپس درخواستها را به سوكت تعريف شده با استفاده از بخشنامه uwsgi_pass ارسال خواهيم كرد:
/etc/nginx/sites-available/myproject
server {
listen 80;
server_name your_domain www.your_domain;

location / {
include uwsgi_params;
uwsgi_pass unix:/home/sammy/myproject/myproject.sock;
}
}

پس از اتمام فايل را ذخيره كنيد و ببنديد.
براي فعال كردن پيكربندي بلوك سرور مجازي Nginx كه اخيراً ايجاد كرده ايد ، فايل را به ديركتوري sites-enabled پيوند دهيد:
⦁ $ sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled

با قرارگيري فايل در آن ديركتوري ، مي توانيم با تايپ كردن دستور زير خطاهاي نحوي را آزمايش كنيم:
⦁ $ sudo nginx -t

اگر بدون نشان دادن مشكلي بازگشت ، فرايند Nginx را دوباره شروع كنيد تا پيكربندي جديد را بخوانيد:
⦁ $ sudo systemctl restart nginx

در آخر ، اجازه دهيد دوباره فايروال را تنظيم كنيم. ديگر نيازي به دسترسي از طريق پورت 5000 نداريم ، بنابراين مي توانيم اين قانون را حذف كنيم. سپس مي توانيم به رسرور مجازي Nginx دسترسي داشته باشيم:
⦁ $ sudo ufw delete allow 5000

⦁ $ sudo ufw allow ‘Nginx Full’

اكنون بايد بتوانيد در مرورگر وب خود به نام دامنه سرور مجازي خود برويد:
http: // your_domain
بايد خروجي برنامه خود را مشاهده كنيد:

اگر با خطايي مواجه شديد ، موارد زير را بررسي كنيد:
⦁ sudo less /var/log/nginx/error.log ورودهاي مربوط به خطاي Nginx را بررسي مي كند.
⦁ sudo less /var/log/nginx/access.log ورودهاي مربوط به دسترسي Nginx را بررسي مي كند.
⦁ sudo journalctl -u nginx ورود هاي مربوط به فرآيند Nginx را بررسي مي كند.
⦁ sudo journalctl -u myproject ورود هاي UWSGI برنامه Flask شما را بررسي مي كند.
مرحله 7 – امنيت برنامه
براي اطمينان از ايمن ماندن ترافيك به سرور مجازي شما ، اجازه دهيد يك گواهي SSL براي دامنه شما دريافت كنيم. روش هاي مختلفي براي اين كار وجود دارد ، از جمله دريافت گواهينامه رايگان از Let’s Encrypt ، توليد يك گواهي خود امضا شده يا خريد از ارائه دهنده ديگر و پيكربندي Nginx براي استفاده از آن با دنبال كردن مراحل 2 تا 6 نحوه ايجاد يك گواهي SSL خود امضا شده براي Nginx در اوبونتو 18.04. به خاطر صلاحديد ، گزينه ي اول را انتخاب ميكنيم.
ابتدا مخزن Certbot Ubuntu را اضافه كنيد:
⦁ $ sudo add-apt-repository ppa:certbot/certbot

براي قبول بايد ENTER را فشار دهيد.
در مرحله بعدي ، بسته Nginx Certbot را با apt نصب كنيد:
⦁ $ sudo apt install python-certbot-nginx

Certbot روشهاي مختلفي براي به دست آوردن گواهينامه هاي SSL از طريق افزونه ها ارائه مي دهد. افزونه Nginx از پيكربندي مجدد Nginx و لود مجدد در صورت لزوم ، مراقبت خواهد كرد. براي استفاده از اين افزونه ، دستور زير را تايپ كنيد:
⦁ $ sudo certbot –nginx -d your_domain -d www.your_domain

اين دستور certbot  را با افزونه –nginx با استفاده از -d اجرا ميكند تا نام هايي كه مي خواهيم گواهي براي آنها اعتبار داشته باشد ، مشخص شوند.
اگر اولين بار است كه certbot  را اجرا ميكنيد ، از شما خواسته مي شود كه آدرس ايميل را وارد كنيد و با شرايط سرويس موافقت كنيد. بعد از انجام اين كار ، certbot با سرور مجازي Let’s Encrypt ارتباط برقرار مي كند ، سپس براي تأييد اينكه دامنه مورد نظر خود را كنترل مي كنيد ، يك چالش را اجرا كنيد.
اگر موفقيت آميز باشد ، certbot از شما مي پرسد كه مي خواهيد تنظيمات HTTPS خود را چگونه پيكربندي كنيد.
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
——————————————————————————-
1: No redirect – Make no further changes to the webserver configuration.
2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):

انتخاب خود را مشخص كنيد و سپس ENTER بزنيد. پيكربندي به روز خواهد شد ، و Nginx مجدد لود مي شود تا تنظيمات جديد را انتخاب كند. certbot با پيغامي همراه خواهد بود كه به شما مي گويد روند موفقيت آميز بوده و گواهي نامه هاي شما در كجا ذخيره شده است:
Output
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2018-07-23. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the “certonly” option. To non-interactively renew *all* of
your certificates, run “certbot renew”
– Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

اگر دستورالعمل نصب Nginx را در پيش شرط ها دنبال كرديد ، ديگر نيازي به اجازه پروفايل HTTP نخواهيد داشت:
⦁ $ sudo ufw delete allow ‘Nginx HTTP’

براي تأييد پيكربندي ، اجازه دهيد يكبار ديگر با استفاده از https: // به دامنه خود برويم
https: // your_domain
بايد يك بار ديگر خروجي برنامه خود را همراه با نشانگر امنيتي مرورگر خود مشاهده كنيد ، كه بايد نشانگر امنيت سايت باشد.
نتيجه
در اين راهنما ، يك برنامه ساده Flask را در يك محيط مجازي Python ايجاد و ايمن كرده ايد. يك نقطه ورود WSGI ايجاد كرديد تا هر سرور مجازي برنامه WSGI قادر به استفاده از آن باشد و سپس سرور مجازي برنامه uWSGI را براي ارائه اين عملكرد پيكربندي نموديد. پس از آن ، يك فايل خدمات سيستمي ايجاد كرديد تا سرور مجازي برنامه به صورت خودكار راه اندازي شود. همچنين يك بلوك سرور مجازي Nginx ايجاد كرديد كه ترافيك كلاينت وب را به سرور مجازي برنامه منتقل مي كند ، درخواست هاي خارجي را منتقل مي كند و با Let’s Encrypt ، سرور مجازي شما را ايمن نمايد.
Flask يك چارچوب بسيار ساده اما بسيار انعطاف پذير به معناي ارائه برنامه ها با قابليت هاي زياد بدون محدوديت در ساختار و طراحي است. مي توانيد از خدمات پشته عمومي كه در اين راهنما تشريح شده است استفاده كنيد تا بتوانيد كاربردهاي Flask را كه طراحي كرده ايد ارائه دهيد.

 

از اين لينك ها زير مي توانيد آمورش هاي بيشتري براي لينوكس پيدا كنيد :

چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهيد

نحوه ايجاد نماها (Views) براي توسعه وب Django

نصب Mount NFS در اوبونتو 20.04

نحوه توسعه برنامه ها در Kubernetes با Okteto

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

نحوه تنظيم Jupyter Notebook با پايتون در Ubuntu 20.04

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

مقدمه اي بر مديريت پيكربندي با Ansible

نحوه نصب R روي اوبونتو 20.04

ارائه برنامه هاي Flask با uWSGI و Nginx در اوبونتو 18.04

نصب و پيكربندي Postfix در اوبونتو 20.04

 

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان – 

 

برچسب‌ها:FlaskNginxPythonuWSGI

نصب و پيكربندي Postfix در اوبونتو 20.04

۰ بازديد

Postfix يك عامل انتقال ايميل (MTA) است ، كه براي هدايت و دريافت ايميل در سيستم لينوكس استفاده مي شود. پيش بيني ميشود حدود 25 درصد سرور مجازي هاي ايميل عمومي در اينترنت Postfix را اجرا ميكنند.
در اين راهنما ، نحوه نصب و پيكربندي Postfix را در سرور مجازي Ubuntu 20.04 ياد خواهيد گرفت. سپس با نصب s-nail ، يك نماينده كاربر ايميل (MUA) ، كه به كلاينت ايميل نيز شناخته ميشود، آزمايش مي كنيد كه آيا Postfix قادر است به درستي ايميل را مسيريابي كند.
توجه داشته باشيد كه هدف از اين آموزش اين است كه به شما كمك كند تا فقط با برخي از قابليت هاي معمول ايميل، سريعا Postfix را راه اندازي و اجرا كنيد. در پايان اين راهنما يك سرور مجازي ايميل تمام عيار نداريد ، اما برخي از مؤلفه هاي اساسي چنين ستاپي را براي كمك به شما در شروع كار خواهيد داشت.
پيش نيازها
براي پيروي از اين راهنما ، موارد زير را لازم داريد:
• سرور مجازي داراي Ubuntu 20.04 كه به عنوان سرور مجازي ايميل Postfix شما فعاليت مي كند. اين سرور مجازي بايد داراي يك كاربر غير ريشه با امتيازات sudo و فايروال تنظيم شده با UFW باشد. براي تنظيم اين گزينه مي توانيد راهنماي ستاپ اوليه سرور مجازي Ubuntu 20.04 را دنبال كنيد.
• يك نام دامنه كاملاً واجد شرايط كه به سرور مجازي Ubuntu 20.04 شما اشاره كند. توجه داشته باشيد كه اگر قصد دسترسي به ايميل از يك مكان خارجي را داريد ، بايد مطمئن شويد كه يك ركورد MX داريد كه به سرور مجازي ايميل شما نيز اشاره كند.
توجه داشته باشيد كه اين آموزش با اين فرض پيش ميرود كه شما هاستي را پيكربندي مي كنيد كه داراي FQDN mail.example.com ميباشد. در صورت لزوم ، حتماً example.com يا mail.example.com را تغيير دهيد تا FQDN شما را منعكس كند.
مرحله 1 – نصب Postfix
Postfix در مخازن پيش فرض اوبونتو گنجانده شده است ، بنابراين مي توانيد آن را با APT نصب كنيد.
براي شروع ، حافظه نهان بسته محلي apt خود را به روز كنيد:
$ sudo apt update

سپس بسته ي postfix را با دستور زير نصب كنيد. توجه داشته باشيد كه در اينجا ما متغير محيطي DEBIAN_PRIORITY=low را در اين دستور نصب وارد ميكنيم. اين امر باعث مي شود فرآيند نصب از شما بخواهد برخي گزينه هاي اضافي را پيكربندي كنيد:
$ sudo DEBIAN_PRIORITY=low apt install postfix

اين فرآيند نصب يك سري اعلان هاي تعاملي را باز مي كند. براي اهداف اين آموزش ، از اطلاعات زير براي پر كردن فرم هاي خود استفاده كنيد:
• نوع كلي پيكربندي ايميل؟براي اين، Internet Site را انتخاب كنيد چرا كه با تيازهاي فراساختاري مطابقت دارد.
• نام ايميل سيستم: اين دامنه اصلي است كه براي ساختن يك آدرس ايميل معتبر استفاده مي شود هنگامي كه فقط بخش حساب آدرس داده مي شود. به عنوان مثال ، نام ميزبان سرور مجازي شما mail.example.com است. به احتمال زياد بايد نام ايميل سيستم را به صورت example.com قرار دهيد تا با توجه به نام كاربري user1 ، Postfix از آدرس user1@example.com استفاده كند.
• گيرنده ايميل Root و postmaster: اين حساب لينوكس است كه از طريق ايميل به root @ و postmaster @ ارسال مي شود. براي اين كار از حساب اصلي خود استفاده كنيد. در اين مورد مثال ، Sammy .
• ساير مقاصد براي پذيرش ايميل: مقصد پستي را كه اين نمونه Postfix مي پذيرد تعيين مي كند. اگر لازم است دامنه ديگري را كه اين سرور مجازي مسئول دريافت آن است اضافه كنيد ، آنها را در اينجا اضافه كنيد. در غير اين صورت ، پيش فرض كافي خواهد بود.
• اجبار به روزرساني هاي همزمان در صف ايميل ؟: از آنجا كه به احتمال زياد از يك سيستم فايل ژورنال دار استفاده مي كنيد ، no را در اينجا بپذيريد.
• شبكه هاي محلي: ليستي از شبكه هايي است كه سرور مجازي ايميل شما براي تقويت پيام هاي آن ها پيكربندي شده است. پيش فرض براي بيشتر سناريوها كار خواهد كرد. اگر مي خواهيد آن را تغيير دهيد ، مطمئن شويد كه از نظر دامنه شبكه بسيار محدود باشد.
• محدوديت اندازه صندوق پستي: اين مي تواند براي محدود كردن اندازه پيام ها استفاده شود. تنظيم آن بر روي 0 محدوديت اندازه را غيرفعال مي كند.
• كاراكتر پسوند آدرس محلي: كاراكتري است كه مي تواند براي جدا كردن قسمت معمول آدرس از يك پسوند (براي ايجاد نام هاي مستعار پويا استفاده شود) استفاده مي شود. به طور پيش فرض ، + براي اين آموزش كار خواهد كرد.
• پروتكل هاي اينترنت براي استفاده: انتخاب كنيد آيا نسخه IP را كه Postfix از آن پشتيباني مي كند محدود كنيد يا خير. براي اهداف اين آموزش ، all را انتخاب كنيد.
براي بيان صريح تر ، اين تنظيمات مورد استفاده در اين راهنماست:
نوع كلي پيكربندي ايميل: سايت اينترنتي
نام ايميل سيستم: example.com (نه mail.example.com)
گيرنده ايميل Root و postmaster: نام كاربري حساب لينوكس اوليه (در اين مثال ها sammy )
ساير مقاصد براي پذيرش ايميل: $myhostname, example.com, mail.example.com, localhost.example.com,localhost
اجبار به روزرساني هاي همزمان در صف ايميل : خير
شبكه هاي محلي: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
محدوديت اندازه صندوق پستي: 0
كاراكتر پسوند آدرس محلي: +
پروتكل هاي اينترنت براي استفاده:al

توجه: اگر نياز به بازگشت براي تغيير اين تنظيمات داشتيد ، مي توانيد با تايپ كردن دستور زير اين كار را انجام دهيد:
$ sudo dpkg-reconfigure postfix

اعلان ها با پاسخ هاي قبلي شما ، از قبل پر مي شوند.
پس از اتمام مراحل نصب ، مي توانيد چند نسخه به روزرساني پيكربندي Postfix خود را انجام دهيد.
مرحله 2 – تغيير پيكربندي Postfix
اكنون مي توانيد برخي تنظيمات را انجام دهيد كه روند نصب بسته از شما نخواسته بود. بسياري از تنظيمات پيكربندي Postfix در فايل /etc/postfix/main.cf تعريف شده اند. به جاي ويرايش مستقيم اين فايل ، مي توانيد از دستور postconf Postfix براي پرس و جو يا تعيين تنظيمات پيكربندي استفاده كنيد.
براي شروع ، لوكيشن را براي صندوق پستي كاربر غير ريشه اوبونتو تنظيم كنيد. در اين راهنما ، ما از قالب Maildir استفاده خواهيم كرد ، كه پيام ها را به فايل هاي جداگانه كه بر اساس عملكرد كاربر بين دايركتوري ها منتقل مي شوند ، جدا مي كند. گزينه ديگري كه در اين راهنما پوشش داده نشده است ، فرمت mbox است كه تمام پيام ها را در يك فايل واحد ذخيره مي كند.
متغير home_mailbox را روي Maildir/ تنظيم كنيد. سپس ، يك ساختار دايركتوري تحت اين نام در ديركتوري هوم كاربر خود ايجاد خواهيد كرد. home_mailbox را با تايپ كردن دستور زير پيكربندي كنيد:
$ sudo postconf -e ‘home_mailbox= Maildir/’

در مرحله بعدي ، مكان جدول virtual_alias_maps را تنظيم كنيد ، كه نقشه هاي ايميل دلخواه را به حساب هاي سيستم لينوكس نگاشت مي كند. دستور زير را اجرا كنيد ، كه نقشه جدول را در يك فايل پايگاه داده هش به نام / etc / postfix / virtual نگاشت مي كند:
$ sudo postconf -e ‘virtual_alias_maps= hash:/etc/postfix/virtual’

اكنون كه مكان فايل نقشه هاي مجازي را در فايل main.cfخود تعريف كرده ايد ، مي توانيد خود اين فايل را ايجاد كرده و نگاشت حساب هاي ايميل را به حساب كاربري در سيستم لينوكس خود شروع كنيد. فايل را با ويرايشگر متن مورد نظر خود ايجاد كنيد. در اين مثال ، ما از nano استفاده خواهيم كرد:
$ sudo nano /etc/postfix/virtual

آدرسهايي را كه مايليد ايميل را براي آن بپذيريد ، ليست كنيد و به دنبال آن فضاي سفيد و كاربر لينوكس را كه دوست داريد ايميل را به ان تحويل دهيد.
به عنوان مثال ، اگر مي خواهيد ايميل را در آدرس contact@example.com و admin@example.com بپذيريد و دوست داريد آن ايميل ها را به كاربر sammy Linux تحويل دهيد ، مي توانيد فايل خود را مانند اين تنظيم كنيد:
/etc/postfix/virtual
contact@example.com sammy
admin@example.com sammy

پس از نگاشت همه آدرس ها به حساب هاي سرور مجازي مناسب ، فايل را ذخيره كنيد و ببنديد. اگر از nano استفاده كرده ايد ، اين كار را با فشار دادن CTRL + X ، Y ، سپس ENTER انجام دهيد.
نگاشت را با تايپ اين دستور اعمال كنيد:
$ sudo postmap /etc/postfix/virtual
فرايند Postfix را مجدداً راه اندازي كنيد تا مطمئن شويد كه تمام تغييرات شما اعمال شده است:
$ sudo systemctl restart postfix

با فرض اينكه از راهنماي ستاپ اوليه پيروي كرده ايد ، فايروال را با UFW پيكربندي نموده ايد. اين فايروال به طور پيش فرض اتصالات خارجي را به سرويس هاي روي سرور مجازي شما مسدود مي كند مگر اينكه اين اتصالات به صراحت مجاز باشند ، بنابراين بايد يك قانون فايروال اضافه كنيد تا استثنائي براي Postfix داشته باشيد.
مي توانيد با تايپ دستور زير، اجازه اتصالات به سرويس را بدهيد:
$ sudo ufw allow Postfix

با اين كار ، Postfix پيكربندي شده و آماده پذيرش اتصالات خارجي است. با اين حال ، شما هنوز آمادگي آزمايش آن را با يك سرويس گيرنده ايميل نداريد. قبل از اينكه بتوانيد كلاينت را نصب كنيد و از آن براي تعامل با ايميل ارسال شده به سرور مجازي خود استفاده كنيد ، لازم است چند تغيير در تنظيمات سرور مجازي اوبونتو انجام دهيد.
مرحله 3 – نصب كلاينت پست الكترونيكي و اوليه سازي ساختار Maildir
به منظور تعامل با ايميل تحويل داده شده ، اين مرحله شما را با روند نصب بسته s-s-nail آشنا مي كند. يك متغير پر از ويژگي از كلاينت xmail BSD است كه مي تواند فرمت Maildir را به درستي اداره كند.
اما قبل از نصب كلاينت ، منطقي است كه مطمئن شويد متغير محيط MAIL شما به درستي تنظيم شده است. s-nailبه دنبال اين متغير است تا بفهمد كجا مي تواند ايميل را براي كاربر شما پيدا كند.
براي اطمينان از تنظيم متغير MAIL بدون توجه به نحوه دسترسي به حساب كاربري خود – خواه از طريق ssh، su، su – يا sudo، به عنوان مثال – بايد متغير را در فايل /etc/bash.bashrc تنظيم كرده و اضافه كنيد. آن را به فايلي در /etc/profile.d اضافه كنيد تا مطمئن شويد كه به طور پيش فرض براي همه كاربران تنظيم شده است.
براي افزودن متغير به اين فايل ها ، دستور زير را تايپ كنيد:
$ echo ‘export MAIL=~/Maildir’ | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

براي خواندن متغير در بخش فعلي ، فايل /etc/profile.d/mail.sh را وارد كنيد:
$ source /etc/profile.d/mail.sh

با كامل شدن آن ، كلاينت ايميل s-nail را با APT نصب كنيد:
$ sudo apt install s-nail

قبل از اجراي كلاينت ، چند تنظيمات وجود دارد كه بايد انجام دهيد. فايل /etc/s-nail.rc را در ويرايشگر خود باز كنيد:
$ sudo nano /etc/s-nail.rc

در انتهاي فايل گزينه هاي زير را اضافه كنيد:
/etc/s-nail.rc
. . .
set emptystart
set folder=Maildir
set record=+sent

در اينجا عملكرد اين خطوط آورده شده است:
set emptystart به كلاينت اجازه مي دهد حتي با يك صندوق ورودي خالي باز شود
set folder=Maildir ديركت.ري Maildir را روي متغير folder داخلي تنظيم مي كند
set record=+sent يك فايل mbox ارسال شده را براي ذخيره ايميل ارسال شده در هر ديركتوري به عنوان متغير folder  ايجاد مي كند ، در اين حالت Maildir
پس از اتمام فايل را ذخيره كنيد و ببنديد. اكنون آماده هستيد تا ساختار Maildir سيستم را تنظيم كنيد.
يك راه سريع براي ايجاد ساختار Maildir در ديركتوري هوم شما اين است كه به خودتان يك ايميل با دستور s-nail ارسال كنيد. از آنجا كه فايل ارسال شده فقط پس از ايجاد Maildir در دسترس خواهد بود ، شما بايد نوشتن آن را براي اين ايميل اوليه غيرفعال كنيد. اين كار را با عبور از گزينه -Snorecord انجام دهيد.
با اتصال يك رشته به دستور s-nail ، ايميل را ارسال كنيد. اين دستور را تنظيم كنيد تا كاربر Linux خود را به عنوان گيرنده علامت گذاري كند:
$ echo ‘init’ | s-nail -s ‘init’ -Snorecord sammy

توجه: ممكن است پاسخ زير را دريافت كنيد:
Output
Can’t canonicalize “/home/sammy/Maildir”
طبيعي است و ممكن است هنگام ارسال اين پيام اول ظاهر شود.

با جستجوي ديركتوري ~ / Maildir خود مي توانيد مطمئن شويد كه ديركتوري ايجاد شده است:
$ ls -R ~/Maildir

خواهيد ديد كه ساختار دايركتوري ايجاد شده است و يك فايل پيام جديد در ديركتوري ~ / Maildir / new موجود است:
Output
/home/sammy/Maildir/:
cur new tmp

/home/sammy/Maildir/cur:

/home/sammy/Maildir/new:
1463177269.Vfd01I40e4dM691221.mail.example.com

/home/sammy/Maildir/tmp:

اكنون كه ساختار دايركتوري ايجاد شده است ، مي توانيد با مشاهده پيام init كه ارسال كرده ايد و ارسال يك پيام به آدرس ايميل خراجي، كلاينت s-nail s را امتحان كنيد.
مرحله 5 – آزمايش كلاينت
براي باز كردن كلاينت ، دستور s-nail را اجرا كنيد:
$ s-nail

در كنسول خود ، يك صندوق ورودي ابتدايي با پيام init  خواهيد ديد:
Output
s-nail version v14.9.15. Type `?’ for help
“/home/sammy/Maildir”: 1 message 1 new
>N 1 sammy@example.com 2020-05-19 15:40 14/392 init
براي نمايش پيام، ENTER را فشار دهيد:
Output
[– Message 1 — 14 lines, 369 bytes –]:
From sammy@example.com Tue May 19 15:40:48 2020
Date: Tue, 19 May 2020 15:40:48 +0000
To: sammy@example.com
Subject: init
Message-Id: <20160513220749.A278F228D9@mail.example.com>
From: sammy@example.com

init

مي توانيد با تايپ h و سپس ENTER به ليست پيام ها برگرديد :
? h

Output
>R 1 sammy@example.com 2020-05-19 15:40 14/392 init

توجه كنيد كه پيام اكنون حالت R دارد ، نشان مي دهد كه خوانده شده است.
از آنجا كه اين پيام چندان مفيد نيست ، مي توانيد با فشار دادن d آن را حذف كرده و سپس ENTER بزنيد.
? d

براي بازگشت به ترمينال ، q و سپس ENTER را بزنيد:
? q

به عنوان يك آزمايش نهايي ، بررسي كنيد كه آيا s-nail قادر به ارسال صحيح پيام هاي ايميل است يا خير. براي اين كار مي توانيد همانند پيام init  كه در مرحله قبل براي خود ارسال كرديد ، محتويات يك فايل متني را درون فرايند s-nail قرار دهيد.
با نوشتن پيام آزمايشي در ويرايشگر متن شروع كنيد:
$ nano ~/test_message

در داخل ، متني را كه مي خواهيد ارسال كنيد ، وارد كنيد:
~/test_message
Hello,

This is a test. Please confirm receipt!

فايل را پس از نوشتن پيام خود ذخيره كنيد و ببنديد.
سپس از دستور cat براي ارسال پيام به روند s-nail استفاده كنيد. مي توانيد با مثال زير اين كار را انجام دهيد:
-s: خط موضوع پيام ايميل را مشخص مي كند
-r: تغيير اختياري در قسمت “from” ايميل. به طور پيش فرض ، كاربر لينوكس كه با آن وارد شده ايد براي پر كردن اين فيلد استفاده مي شود. گزينه -r به شما امكان مي دهد اين مسئله را با يك آدرس معتبر ، مانند يكي از مواردي كه در فايل / etc / postfix / virtual تعريف كرده ايد ، پر كنيد. براي نشان دادن ، دستور زير از contact@example.com استفاده مي كند
همچنين ، حتما user@email.com را به يك آدرس ايميل معتبر كه به آن دسترسي داريد تغيير دهيد:
$ cat ~/test_message | s-nail -s ‘Test email subject line’ -r contact@example.com user@email.com

سپس ، براي آدرس ايميلي كه پيام را براي آن ارسال كرده ايد ، به صندوق ورودي برويد. پيام خود را تقريباً فوراً خواهيد ديد.
توجه: اگر پيام در صندوق ورودي شما نيست ، ممكن است به پوشه Spam تحويل داده شده باشد.
مي توانيد پيام هاي ارسالي خود را در كلاينت s-nail خود مشاهده كنيد. دوباره كلاينت تعاملي را شروع كنيد:
$ s-nail

از كلاينت ايميل ، پيام هاي ارسالي خود را با تايپ كردن اين دستور مشاهده كنيد:
? file +sent

خروجي مانند اين را خواهيد ديد:
Output
+[/home/sammy/Maildir/]sent: 1 message 1 new
▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject line

مي توانيد ايميل ارسال شده را با استفاده از همان دستوراتي كه براي ايميل هاي ورودي استفاده مي كنيد مديريت كنيد.
نتيجه
اكنون Postfix را در سرور مجازي Ubuntu 20.04 خود تنظيم كرده ايد. مديريت سرور مجازي هاي ايميل مي تواند يك كار سخت براي مديران جديد سيستم باشد ، اما با اين پيكربندي ، بايد عملكرد ايميل MTA كافي را براي شروع كار خود داشته باشيد.

 

از اين لينك ها زير مي توانيد آمورش هاي بيشتري براي لينوكس پيدا كنيد :

چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهيد

نحوه ايجاد نماها (Views) براي توسعه وب Django

نصب Mount NFS در اوبونتو 20.04

نحوه توسعه برنامه ها در Kubernetes با Okteto

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

نحوه تنظيم Jupyter Notebook با پايتون در Ubuntu 20.04

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

مقدمه اي بر مديريت پيكربندي با Ansible

نحوه نصب R روي اوبونتو 20.04

ارائه برنامه هاي Flask با uWSGI و Nginx در اوبونتو 18.04

نصب و پيكربندي Postfix در اوبونتو 20.04

 

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان – 

 

برچسب‌ها:FQDNPostfix

ارائه برنامه هاي Flask با Gunicorn و Nginx اوبونتو 20

۰ بازديد

در اين راهنما يك برنامه Python را با استفاده از ميكروفريم Flask در Ubuntu 20.04 ايجاد خواهيد كرد. بخش عمده اين مقاله در مورد نحوه تنظيم سرور برنامه Gunicorn و نحوه راه اندازي و پيكربندي برنامه Nginx براي عمل به عنوان يك پروكسي معكوس front-end خواهد بود.
پيش نيازها
قبل از شروع اين راهنما ، بايد اين موارد را داشته باشيد:
⦁ سروري با اوبونتو 20.04 و يك كاربر غير ريشه با امتيازات sudo. براي راهنمايي ، مقاله ستاپ اوليه سرور ما را دنبال كنيد.
⦁ Nginx نصب شده داشته باشيد، مراحل 1 و 2 نحوه نصب Nginx در اوبونتو 20.04 را دنبال كنيد.
⦁ نام دامنه پيكربندي شده براي اشاره به سرور شما. مي توانيد در Namecheap خريداري كنيد يا يكي از آنها را به صورت رايگان در Freenom دريافت كنيد. حتماً ركورهاي DNS زير را ايجاد كنيد:
o يك ركورد A با your_domain كه به آدرس IP عمومي سرور شما اشاره مي كند.
o يك ركورد A با www.your_domain كه به آدرس IP عمومي سرور شما اشاره كند.
⦁ آشنايي با مشخصات WSGI ، كه سرور برنامه Gunicorn براي ارتباط با برنامه Flask از آن استفاده خواهد كرد . اين بحث به تفصيل به تعاريف و مفاهيم مي پردازد.
مرحله 1 – نصب مولفه ها از مخازن اوبونتو
اولين قدم ما نصب تمام بخش هاي مورد نياز از مخازن اوبونتو خواهد بود. اين موارد شامل pip ، مدير بسته پايتون براي مديريت مولفه هاي پايتون خواهد بود. همچنين فايل هاي توسعه پايتون لازم براي ساخت برخي مولفه هاي Gunicorn دريافت خواهيم كرد.
ابتدا ، اجازه دهيد ايندكس بسته محلي را به روز كنيم و بسته هايي را نصب كنيم كه به ما امكان مي دهد محيط Python خود را بسازيم. اين موارد شامل python3-pip ، همراه با چند بسته ديگر و ابزار توسعه لازم براي يك محيط برنامه نويسي قوي است:
⦁ $ sudo apt update

⦁ $ sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools

با قرارگيري اين بسته ها در جاي خود، به سمت ايجاد يك فضاي مجازي براي پروژه خود برويم.
مرحله 2 – ايجاد يك محيط مجازي پايتون
در مرحله بعدي ، يك محيط مجازي تنظيم خواهيم كرد تا بتوانيم برنامه Flask خود را از ساير فايل هاي Python روي سيستم جدا كنيم.
با نصب بسته python3-venv شروع كنيد كه ماژول venv را نصب خواهد كرد:
⦁ $ sudo apt install python3-venv

در مرحله بعد ، بياييد يك دايركتوري والد براي پروژه Flask تهيه كنيم. بعد از ايجاد آن وارد پوشه شويد:
⦁ $ mkdir ~/myproject

⦁ $ cd ~/myproject

يك محيط مجازي ايجاد كنيد تا نيازمندي هاي پايتون پروژه Flask خود را با تايپ كردن دستور زير ذخيره كنيد:
⦁ $ python3 -m venv myprojectenv

با اين كار يك كپي محلي از Python و pip در ديركتوري به نام myprojectenv درون ديركتوري پروژه شما كپي ميشود.
قبل از نصب برنامه ها در محيط مجازي ، بايد آن را فعال كنيد. اين كار را با تايپ كردن دستور زير انجام دهيد:
⦁ $ source myprojectenv/bin/activate

اعلان شما تغيير مي كند و نشان مي دهد كه اكنون در محيط مجازي كار مي كنيد. چيزي شبيه به (myprojectenv)user@host:~/myproject$ به نظر مي رسد .
مرحله 3 – تنظيم يك برنامه Flask
اكنون كه در محيط مجازي خود قرار داريد ، مي توانيد Flask و Gunicorn را نصب كرده و طراحي برنامه خود را شروع كنيد.
ابتدا بگذاريد wheel  را با نمونه محلي pip نصب كنيم تا اطمينان حاصل شود كه بسته هاي ما حتي در صورت از دست دادن بايگاني wheel ، نصب مي شوند:
⦁ $ pip install wheel

توجه داشته باشيد
صرفنظر از اينكه از كدام نسخه Python استفاده مي كنيد ، هنگامي كه محيط مجازي فعال مي شود ، بايد از دستور pip استفاده كنيد (نه pip3)
سپس ، اجازه دهيد Flask و Gunicorn را نصب كنيم:
⦁ (myprojectenv) $ pip install gunicorn flask

ايجاد يك برنامه نمونه
اكنون كه Flask را در دسترس داريد ، مي توانيد يك برنامه ساده ايجاد كنيد. Flask يك ميكروفريم ورك است. و بسياري از ابزارهايي كه ممكن است چهارچوبهاي كامل تري داشته باشند را شامل نميشود، و عمدتاً به عنوان ماژول وجود دارد كه مي توانيد براي شروع برنامه هاي وب از كمك بگيريد تا بتوانيد به پروژه هاي خود وارد شويد.
در حالي كه ممكن است برنامه شما پيچيده تر باشد ، ما برنامه Flask خود را در يك فايل واحد با نام myproject.py ايجاد خواهيم كرد:
⦁ (myprojectenv) $ nano ~/myproject/myproject.py

كد برنامه در اين فايل قرار دارد. Flask را وارد مي كند و يك آبجكت Flask را معرفي مي كند. شما مي توانيد از اين ويژگي براي تعريف عملكردهايي استفاده كنيد كه بايد هنگام درخواست يك مسير خاص انجام شود:
~/myproject/myproject.py
from flask import Flask
app = Flask(__name__)

@app.route(“/”)
def hello():
return “

Hello There!

if __name__ == “__main__”:
app.run(host=’0.0.0.0′)

اين كد اساساً مشخص مي كند كه هنگام دستيابي به حوزه root ، چه محتوايي ارائه شود. پس از اتمام فايل را ذخيره كنيد و ببنديد.
اگر راهنماي اوليه تنظيم سرور را دنبال كرده ايد ، بايد فايروال UFW را فعال كرده باشيد. براي تست برنامه ، بايد دسترسي به پورت 5000 را داشته باشيد:
⦁ (myprojectenv) $ sudo ufw allow 5000

اكنون مي توانيد برنامه Flask خود را با تايپ كردن دستور زير تست كنيد:
⦁ (myprojectenv) $ python myproject.py

خروجي مانند اين را مشاهده خواهيد كرد ، كه شامل يك هشدار مفيد است كه به شما يادآوري مي كند از اين ستاپ سرور در توليد استفاده نكنيد:
Output
* Serving Flask app “myproject” (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

از آدرس IP سرور و به دنبال آن: 5000 در مرورگر وب خود بازديد كنيد:
http://your_server_ip:5000
بايد چيزي شبيه به اين را ببينيد:

پس از اتمام ، CTRL-C را در پنجره ترمينال خود بزنيد تا سرور توسعه Flask متوقف شود.
ايجاد نقطه ورود WSGI
در مرحله بعدي ، فايلي را ايجاد ميكنيم كه به عنوان نقطه ورود برنامه ما باشد. اين به سرور Gunicorn مي گويد كه چگونه مي توان با آن تعامل برقرار كرد.
بياييد فايل wsgi.py را فراخواني كنيم:
⦁ (myprojectenv) $ nano ~/myproject/wsgi.py

در اين فايل ، بياييد نمونه Flask را از برنامه خود وارد كنيم و سپس آن را اجرا كنيم:
~/myproject/wsgi.py
from myproject import app

if __name__ == “__main__”:
app.run()

پس از اتمام فايل را ذخيره كنيد و ببنديد.
مرحله 4 – پيكربندي Gunicorn
برنامه شما اكنون با يك نقطه ورود مشخص نوشته شده است. اكنون مي توانيم به سراغ پيكربندي Gunicorn برويم.
قبل از پيش روي، بايد بررسي كنيم كه Gunicorn ميتواند به درستي برنامه را ارائه كند.
ما مي توانيم اين كار را به سادگي با وارد كردن نام نقطه ورودي خود انجام دهيم. اين نام با نام ماژول ساخته شده است (منهاي پسوند .py) به علاوه نام قابل فراخواني درون برنامه. در نمونه ما ، wsgi:app است.
رابط و پورت را نيز مشخص مي كنيم تا برنامه در يك رابط در دسترس عمومي شروع شود:
⦁ (myprojectenv) $ cd ~/myproject

⦁ (myprojectenv) $ gunicorn –bind 0.0.0.0:5000 wsgi:app


بايد خروجي زير را مشاهده كنيد
Output
[2020-05-20 14:13:00 +0000] [46419] [INFO] Starting gunicorn 20.0.4
[2020-05-20 14:13:00 +0000] [46419] [INFO] Listening at: http://0.0.0.0:5000 (46419)
[2020-05-20 14:13:00 +0000] [46419] [INFO] Using worker: sync
[2020-05-20 14:13:00 +0000] [46421] [INFO] Booting worker with pid: 46421

آدرس IP سرور خود را به همراه 5000 در ادامه اش بازديد كنيد
http: // your_server_ip: 5000
بايد دوباره خروجي برنامه خود را مشاهده كنيد:

وقتي تأييد كرديد كه به درستي كار ميكند ، CTRL-C را در پنجره ترمينال خود فشار دهيد.
اكنون محيط مجازي خود را ايجاد كرده ايم ، بنابراين مي توانيم آن را غيرفعال كنيم:
⦁ (myprojectenv) $ deactivate

هر دستور پايتون اكنون دوباره از محيط پايتون سيستم استفاده خواهد كرد.
در مرحله بعد بياييد فايل واحد سرويس سيستمي را ايجاد كنيم. ايجاد فايل واحد سيستمي به سيستم init  اوبونتو اجازه خواهد داد كه به طور خودكار Gunicorn  را شروع كند و برنامه Flask  را در زمان بوت سرور ارائه نمايد.
براي شروع يك فايل واحد كه به .serviceختم ميشود در ديركتوري /etc/systemd/systemايجاد كنيد:
⦁ $ sudo nano /etc/systemd/system/myproject.service

در داخل ، با بخش [unit ] شروع خواهيم كرد كه براي تعيين متاديتا و متعلقات استفاده ميشود. بياييد توصيفي از سرويس را در اينجا قرار دهيم و به سيتم init بگوييم فقط پس از دستيابي به هدف شبكه شروع شود:
/etc/systemd/system/myproject.service
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

سپس ، اجازه دهيد بخش [Service] را باز كنيم. با اين كار كاربر و گروهي را كه مي خواهيم تحت روند كار قرار بگيرند مشخص مي كند. بياييد مالكيت اين فرآيند را به حساب كاربري معمول خود بدهيم زيرا اين فايل در اختيار همه فايل هاي مربوطه است. همچنين بياييد مالكيت گروه را به گروه www-data واگذار كنيم تا Nginx بتواند به راحتي با فرآيندهاي Gunicorn ارتباط برقرار كند. به ياد داشته باشيد كه نام كاربري خود را در اينجا جايگزين كنيد:
/etc/systemd/system/myproject.service
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=sammy
Group=www-data

در مرحله بعدي ، بگذاريد ديركتوري كار را مشخص كنيم و متغير محيطي PATH را تنظيم كنيم تا سيستم init بداند كه موارد اجرايي اين فرآيند در محيط مجازي ما قرار دارند. اجازه دهيد فرمان شروع سرويس را نيز مشخص كنيم. فرمان موارد زير را انجام ميدهد:
⦁ 3 فرآيند كارگر را شروع ميكند (اگرچه لازم است اين بخش را در صورت لزوم تنظيم كنيد)
⦁ يك فايل سوكت يونيكس myproject.sock ، در ديركتوري پروژه ما ايجاد كرده و به آن وصل ميشود. ما يك مقدار umask 007 تنظيم مي كنيم تا فايل سوكت ايجاد شود و دسترسي به مالك و گروه را ايجاد كند در حاليكه دسترسي ديگر را محدود مي كند .
⦁ نام فايل نقطه ورود WSGI را به همراه پايتون قابل فراخواني در آن فايل مشخص ميكند (wsgi: app)
Systemd مستلزم اين است كه ما مسير كاملي را به Gunicorn ، كه در محيط مجازي ما نصب شده است ، بدهيم.
به ياد داشته باشيد كه نام كاربري و مسير پروژه را با اطلاعات شخصي خود جايگزين كنيد:
/etc/systemd/system/myproject.service
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myproject
Environment=”PATH=/home/sammy/myproject/myprojectenv/bin”
ExecStart=/home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject

در آخر ، بياييد يك بخش [Install] اضافه كنيم. اگر سيستم را فعال كنيم كه در بوت شروع شود ، به systemd ميگويد كه به اين سرويس چه چيزي را لينك بدهد. نياز داريم اين سرويس در زمان اجراي سيستم معمولي چند كاربره شروع به كار كند:
/etc/systemd/system/myproject.service
[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myproject
Environment=”PATH=/home/sammy/myproject/myprojectenv/bin”
ExecStart=/home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject.sock -m 007 wsgi:app

[Install]
WantedBy=multi-user.target

با اين كار ، فايل سرويس سيستمي ما كامل است. اكنون آن را ذخيره كنيد و ببنديد.
اكنون مي توانيم سرويس Gunicorn را كه ايجاد كرديم شروع كنيم و آن را فعال كنيم تا در بوت شروع شود:
⦁ $ sudo systemctl start myproject

⦁ $ sudo systemctl enable myproject

بگذاريد وضعيت را بررسي كنيم:
⦁ $ sudo systemctl status myproject

بايد خروجي مانند اين را مشاهده كنيد:
Output
● myproject.service – Gunicorn instance to serve myproject
Loaded: loaded (/etc/systemd/system/myproject.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-05-20 14:15:18 UTC; 1s ago
Main PID: 46430 (gunicorn)
Tasks: 4 (limit: 2344)
Memory: 51.3M
CGroup: /system.slice/myproject.service
├─46430 /home/sammy/myproject/myprojectenv/bin/python3 /home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject.sock -m 007 wsgi:app
├─46449 /home/sammy/myproject/myprojectenv/bin/python3 /home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject.sock -m 007 wsgi:app
├─46450 /home/sammy/myproject/myprojectenv/bin/python3 /home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject.sock -m 007 wsgi:app
└─46451 /home/sammy/myproject/myprojectenv/bin/python3 /home/sammy/myproject/myprojectenv/bin/gunicorn –workers 3 –bind unix:myproject.sock -m 007 wsgi:app

در صورت مشاهده هر گونه خطا ، حتما آنها را قبل از ادامه آموزش برطرف كنيد.
مرحله 5 – پيكربندي Nginx به درخواستهاي پروكسي
سرور برنامه Gunicorn ما بايد اكنون به روز و در حال اجرا و منتظر درخواست هايي روي فايل سوكت در ديركتوري پروژه باشد. بياييد Nginx را پيكربندي كنيم تا درخواست هاي وب را با استفاده از پروتكل Gunicorn به آن سوكت منتقل كنيم.
با ايجاد يك فايل پيكربندي بلوك جديد سرور در ديركتوري sites-available Nginx شروع كنيد. بياييد اين پروژه را myproject بناميم تا با بقيه راهنما مطابقت داشته باشد:
⦁ $ sudo nano /etc/nginx/sites-available/myproject

يك بلوك سرور باز كنيد و به Nginx بگوييد كه به پورت پيش فرض 80 گوش كند. همچنين بياييد به آن اعلام كنيم كه از اين بلوك براي درخواست هاي نام دامنه سرور ما استفاده كند:
/etc/nginx/sites-available/myproject
server {
listen 80;
server_name your_domain www.your_domain;
}

سپس ، بياييد يك بلوك موقعيت مكاني اضافه كنيم كه مطابق با هر درخواست باشد. در اين بلوك ، فايل proxy_params را وارد خواهيم كرد كه پارامترهاي كلي پروكسي مورد نياز براي تنظيم را مشخص مي كند. سپس درخواستها را به سوكت تعريف شده با استفاده از بخشنامه proxy _pass ارسال خواهيم كرد:
/etc/nginx/sites-available/myproject
server {
listen 80;
server_name your_domain www.your_domain;

location / {
include proxy_params;
proxy_pass http://unix:/home/sammy/myproject/myproject.sock;
}
}

پس از اتمام فايل را ذخيره كنيد و ببنديد.
براي فعال كردن پيكربندي بلوك سرور Nginx كه اخيراً ايجاد كرده ايد ، فايل را به ديركتوري sites-enabled پيوند دهيد:
⦁ $ sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled

با قرارگيري فايل در آن ديركتوري ، مي توانيم با تايپ كردن دستور زير خطاهاي نحوي را آزمايش كنيم:
⦁ $ sudo nginx -t

اگر بدون نشان دادن مشكلي بازگشت ، فرايند Nginx را ريستارت كنيد تا پيكربندي جديد را بخواند:
⦁ $ sudo systemctl restart nginx

در آخر ، اجازه دهيد دوباره فايروال را تنظيم كنيم. ديگر نيازي به دسترسي از طريق پورت 5000 نداريم ، بنابراين مي توانيم اين قانون را حذف كنيم. سپس مي توانيم به سرور Nginx دسترسي داشته باشيم:
⦁ $ sudo ufw delete allow 5000

⦁ $ sudo ufw allow ‘Nginx Full’

اكنون بايد بتوانيد در مرورگر وب خود به نام دامنه سرور خود برويد:
http: // your_domain
بايد خروجي برنامه خود را مشاهده كنيد:

اگر با خطايي مواجه شديد ، موارد زير را بررسي كنيد:
⦁ sudo less /var/log/nginx/error.log ورودهاي مربوط به خطاي Nginx را بررسي مي كند.
⦁ sudo less /var/log/nginx/access.log ورودهاي مربوط به دسترسي Nginx را بررسي مي كند.
⦁ sudo journalctl -u nginx ورود هاي مربوط به فرآيند Nginx را بررسي مي كند.
⦁ sudo journalctl -u myproject ورود هاي GUNICORN برنامه Flask شما را بررسي مي كند.
مرحله 6 – امنيت بخشي به برنامه
براي اطمينان از ايمن ماندن ترافيك رو به سرور شما ، اجازه دهيد يك گواهي SSL براي دامنه تان دريافت كنيم. روش هاي مختلفي براي اين كار وجود دارد ، از جمله دريافت گواهينامه رايگان از Let’s Encrypt ، توليد يك گواهي خود امضا شده يا خريد از ارائه دهنده ديگر و پيكربندي Nginx براي استفاده از آن با دنبال كردن مراحل 2 تا 6 نحوه ايجاد يك گواهي SSL خود امضا شده براي Nginx در اوبونتو 20.04. بنابر صلاح ديد ، گزينه ي اول را انتخاب ميكنيم.
ابتدا بسته Certbot Nginx را نصب كنيد:
⦁ $ sudo apt install python3-certbot-nginx

Certbot روشهاي مختلفي براي به دست آوردن گواهينامه هاي SSL از طريق افزونه ها ارائه مي دهد. افزونه Nginx از پيكربندي مجدد Nginx و لود مجدد در صورت لزوم ، مراقبت خواهد كرد. براي استفاده از اين افزونه ، دستور زير را تايپ كنيد:
⦁ $ sudo certbot –nginx -d your_domain -d www.your_domain

اين دستور certbot  را با افزونه –nginx با استفاده از -d اجرا ميكند تا نام هايي كه مي خواهيم گواهي براي آنها اعتبار داشته باشد ، مشخص شوند.
اگر اولين بار است كه certbot  را اجرا ميكنيد ، از شما خواسته مي شود كه آدرس ايميل را وارد كنيد و با شرايط سرويس موافقت كنيد. بعد از انجام اين كار ، certbot با سرور Let’s Encrypt ارتباط برقرار مي كند ، سپس براي تأييد اينكه دامنه مورد نظر خود را كنترل مي كنيد ، يك چالش را اجرا كنيد.
اگر موفقيت آميز باشد ، certbot از شما مي پرسد كه مي خواهيد تنظيمات HTTPS خود را چگونه پيكربندي كنيد.
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
——————————————————————————-
1: No redirect – Make no further changes to the webserver configuration.
2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):

انتخاب خود را مشخص كنيد و سپس ENTER بزنيد. پيكربندي به روز خواهد شد ، و Nginx مجدد لود مي شود تا تنظيمات جديد را انتخاب كند. certbot با پيغامي همراه خواهد بود كه به شما مي گويد روند موفقيت آميز بوده و گواهي نامه هاي شما در كجا ذخيره شده است:
Output
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2020-08-18. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the “certonly” option. To non-interactively renew *all* of
your certificates, run “certbot renew”
– Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

اگر دستورالعمل نصب Nginx را در پيش نيازها دنبال كرديد ، ديگر نيازي به اجازه پروفايل HTTP نخواهيد داشت:
⦁ $ sudo ufw delete allow ‘Nginx HTTP’

براي تأييد پيكربندي ، اجازه دهيد يكبار ديگر با استفاده از https: // به دامنه خود برويم:
https: // your_domain
بايد يك بار ديگر خروجي برنامه خود را همراه با نشانگر امنيتي مرورگر خود مشاهده كنيد ، كه بايد نشانگر امنيت سايت باشد.
نتيجه
در اين راهنما ، يك برنامه ساده Flask را در يك محيط مجازي Python ايجاد و ايمن كرده ايد. يك نقطه ورود WSGI ايجاد كرديد تا هر سرور برنامه WSGI قادر به استفاده از آن باشد و سپس سرور برنامه Gunicorn را براي ارائه اين عملكرد پيكربندي نموديد. پس از آن ، يك فايل سرويس سيستمي ايجاد كرديد تا سرور برنامه در زمان بوت به صورت خودكار راه اندازي شود. همچنين يك بلوك سرور Nginx ايجاد كرديد كه ترافيك كلاينت وب را به سرور برنامه منتقل مي كند ، درخواست هاي خارجي را منتقل مي كند و با Let’s Encrypt ، سرور شما را ايمن نمايد.
Flask يك چارچوب بسيار ساده اما بسيار انعطاف پذير به معناي ارائه برنامه ها با قابليت هاي زياد بدون محدوديت در ساختار و طراحي است. مي توانيد از خدمات پشته عمومي كه در اين راهنما تشريح شده است استفاده كنيد تا بتوانيد كاربردهاي Flask را كه طراحي كرده ايد ارائه دهيد.

نحوه ارائه برنامه هاي كاربردي فلاش با Gunicorn و Nginx در اوبونتو 20.04
مقدمه
در اين راهنما يك برنامه Python را با استفاده از ميكروفون Flask در Ubuntu 20.04 ايجاد خواهيد كرد. بخش عمده اين مقاله در مورد نحوه تنظيم سرور برنامه Gunicorn و نحوه راه اندازي برنامه و پيكربندي Nginx براي عمل به عنوان يك پروكسي معكوس جلويي خواهد بود.
پيش نيازها
قبل از شروع اين راهنما ، بايد اين موارد را داشته باشيد:
• سروري با اوبونتو 20.04 نصب شده و يك كاربر غير ريشه با امتيازات sudo. براي راهنمايي ، راهنماي تنظيم اوليه سرور ما را دنبال كنيد.
• Nginx نصب شده ، مراحل زير 1 و 2 نحوه نصب Nginx در اوبونتو 20.04 را دنبال كنيد.
• نام دامنه پيكربندي شده براي اشاره به سرور شما. مي توانيد يكي از آنها را در Namecheap خريداري كنيد يا يكي از آنها را به صورت رايگان در Freenom دريافت كنيد. با دنبال كردن مستندات مربوط به دامنه ها و DNS مي توانيد ياد بگيريد كه چگونه دامنه ها را به DigitalOcean نشان دهيد. حتماً سوابق DNS زير را ايجاد كنيد:
o يك ضبط با your_domain كه به آدرس IP عمومي سرور شما نشان مي دهد.
o ضبط با www.your_domain كه به آدرس IP عمومي سرور شما نشان مي دهد.
• آشنايي با مشخصات WSGI ، كه سرور Gunicorn براي ارتباط با برنامه Flask شما استفاده خواهد كرد. اين بحث WSGI را با جزئيات بيشتري پوشش مي دهد.
مرحله 1 – نصب قطعات از مخازن اوبونتو
اولين قدم ما نصب تمام قطعات مورد نياز از مخازن اوبونتو خواهد بود. اين شامل پيپ ، مدير بسته پايتون است كه اجزاي پايتون ما را مديريت مي كند. ما همچنين پرونده هاي توسعه پايتون را براي ساختن برخي از اجزاي Gunicorn لازم دريافت خواهيم كرد.
ابتدا ، اجازه دهيد شاخص بسته محلي را به روز كنيم و بسته هايي را نصب كنيم كه به ما امكان مي دهد محيط Python خود را بسازيم. اين موارد شامل python3-pip ، همراه با چند بسته ديگر و ابزار توسعه لازم براي يك محيط برنامه نويسي قوي است:
با استفاده از اين بسته ها ، به سمت ايجاد يك فضاي مجازي براي پروژه خود برويم.
مرحله 2 – ايجاد يك محيط مجازي پايتون
در مرحله بعدي ، ما يك محيط مجازي تنظيم خواهيم كرد تا بتوانيم برنامه Flask خود را از ساير پرونده هاي Python روي سيستم جدا كنيم.
با نصب بسته python3-venv كه ماژول venv را نصب خواهد كرد شروع كنيد:
در مرحله بعد ، بياييد يك دايركتوري والدين براي پروژه Flask تهيه كنيم. بعد از ايجاد آن وارد پوشه شويد:
يك محيط مجازي ايجاد كنيد تا نيازهاي پايتون پروژه Flask خود را با تايپ كردن ذخيره كنيد:
با اين كار يك كپي محلي از Python نصب مي شود و به پوشه اي به نام myprojectenv درون فهرست پروژه شما مي پيوندد.
قبل از نصب برنامه ها در محيط مجازي ، بايد آن را فعال كنيد. اين كار را با تايپ كردن انجام دهيد:
اعلان شما تغيير مي كند و نشان مي دهد كه اكنون در محيط مجازي كار مي كنيد. چيزي شبيه به اين خواهد بود: (myprojectenv) user @ host: ~ / myproject $.
مرحله 3 – تنظيم يك برنامه فلاسك
اكنون كه در محيط مجازي خود قرار داريد ، مي توانيد Flask و Gunicorn را نصب كنيد و در طراحي برنامه خود شروع كنيد.
ابتدا بگذاريد چرخ را با نمونه محلي پيپ نصب كنيم تا اطمينان حاصل شود كه بسته هاي ما حتي در صورت وجود بايگاني چرخ هاي چرخي نصب نمي شوند:
توجه داشته باشيد
صرفنظر از اينكه از كدام نسخه Python استفاده مي كنيد ، هنگامي كه محيط مجازي فعال مي شود ، بايد از دستور pip استفاده كنيد (نه pip3).

بعد ، اجازه دهيد Flask و Gunicorn را نصب كنيم:
ايجاد يك برنامه نمونه
اكنون كه Flask را در دسترس داريد ، مي توانيد يك برنامه ساده ايجاد كنيد. فلاسك يك ميكرو فريم ورك است. اين شامل بسياري از ابزارهايي نيست كه ممكن است چهارچوبهاي كامل تري داشته باشند ، و عمدتاً به عنوان ماژول وجود دارد كه مي توانيد براي شروع برنامه هاي وب به شما كمك كنند تا بتوانيد به پروژه هاي خود وارد شويد.
در حالي كه ممكن است برنامه شما پيچيده تر باشد ، ما برنامه Flask خود را در يك پرونده واحد با نام myproject.py ايجاد خواهيم كرد:
كد برنامه در اين پرونده زندگي مي كند. اين فلاسك را وارد مي كند و يك شيء فلاسك را فوراً مي كند. شما مي توانيد از اين كار براي تعريف كاركردهايي استفاده كنيد كه بايد هنگام درخواست يك مسير خاص انجام شود:
اين اساساً مشخص مي كند كه هنگام دستيابي به حوزه root ، چه محتوايي ارائه شود. پس از اتمام پرونده را ذخيره و بسته كنيد.
اگر راهنماي اوليه تنظيم سرور را دنبال كرديد ، بايد فايروال UFW را فعال كنيد. براي تست برنامه ، بايد دسترسي به درگاه 5000 را داشته باشيد:
اكنون مي توانيد برنامه Flask خود را با تايپ كردن تست كنيد:
خروجي مانند موارد زير را مشاهده خواهيد كرد ، از جمله يك هشدار مفيد كه به شما يادآوري مي كند از اين تنظيم سرور در توليد استفاده نكنيد:
به آدرس IP سرور خود مراجعه كنيد و به دنبال آن: 5000 در مرورگر وب خود:
http: // your_server_ip: 5000
شما بايد چيزي شبيه به اين را ببينيد:
پس از اتمام ، CTRL-C را در پنجره ترمينال خود بزنيد تا سرور توسعه Flask متوقف شود.
ايجاد نقطه ورود WSGI
در مرحله بعدي ، بگذاريد فايلي را ايجاد كنيم كه به عنوان نقطه ورود برنامه ما باشد. اين به سرور Gunicorn ما مي گويد كه چگونه با برنامه ارتباط برقرار كنيد.
بياييد با پرونده wsgi.py تماس بگيريم:
در اين پرونده ، اجازه دهيد نمونه Flask را از برنامه ما وارد كنيم و سپس آن را اجرا كنيم:
پس از اتمام پرونده را ذخيره و بسته كنيد.
مرحله 4 – پيكربندي Gunicorn
برنامه شما اكنون با يك نقطه ورود تأسيس نوشته شده است. ما ميتوانيم
اكنون به پيكربندي Gunicorn برويد.
قبل از حركت ، بايد بررسي كنيم كه Gunicorn مي تواند به درستي برنامه را ارائه دهد.
ما مي توانيم اين كار را با ساده تر كردن نام ورودي خود انجام دهيم. اين به عنوان نام ماژول ساخته شده است (منهاي پسوند .py) ، به علاوه نام تماس گيرنده درون برنامه. در مورد ما ، اين wsgi است: برنامه.
ما همچنين مي خواهيم رابط و پورت را به هم متصل كنيم تا برنامه در يك رابط در دسترس عمومي شروع شود:
شما بايد خروجي مانند موارد زير را ببينيد:
آدرس IP سرور خود را با بازديد كنيد: 5000 بار ديگر در پايان در مرورگر وب خود اضافه كنيد:
http: // your_server_ip: 5000
بايد خروجي برنامه خود را مشاهده كنيد:
وقتي تأييد كرد كه عملكرد مناسب دارد ، CTRL-C را در پنجره ترمينال خود فشار دهيد.
ما اكنون با محيط مجازي خود انجام داده ايم ، بنابراين مي توانيم آن را غيرفعال كنيم:
هر دستور پايتون اكنون دوباره از محيط پايتون سيستم استفاده خواهد كرد.
در مرحله بعدي ، بياييد پرونده واحد خدمات سيستم شده را ايجاد كنيم. ايجاد يك فايل واحد سيستمي به سيستم اوليه Ubuntu اجازه مي دهد تا هر زمان كه سرور بوت شود ، Gunicorn را به طور خودكار شروع كرده و به برنامه Flask سرويس دهد.
براي شروع يك فايل واحد كه در قسمت service استفاده مي شود در فهرست / etc / systemd / system ايجاد كنيد:
در داخل ، ما با بخش [Unit] شروع خواهيم كرد ، كه براي مشخص كردن ابرداده و وابستگي ها استفاده مي شود. بياييد شرح خدمات خود را در اينجا قرار دهيم و به سيستم init بگوييم كه فقط پس از رسيدن به هدف شبكه ، اين كار را شروع مي كند:

بعد ، اجازه دهيد بخش [خدمات] را باز كنيم. با اين كار كاربر و گروهي را كه مي خواهيم تحت روند كار قرار بگيرند مشخص مي كند. بياييد به طور منظم مالكيت حساب كاربري ما را از اين فرآيند بدست آوريم زيرا اين پرونده در اختيار همه پرونده هاي مربوطه است بياييد مالكيت گروه را به گروه داده هاي www نيز واگذار كنيم تا Nginx بتواند به راحتي با فرآيندهاي Gunicorn ارتباط برقرار كند. به ياد داشته باشيد كه نام كاربري خود را در اينجا با نام كاربري خود جايگزين كنيد:
در مرحله بعدي ، بگذاريد فهرست كار را مشخص كنيم و متغير محيطي PATH را تنظيم كنيم تا سيستم اوليه بداند كه اجرايي اين فرآيند در محيط مجازي ما قرار دارند. بياييد فرمان شروع سرويس را نيز مشخص كنيم. اين دستور به شرح زير است:
• 3 فرآيند كارگر را شروع كنيد (اگرچه لازم است اين كار را در صورت لزوم تنظيم كنيد)
• به يك پرونده سوكت يونيكس ، myproject.sock ، در فهرست پروژه ما بسازيد و به آن وصل شويد. ما يك مقدار umask 007 تنظيم مي كنيم تا پرونده سوكت ايجاد شود و دسترسي به مالك و گروه را در حاليكه دسترسي ديگر را محدود مي كند ، ايجاد كند.
• نام پرونده ورود WSGI را به همراه پايتون قابل تماس در آن پرونده مشخص كنيد (wsgi: app)
Systemd مستلزم اين است كه ما مسير كاملي را به اجراي Gunicorn ، كه در محيط مجازي ما نصب شده است ، بدهيم.
به ياد داشته باشيد كه نام كاربري و مسير پروژه را با اطلاعات شخصي خود جايگزين كنيد:
در آخر ، بياييد يك بخش [نصب] اضافه كنيم. اگر سيستم را فعال كنيم كه در بوت شروع شود ، اين سيستم را به چه سيستم وصل مي كند. ما مي خواهيم با شروع به كار سيستم معمولي چند كاربره ، اين سرويس شروع شود:
با اين كار ، فايل سرويس سيستمهاي ما كامل است. اكنون آن را ذخيره كنيد و ببنديد.
اكنون مي توانيم سرويس Gunicorn را كه ايجاد كرديم شروع كنيم و آن را فعال كنيم تا در بوت شروع شود:
بگذاريد وضعيت را بررسي كنيم:
شما بايد خروجي مانند اين را مشاهده كنيد:
در صورت مشاهده هر گونه خطا ، حتما آنها را قبل از ادامه آموزش برطرف كنيد.
مرحله 5 – پيكربندي Nginx در درخواستهاي پروكسي
اكنون سرور برنامه Gunicorn ما بايد فعال و فعال باشد و منتظر درخواست هاي موجود در پرونده سوكت در دايركتوري پروژه باشد. اكنون اجازه دهيد Nginx را پيكربندي كنيم تا با انجام برخي اضافات كوچك در پرونده پيكربندي خود ، درخواست هاي وب را به آن سوكت منتقل كنيم.
با ايجاد يك فايل پيكربندي بلوك جديد سرور در فهرست موجود سايتهاي Nginx شروع كنيد. بياييد با اين پروژه تماس بگيريم تا با بقيه راهنما مطابقت داشته باشد:
يك بلوك سرور باز كنيد و به Nginx بگوييد كه به درگاه پيش فرض 80 گوش كند. بياييد به او نيز بگوييم كه از اين بلوك براي درخواست هاي نام دامنه سرور ما استفاده كند:
بعد ، بياييد يك بلوك موقعيت مكاني اضافه كنيم كه مطابق با هر درخواست باشد. در اين بلوك ، پرونده proxy_params را درج خواهيم كرد كه پارامترهاي عمومي پروكسي را كه بايد تنظيم شوند را مشخص مي كند. سپس ما درخواست ها را به سوكت تعريف شده با استفاده از بخشنامه proxy_pass منتقل خواهيم كرد:
پس از اتمام پرونده را ذخيره و بسته كنيد.
براي فعال كردن پيكربندي بلوك سرور Nginx كه اخيراً ايجاد كرده ايد ، پرونده را به فهرست فعال شده سايتها پيوند دهيد:
با استفاده از پرونده موجود در آن فهرست ، مي توانيد خطاهاي نحوي را آزمايش كنيد:
اگر اين بدون نشان دادن مشكلي برمي گردد ، فرايند Nginx را دوباره شروع كنيد تا پيكربندي جديد را بخوانيد:
در آخر ، اجازه دهيد دوباره ديوار آتش را تنظيم كنيم. ما ديگر نيازي به دسترسي از طريق بندر 5000 نداريم ، بنابراين مي توانيم اين قانون را حذف كنيم. سپس مي توانيم دسترسي كامل به سرور Nginx داشته باشيم:
اكنون بايد بتوانيد در مرورگر وب خود به نام دامنه سرور خود برويد:
http: // your_domain
بايد خروجي برنامه خود را مشاهده كنيد:
اگر با خطايي مواجه شديد ، موارد زير را بررسي كنيد:
• sudo كمتر /var/log/nginx/error.log: سياهههاي مربوط به خطاي Nginx را بررسي مي كند.
• sudo كمتر /var/log/nginx/access.log: سياهههاي مربوط به دسترسي Nginx را بررسي مي كند.
• sudo journalctl -u nginx: گزارش هاي مربوط به فرآيند Nginx را بررسي مي كند.
• sudo journalctl -u myproject: بررسي هاي مربوط به Gunicorn برنامه Flask شما را بررسي مي كند.
مرحله ششم – امنيت برنامه
براي اطمينان از ايمن ماندن ترافيك به سرور شما ، اجازه دهيد يك گواهي SSL براي دامنه شما بدست آوريم. روش هاي مختلفي براي اين كار وجود دارد ، از جمله دريافت گواهينامه رايگان از Let Encrypt ، توليد يك گواهي خود امضا شده يا خريد يكي از ارائه دهنده ديگر و پيكربندي Nginx براي استفاده از آن با دنبال كردن مراحل 2 تا 6 نحوه ايجاد يك خود امضا. گواهي SSL براي Nginx در اوبونتو 20.04. ما به خاطر مصلحت ، با گزينه ي اول خواهيم رفت.
بسته Nginx Certbot را با كاربردي نصب كنيد:
Certbot روشهاي مختلفي براي به دست آوردن گواهينامه هاي SSL از طريق افزونه ها ارائه مي دهد. افزونه Nginx براي تنظيم مجدد Nginx و بارگيري مجدد پيكربندي در صورت لزوم ، مراقبت خواهد كرد. براي استفاده از اين افزونه ، موارد زير را تايپ كنيد:
اين كار با افزونه –nginx با استفاده از -d براي مشخص كردن نام هايي كه مي خواهيم براي آنها اعتبار داشته باشد ، تأييد مي شود.
اگر اين اولين بار است كه در حال اجرا كردن گواهي نامه است ، از شما خواسته مي شود كه آدرس ايميل را وارد كنيد و با شرايط خدمات موافقت كنيد. بعد از انجام اين كار ، certbot با سرور Letry Encrypt ارتباط برقرار مي كند ، سپس براي تأييد اينكه دامنه مورد نظر خود را كنترل مي كنيد ، يك چالش را اجرا كنيد.
اگر اين موفقيت آميز باشد ، certbot از شما مي خواهد كه چگونه مي خواهيد تنظيمات HTTPS خود را پيكربندي كنيد:
انتخاب خود را انتخاب كنيد و سپس وارد ENTER شويد. پيكربندي به روز خواهد شد ، و Nginx بارگيري مي كند تا تنظيمات جديد را انتخاب كند. certbot با پيغامي همراه خواهد شد كه به شما مي گويد روند موفقيت آميز بود و گواهي نامه هاي شما در كجا ذخيره شده است:
اگر دستورالعمل نصب Nginx را در پيش شرط ها دنبال كرديد ، ديگر نيازي به كمك هزينه اضافي مشخصات HTTP نخواهيد داشت:
براي تأييد پيكربندي ، با استفاده از https: // دوباره به دامنه خود برويد.
https: // your_domain
شما بايد يك بار ديگر خروجي برنامه خود را همراه با نشانگر امنيتي مرورگر خود مشاهده كنيد ، كه بايد نشانگر امنيت سايت باشد.
نتيجه
در اين راهنما ، يك برنامه ساده Flask را در يك محيط مجازي Python ايجاد و امن كرده ايد. شما يك نقطه ورود WSGI ايجاد كرده ايد تا هر سرور برنامه WSGI قادر به استفاده از آن باشد و سپس سرور برنامه Gunicorn را براي ارائه اين عملكرد پيكربندي كنيد. پس از آن ، شما يك فايل خدمات سيستمي ايجاد كرديد تا سرور برنامه به صورت خودكار راه اندازي شود. شما همچنين يك بلوك سرور Nginx ايجاد كرده ايد كه ترافيك سرويس دهنده وب را به سرور برنامه منتقل مي كند ، درخواست هاي خارجي را منتقل مي كند و با رمزگذاري Let’s Encrypt ، ترافيك را به سرور خود ايمن مي كنيد.
فلاسك يك چارچوب بسيار ساده اما بسيار انعطاف پذير به معناي ارائه كاربردهاي شما با قابليت هاي بدون محدوديت در مورد ساختار و طراحي است. مي توانيد از خدمات پشته اي كه در اين راهنما تشريح شده است استفاده كنيد تا بتوانيد كاربردهاي فلاسكي را كه طراحي كرده ايد ارائه دهيد.

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان – 

برچسب‌ها:FlaskGunicornpipبرنامه Python

ايمن كردن Nginx با Let’s Encrypt در Ubuntu 20.04

۰ بازديد

Let’s Encrypt يك مجوز رسمي است كه روشي آسان براي به دست آوردن و نصب مجوزهاي رايگان TLS / SSL فراهم مي كند ، در نتيجه HTTPS رمزگذاري شده را روي سرورهاي وب فعال مي كند. در واقع با ارائه يك كلاينت نرم افزاري ،يعني Certbot ، كه سعي در خودكارسازي اكثر مراحل لازم دارد ، فرايند را ساده مي كند. در حال حاضر ، كل مراحل اخذ و نصب گواهينامه هم در Apache و هم در Nginx كاملا به صورت اتوماتيك انجام مي شود.
در اين آموزش از Certbot براي دريافت گواهينامه رايگان SSL براي Nginx روي Ubuntu 20.04 استفاده مي كنيد و گواهي خود را براي تمديد خودكار تنظيم مي كنيد.
در اين آموزش به جاي فايل پيكربندي پيش فرض از يك فايل ميزبان مجازي Nginx جداگانه استفاده خواهد شد. توصيه مي كنيم براي هر دامنه فايل هاي جديد ميزبان مجازي Nginx ايجاد كنيد زيرا اين امر به جلوگيري از اشتباهات رايج كمك مي كند و فايل هاي پيش فرض را به عنوان پيكربندي برگشت پذير حفظ مي كند.
پيش نيازها
براي دنبال كردن اين آموزش ، به موارد زير نياز داريد:
• يك سرور Ubuntu 20.04 كه با دنبال كردن راهنماي ستاپ اوليه سرور براي Ubuntu 20.04 تنظيم شده و شامل يك كاربر غير root با امتيازات sudo و فايروال باشد.
• نام دامنه كاملاً ثبت شده. در اين آموزش ، از example.comاستفاده مي شود. مي توانيد نام دامنه را در Namecheap خريداري كنيد ، يكي را به صورت رايگان در Freenom دريافت كنيد ، يا از ثبت دامنه مورد نظر خود استفاده كنيد.
• هر دو ركورد DNS زير براي سرور شما تنظيم شده باشند.
o يك ركورد A با example.com كه به آدرس IP عمومي سرور شما اشاره كند.
o يك ركورد A با www.example.com كه به آدرس IP عمومي سرور شما اشاره كند.
• Nginx كه با دنبال كردن نحوه نصب Nginx در Ubuntu 20.04 نصب شده باشد. مطمئن شويد كه يك فايل هاست مجازي براي دامنه خود تنظيم كرده ايد. در اين آموزش از /etc/nginx/sites-available/example.com به عنوان نمونه استفاده مي شود.
مرحله 1 – نصب Certbot
اولين قدم براي استفاده از Let’s Encrypt جهت دريافت گواهينامه SSL ، نصب نرم افزار Certbot در سرور شماست.
Certbot و افزونه Nginx آن را با apt نصب كنيد.

$ sudo apt install certbot python3-certbot-nginx

Certbot اكنون آماده استفاده است اما براي اينكه SSL را به طور خودكار براي Nginx پيكربندي كند ، بايد تأييد كنيم كه Nginx به درستي پيكربندي شده است.
مرحله 2 – تأييد پيكربندي Nginx
Certbot بايد بتواند بلوك سرور صحيح را در تنظيمات Nginx شما پيدا كند تا بتواند SSL را بطور خودكار پيكربندي كند. به طور خاص ، اين كار را با جستجوي يك دستورالعمل server_name متناسب با دامنه مورد نظر براي دريافت گواهينامه انجام مي دهد.
اگر مرحله نصب بلوك سرور را در آموزش نصب Nginx دنبال كرديد ، بايد يك بلوك سرور براي دامنه خود در /etc/nginx/sites-available/example.com با دستور server_name كه قبلاً به طور مناسب تنظيم شده است ، داشته باشيد.
براي بررسي ، فايل پيكربندي دامنه خود را با استفاده از nano يا ويرايشگر متن مورد علاقه خود باز كنيد:
$ sudo nano /etc/nginx/sites-available/example.com

خط server_name موجود را پيدا كنيد. مي بايست شبيه به اين باشه:
/etc/nginx/sites-available/example.com

server_name example.com www.example.com;

اگر اين گونه بود ، از ويرايشگر خود خارج شويد و به مرحله بعدي برويد.
اگر اينطور نيست ، آن را به روز كنيد تا مطابقت داشته باشد. سپس فايل را ذخيره كنيد ، از ويرايشگر خود خارج شويد و تركيب ويرايش هاي پيكربندي خود را تأييد كنيد:
$ sudo nginx -t

اگر خطايي رخ داد ، فايل بلوك سرور را مجدداً باز كنيد و هرگونه خطاي تايپي يا كاراكتر جاافتاده را بررسي كنيد. پس از اينكه دستور فايل پيكربندي شما درست شد ، Nginx را مجدد لود كنيد تا پيكربندي جديد لود شود:
$ sudo systemctl reload nginx

Certbot اكنون مي تواند بلوك سرور صحيح را پيدا كرده و به طور خودكار آن را به روز كند.
در مرحله بعد ، بياييد ترافيك HTTPS فايروال را به روز كنيم.
مرحله 3 – اجازه عبور HTTPS از طريق فايروال
اگر فايروال ufw را فعال كرده باشيد ، همانطور كه توسط راهنماهاي پيش نياز توصيه شده است ، براي تنظيم ترافيك HTTPS ، بايد تنظيماتي را انجام دهيد. خوشبختانه ، Nginx چند پروفايل را از طريق نصب ufw ثبت ميكند .
با تايپ دستور زير مي توانيد تنظيم فعلي را مشاهده كنيد:
$ sudo ufw status

احتمالا خروجي دستور اينگونه خواهد بود ، نشان مي دهد كه فقط ترافيك HTTP به سرور وب مجاز است:
Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

براي اجازه دادن به ترافيك HTTPS ، به پروفايل كامل Nginx دسترسي بدهيد و اجازه پروفايل HTTP Nginx اضافي را حذف كنيد:
$ sudo ufw allow ‘Nginx Full’

$ sudo ufw delete allow ‘Nginx HTTP’

وضعيت شما اكنون بايد به اين شكل باشد:
$ sudo ufw status

Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)

سپس ، بياييد Certbot را اجرا كنيم و گواهينامه هايمان را دريافت كنيم.
مرحله 4 – اخذ گواهينامه SSL
Certbot روشهاي مختلفي براي گرفتن گواهينامه هاي SSL از طريق افزونه ها ارائه مي دهد. افزونه Nginx از تنظيم مجدد Nginx و بارگيري مجدد تنظيمات در صورت لزوم مراقبت خواهد كرد. براي استفاده از اين افزونه ، دستور زير را تايپ كنيد:
$ sudo certbot –Nginx -d example.com -d www.example.com

اين كار Certbot را با افزونه –Nginx با استفاده از -d براي مشخص كردن نام هايي كه معتبر آن هستند اجرا ميكند.
اگر اولين بار است كه Certbot را اجرا ميكنيد ، از شما خواسته مي شود كه آدرس ايميل را وارد كنيد و با شرايط سرويس ها موافقت كنيد. بعد از انجام اين كار ، certbot با سرور Let’S Encrypt ارتباط برقرار مي كند ، سپس براي تأييد اينكه دامنه مورد نظر خود را كنترل مي كنيد ، يك چالش اجرا كنيد.
اگر موفقيت آميز باشد ، certbot از شما مي پرسد كه چگونه مي خواهيد تنظيمات HTTPS خود را پيكربندي كنيد:
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
1: No redirect – Make no further changes to the webserver configuration.
2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):

گزينه خود را انتخاب كنيد و سپس ENTER بزنيد. پيكربندي به طور خودكار به روز مي شود ، و Nginx براي انتخاب تنظيمات جديد مجدد لود مي شود. certbot با پيغامي همراه خواهد بود كه به شما مي گويد روند موفقيت آميز بوده و گواهي نامه هاي شما در كجا ذخيره شده است:
Output
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2020-08-18. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the “certonly” option. To non-interactively renew *all* of
your certificates, run “certbot renew”
– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

گواهينامه هاي شما دانلود ، نصب و لود مي شوند. سعي كنيد وب سايت خود را با استفاده از https: // مجدد لود كنيد و به نشانگر امنيتي مرورگر خود توجه كنيد. بايد نشان دهد كه سايت به طور صحيح ايمن است ، معمولاً با نماد قفل سبز نشانه داده ميشود. اگر سرور خود را با استفاده از SSL Labs Server Test آزمايش كنيد ، درجه A دريافت مي كند.
بياييد با آزمايش روند تجديد، كار را به پايان برسانيم.
مرحله 5 – تأييد تمديد خودكار Certbot
گواهي هاي Let’s Encrypt فقط براي نود روز اعتبار دارند. اين امر براي ترغيب كاربران به اتوماسيون كردن فرايند تجديد گواهينامه ميباشد. بسته certbot كه نصب كرديم با اضافه كردن يك اسكريپت تجديد به /etc/cron.d از اين امر مراقبت مي كند. اين اسكريپت روزانه دو بار اجرا مي شود و به طور خودكار هر مدركي را كه كمتر از سي روز از انقضاي آن مانده ، تمديد مي كند.
براي بررسي وضعيت تايمر، مي توانيد از systemctl استفاده كنيد:
$ sudo systemctl status certbot.timer

Output
● certbot.timer – Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
Triggers: ● certbot.service

براي آزمايش فرآيند تجديد، ميتوانيد يك اجراي خالي با certbot انجام دهيد
$ sudo certbot renew –dry-run

اگر خطايي نمي بينيد ، همه تنظيمات انجام شده است. در صورت لزوم ، Certbot گواهي هاي شما را تمديد كرده و Nginx را مجدد لود مي كند تا تغييرات را اعمال كند. اگر فرايند تمديد خودكار زماني از كار بيفتد ، Let’s Encrypt پيامي را به ايميلي كه مشخص كرده ايد ، ارسال مي كند و به شما هشدار مي دهيد كه گواهي شما رو به پايان است.
نتيجه
در اين آموزش ، كلاينت lets Encrypt certbot را نصب كرديد ، گواهينامه هاي SSL را براي دامنه خود دانلود كرديد ، Nginx را براي استفاده از اين گواهينامه ها پيكربندي كرده و تمديد خودكار گواهي نامه را فعال نموديد. اگر سؤال ديگري در مورد استفاده از Certbot داريد ، مراجعه به مطالب مربوطه آنها توصيه ميشود.

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان – 

برچسب‌ها:CertbotNginx

تنظيم پلتفرم Cloud IDE كد سرور در اوبونتو 20

۰ بازديد

با حركت ابزارهاي گسترش دهنده به سمت cloud ، ايجاد و تطابق پذيري پلتفرم cloud IDE (محيط پيشرفت ادغام شده) در حال رشد است. Cloud IDE ها امكان همكاري زمان واقعي (real-time) بين تيم هاي توسعه دهنده را فراهم مي كنند تا در يك محيط توسعه يكپارچه كار كنند و ناسازگاري ها را به حداقل مي رساند اما توليد را افزايش ميدهد. چون از طريق مرورگرهاي وب قابل دسترسي اند ، Cloud IDE ها در هر نوع دستگاه مدرن موجود هستند.
code-server يك كد مايكروسافت ويژوال استوديو است كه روي يك سرور از راه دور اجرا مي شود و مستقيماً از مرورگر شما قابل دسترسي است. ويژوال استوديو كد يك ويرايشگر كد مدرن با پشتيباني Git ادغام شده، يك اشكال زدا براي كد، داراي تكميل خودكار هوشمند و ويژگي هاي قابل سفارشي سازي و قابل بسط ميباشد. بدان معني كه مي توانيد از دستگاه هاي مختلف با سيستم عامل هاي مختلف استفاده كنيد و هميشه يك محيط توسعه مداوم داشته باشيد.
در اين آموزش ، پلتفرم cloud IDE كد سرور را بر روي دستگاه Ubuntu 20.04 خود تنظيم كرده و آن را در دامنه قرار مي دهيد ، كه با گواهي TLS در Let’s Encrypt ايمن شده است. در اخر، كد ويژوال استوديو را روي سرور Ubuntu 20.04 خود راه اندازي ميكنيد كه در دامنه شما در دسترس است و با پسورد محافظت ميشود.
پيش نيازها
⦁ سروري كه اوبونتو 20.04 را اجرا ميكند با حداقل 2 گيگابايت رم ، دسترسي به ريشه و يك حساب sudo و غير ريشه. مي توانيد اين كار را با دنبال كردن راهنماي اوليه تنظيم سرور Ubuntu 20.04 انجام دهيد.
⦁ Nginx كه روي سرور شما نصب شده باشد. براي راهنمايي در مورد نحوه انجام اين كار ، مراحل 1 تا 4 نحوه نصب Nginx را در اوبونتو 20.04 مطالعه كنيد.
⦁ يك نام دامنه كاملا ثبت شده براي ميزباني كد سرور ، كه به سرور شما اشاره ميكند. در اين آموزش از code-server.your-domain استفاده مي شود. مي توانيد نام دامنه را در Namecheap خريداري كنيد ، به صورت رايگان در Freenom دريافت كنيد ، يا از ثبت دامنه مورد نظر خود استفاده كنيد.
مرحله 1 – نصب كد- سرور
در اين بخش كد-سرور را روي سرور خود تنظيم مي كنيد. اين مستلزم دانلود آخرين نسخه و ايجاد سرويس سيستمي است كه كد-سرور را هميشه در پس زمينه اجرا مي كند. همچنين رويكرد ريستارت را براي سرويس تعيين خواهيد كرد ، به اين ترتيب كد-سرور پس از خرابي يا ريبوت احتمالي در دسترس خواهد بود.
همه داده هاي مربوط به كد-سرور را در پوشه اي به نام ~ / code-server ذخيره مي كنيد. با اجراي دستور زير آن را ايجاد كنيد:
⦁ $ mkdir ~/code-server
به آن پوشه برويد:
⦁ $ cd ~/code-server

بايد به صفحه نسخه هاي كد-سرور Github برويد و آخرين لينوكس را انتخاب كنيد (نام فايل شامل “linux” خواهد بود). در زمان نوشتن ، آخرين نسخه 3.3.1 بوده است. با اجراي دستور زير آن را با استفاده از wget دانلود كنيد:
⦁ $ wget https://github.com/cdr/code-server/releases/download/v3.3.1/code-server-3.3.1-linux-amd64.tar.gz

سپس با اجراي اين دستور، آرشيو را باز كنيد:
⦁ $ tar -xzvf code-server-3.3.1-linux-amd64.tar.gz

پوشه اي دقيقاً به نام فايل اصلي كه دانلود كرده ايد ، دريافت ميكنيد كه شامل كد منبع كد-سرور است. آن را در / usr / lib / code-server كپي كنيد تا با اجراي دستور زير بتوانيد به صورت گسترده به آن دسترسي پيدا كنيد:
⦁ $ sudo cp -r code-server-3.3.1-linux-amd64 /usr/lib/code-server

سپس ، يك لينك نمادين را در / usr / bin / code-server ايجاد كنيد ، كه به عملكرد كد-سرور اشاره كند:
⦁ $ sudo ln -s /usr/lib/code-server/bin/code-server /usr/bin/code-server

در مرحله بعد ، يك پوشه براي كد-سرور ايجاد كنيد ، كه در آن داده هاي كاربر را ذخيره مي كند:
⦁ $ sudo mkdir /var/lib/code-server

اكنون كه كد-سرور را دانلود كرده ايد و آن را در سراسر سيستم در دسترس قرار داده ايد ، يك سرويس سيستمي ايجاد خواهيد كرد تا كد-سرور را هميشه در پس زمينه اجرا كنيد.
پيكربندي سرويس را در فايلي به نام code-server.service ، در ديركتوري / lib / systemd / system ذخيره خواهيد كرد ، جايي كه سيستم عامل سرويس هاي خود را ذخيره مي كند. آن را با استفاده از ويرايشگر متن خود ايجاد كنيد:
⦁ $ sudo nano /lib/systemd/system/code-server.service

خطوط زير را اضافه كنيد:
/lib/systemd/system/code-server.service
[Unit]
Description=code-server
After=nginx.service

[Service]
Type=simple
Environment=PASSWORD=your_password
ExecStart=/usr/bin/code-server –bind-addr 127.0.0.1:8080 –user-data-dir /var/lib/code-server –auth password
Restart=always

[Install]
WantedBy=multi-user.target

در اينجا ابتدا شرح سرويس را مشخص مي كنيد. سپس ، اعلام مي كنيد كه سرويس nginx قبل از اين بايد شروع شود. بعد از بخش [Unit] نوع سرويس را تعريف مي كنيد (simple بدان معني است كه فرايند بايد به سادگي اجرا شود) و فرماني را كه اجرا مي شود ارائه مي دهد.
همچنين مشخص مي كنيد كه اجراي كد-سرور جهاني بايد با چند آرگومان خاص براي كد-سرور آغاز شود. –bind-addr 127.0.0.1:8080 آن را به localhost  در پورت 8080 متصل مي كند ، بنابراين فقط از داخل سرور شما قابل دسترسي است. –user-data-dir /var/lib/code-server دايركتوري داده هاي كاربر خود را تنظيم مي كند ، و –auth password مشخص مي كند كه بايد بازديد كنندگان را با يك رمزعبور ، مشخص شده در متغير محيط PASSWORD كه در خط بالاي آن مشخص شده است ، تأييد كند.
به ياد داشته باشيد كه your_password را با رمز عبور دلخواه خود جايگزين كنيد ، سپس فايل را ذخيره كنيد و ببنديد.
خط بعدي به systemd مي گويد تا كد-سرور را در تمام مواقع عدم كاركرد ريستارت كند (براي مثال ، هنگام خرابي يا قطع فرايند). بخش [Install] به سيستم دستور مي دهد تا در صورت امكان ورود به سرور شما ، اين سرويس را شروع كند.
با اجراي دستور زير سرويس كد-سرور را شروع كنيد:
⦁ $ sudo systemctl start code-server

با مشاهده وضعيت آن بررسي كنيد كه درست شروع شده است:
⦁ $ sudo systemctl status code-server

خروجي مشابه اين مشاهده خواهيد كرد:
Output
● code-server.service – code-server
Loaded: loaded (/lib/systemd/system/code-server.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2020-05-20 13:03:40 UTC; 12s ago
Main PID: 14985 (node)
Tasks: 18 (limit: 2345)
Memory: 26.1M
CGroup: /system.slice/code-server.service
├─14985 /usr/lib/code-server/bin/../lib/node /usr/lib/code-server/bin/.. –bind-addr 127.0.0.1:8080 –user-data-dir /var/lib/code-server –auth>
└─15010 /usr/lib/code-server/lib/node /usr/lib/code-server –bind-addr 127.0.0.1:8080 –user-data-dir /var/lib/code-server –auth password

May 20 13:03:40 code-server-update-2004 systemd[1]: Started code-server.
May 20 13:03:40 code-server-update-2004 code-server[15010]: info Wrote default config file to ~/.config/code-server/config.yaml
May 20 13:03:40 code-server-update-2004 code-server[15010]: info Using config file ~/.config/code-server/config.yaml
May 20 13:03:40 code-server-update-2004 code-server[15010]: info Using user-data-dir /var/lib/code-server
May 20 13:03:40 code-server-update-2004 code-server[15010]: info code-server 3.3.1 6f1309795e1cb930edba68cdc7c3dcaa01da0ab3
May 20 13:03:40 code-server-update-2004 code-server[15010]: info HTTP server listening on http://127.0.0.1:8080
May 20 13:03:40 code-server-update-2004 code-server[15010]: info – Using password from $PASSWORD
May 20 13:03:40 code-server-update-2004 code-server[15010]: info – To disable use `–auth none`
May 20 13:03:40 code-server-update-2004 code-server[15010]: info – Not serving HTTPS

براي شروع خودكار كد-سرور پس از راه اندازي مجدد سرور ، سرويس خود را با اجراي دستور زير فعال كنيد:
⦁ $ sudo systemctl enable code-server

در اين مرحله ، كد-سرور را دانلود كرده و آن را در سطح جهاني در دسترس قرار داده ايد. سپس ، يك سرويس سيستمي براي آن ايجاد كرده ايد و آن را فعال كرده ايد ، بنابراين كد-سرور از هر بوت سرور شروع مي شود. سپس ، با پيكربندي Nginx به عنوان يك پراكسي معكوس بين بازديد كننده و كد-سرور آن را در معرض نمايش دامنه خود قرار مي دهيد.
مرحله 2 – قرار گرفتن در معرض كد-سرور در دامنه شما
در اين بخش ، Nginx را به عنوان يك پروكسي معكوس براي كد-سرور پيكربندي مي كنيد.
همانطور كه در مرحله پيش نياز Nginx آموخته ايد ، فايل هاي پيكربندي سايت آن تحت /etc/nginx/sites-available ذخيره مي شوند و بعداً بايد براي فعال شدن با /etc/nginx/sites-enabled لينك شده باشند.
پيكربندي را براي قرار دادن كد-سرور در دامنه خود در فايلي به نام code-server.conf ، تحت /etc/nginx/sites-available ذخيره مي كنيد. با ايجاد ويرايشگر خود را شروع به كار كنيد:
⦁ $ sudo nano /etc/nginx/sites-available/code-server.conf

خطوط زير را اضافه كنيد:
etc/nginx/sites-available/code-server.conf
server {
listen 80;
listen [::]:80;

server_name code-server.your-domain;

location / {
proxy_pass http://localhost:8080/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}

code-server.your-domain را با دامنه مورد نظر خود جايگزين كنيد ، سپس فايل را ذخيره كنيد و ببنديد.
در اين فايل ، تعريف مي كنيد كه Nginx بايد به پورت HTTP 80 گوش كند. سپس ، يك server_name را تعيين مي كنيد كه به Nginx مي گويد براي كدام دامنه درخواست ها را بپذيرد و اين پيكربندي خاص را اعمال كند. در بلوك بعدي ، براي مكان ريشه (/) ، مشخص مي كنيد كه درخواست ها بايد به كد-سرور در حال اجرا در localhost:8080 به جلو و عقب منتقل شوند. سه خط بعدي (كه با proxy_set_header شروع ميشود) به Nginx دستور مي دهد تا برخي از هدرهاي درخواست HTTP را كه براي عملكرد صحيح WebSockets مورد نياز هستند ، استفاده كند.
براي فعال كردن اين پيكربندي سايت ، بايد با اجراي دستور زير ، يك پوشه مربوط به آن را در پوشه / etc / nginx / sites-enabled ايجاد كنيد:
⦁ $ sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/code-server.conf

براي آزمايش اعتبار پيكربندي ، دستور زير را اجرا كنيد:
⦁ $ sudo nginx -t

خروجي زير را مشاهده خواهيد كرد:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

براي اينكه پيكربندي عملي شود ، بايد Nginx را مجدداً راه اندازي كنيد:
⦁ $ sudo systemctl restart nginx

اكنون نصب كد-سرور شما در دامنه تان قابل دسترسي است. در مرحله بعد ، با استفاده از يك گواهي نامه Let’s Encrypt TLS رايگان ، آن را ايمن خواهيد كرد.
مرحله 3 – امنيت بخشيدن به دامنه
در اين بخش دامنه خود را با استفاده از گواهي نامه Let’s Encrypt TLS كه با استفاده از Certbot تهيه مي نماييد را ايمن مي كنيد.
براي نصب آخرين نسخه Certbot ، دستور زير را اجرا كنيد:
⦁ $ sudo apt install certbot python3-certbot-nginx

به عنوان بخشي از پيش شرط ها ، ufw (فايروال كامپايل نشده) را فعال كرده و آن را پيكربندي كرده ايد تا امكان ترافيك HTTP رمزگذاري نشده را فراهم كند. براي دسترسي ايمن به سايت ، بايد آن را پيكربندي كنيد تا با اجراي دستور زير ، ترافيك رمزگذاري شده را بپذيرد:
⦁ $ sudo ufw allow https

خروجي اين چنين خواهد بود:
Output
Rule added
Rule added (v6)
به طور مشابه با Nginx ، لازم است آن را مجدد كنيد لود تا پيكربندي آن به مرحله اجرا برسد:
⦁ $ sudo ufw reload

چنين خروجي نشان داده مي شود:
Output
Firewall reloaded

سپس در مرورگر خود به دامنه مورد استفاده براي كد-سرور برويد. اعلان ورود به كد-سرور را مشاهده خواهيد كرد.

كد-سرور از شما مي خواهد رمز عبور خود را وارد كنيد. پسوردي را كه در مرحله قبل تعيين كرديد وارد كنيد و Enter IDE را فشار دهيد. اكنون كد-سرور را وارد كرده و فوراً رابط كاربري گرافيكي آن را مشاهده مي كنيد.

اكنون كه بررسي كرده ايد كه كد-سرور به درستي در دامنه شما قرار گرفته است ، بايد مجوز TLS را رمزگذاري كنيد تا با استفاده از Certbot ، آن را ايمن كنيد.
براي درخواست گواهي نامه براي دامنه خود ، دستور زير را اجرا كنيد:
⦁ $ sudo certbot –nginx -d code-server.your-domain

در اين دستور ، شما certbot را براي درخواست گواهينامه ها براي دامنه خود اجرا مي كنيد – نام دامنه را با پارامتر -d وارد ميكنيد. پرچم –nginx به آن مي گويد براي پشتيباني از HTTPS ، پيكربندي سايت Nginx را به طور خودكار تغيير دهد. به ياد داشته باشيد كه دامنه code-server.your خود را با نام دامنه خود جايگزين كنيد.
اگر اولين بار است كه Certbot را اجرا مي كنيد ، از شما خواسته مي شود كه يك آدرس ايميل براي اخطارهاي ضروري وارد كنيد و شرايط خدمات EFF را بپذيريد. سپس Certbot درخواست Let’s Encrypt براي گواهي دامنه شما را ميدهد. سپس از شما سؤال مي كند كه آيا مايليد همه ترافيك HTTP را به HTTPS هدايت كنيد:
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
1: No redirect – Make no further changes to the webserver configuration.
2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):

توصيه مي شود براي به حداكثر رساندن امنيت گزينه دوم را انتخاب كنيد. پس از وارد كردن انتخاب خود ، ENTER را فشار دهيد.
خروجي مشابه اين خواهد بود:
Output
IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/code-server.your-domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/code-server.your-domain/privkey.pem
Your cert will expire on … To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the “certonly” option. To non-interactively renew *all* of
your certificates, run “certbot renew”
– Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
– If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

اين بدان معني است كه Certbot موفق به توليد گواهينامه هاي TLS شده و آنها را در پيكربندي Nginx براي دامنه شما به كار مي برد. اكنون مي توانيد دامنه كد سرور خود را در مرورگر خود مجدد لود كنيد و يك پدلاك (قفل) در سمت چپ آدرس سايت مشاهده كنيد ، اين بدان معني است كه اتصال شما به درستي ايمن است.
اكنون كه كد-سرور را از طريق يك پروكسي معكوس Nginx در دامنه خود داريد ، آماده استفاده از واسط كاربري كد-سرور هستيد.
مرحله 4 – استفاده از رابط كد-سرور
در اين بخش از برخي از ويژگي هاي رابط كد-سرور استفاده خواهيد كرد. از آنجا كه كد-سرور ويژوال استوديو كد در حال اجرا در cloud است ، همان رابط كاربري نسخه دسكتاپ مستقل را دارد.
در سمت چپ IDE ، يك رديف عمودي از شش دكمه وجود دارد كه بيشترين ويژگي هاي مورد استفاده را در يك صفحه جانبي كه با عنوان Activity Bar شناخته مي شود باز مي كند.

اين نوار قابل تنظيم است بنابراين مي توانيد اين نماها را به ترتيب ديگري جابجا كنيد يا آنها را از نوار حذف كنيد. به طور پيش فرض ، اولين دكمه منوي كلي را به صورت كشويي باز مي كند ، در حالي كه نماي دوم پنل اكسپلورر را باز مي كند كه پيمايش درخت مانند از ساختار پروژه را فراهم مي كند. مي توانيد پوشه ها و فايل هاي خود را در اينجا مديريت كنيد – ايجاد ، حذف ، جابجايي و تغيير نام آنها در صورت لزوم. نماي بعدي دسترسي به عملكرد جستجو و جايگزيني را فراهم مي كند
به دنبال اين ، به ترتيب پيش فرض ، نماي شما از سيستم هاي كنترل منبع مانند Git قرار ميگيرد. كد ويژوال استوديو همچنين از ساير ارائه دهندگان كنترل منبع پشتيباني مي كند و مي توانيد در اين مستندات دستورالعمل هاي بيشتري را براي جريان كاري كنترل منبع با ويرايشگر بيابيد.

گزينه اشكال زدايي در نوار فعاليت ، كليه اقدامات معمول را براي اشكال زدايي در پنل ارائه مي دهد. ويژوال استوديو كد با پشتيباني داخلي براي اشكال زدايي زمان اجراي Node.js و هر زباني كه به Javascript تبديل شود همراه است. براي ساير زبانها مي توانيد افزونه هايي را براي اشكال زدايي مورد نياز نصب كنيد. مي توانيد پيكربندي هاي اشكال زدايي را در فايل launch.jsonذخيره كنيد.

نماي نهايي در نوار فعاليت ، منويي را براي دسترسي به افزونه هاي موجود در Marketplace فراهم مي كند.
قسمت اصلي GUI ويرايشگر شماست كه مي توانيد آن ها را با استفاده از زبانه ها براي ويرايش كد خود جدا كنيد. مي توانيد نماي ويرايش خود را به يك سيستم شبكه يا به فايل هاي جانبي تغيير دهيد.

پس از ايجاد فايل جديد از طريق منوي File ، يك فايل خالي در يك تب جديد باز مي شود و پس از ذخيره سازي ، نام فايل در صفحه جانبي Explorer قابل مشاهده خواهد بود. ايجاد پوشه ها را مي توان با كليك راست بر روي نوار كناري Explorer و كليك بر روي New Folder انجام داد. مي توانيد پوشه اي را با كليك بر روي نام آن و همچنين drag و drop فايل ها و پوشه ها به قسمتهاي بالايي بسط دهيد تا آنها را به يك مكان جديد منتقل كنيد.

مي توانيد با وارد كردن CTRL + SHIFT + `، يا با كليك كردن بر روي ترمينال در منوي كشويي بالاي منو ، و انتخاب New Terminal ، به ترمينال دسترسي پيدا كنيد. ترمينال در يك پنل پايين تر باز خواهد شد و ديركتوري كار آن روي فضاي كاري پروژه تنظيم مي شود ، كه شامل فايل ها و پوشه هاي نمايش داده شده در پنل سمت Explorer است.
شما يك نماي كلي سطح بالا از رابط كد سرور را جستجو كرده ايد و برخي از متداول ترين ويژگي ها را مشاهده كرده ايد.
نتيجه
اكنون كد-سرور ، يك IDE همه كاره cloud را در اختيار داريد كه بر روي سرور Ubuntu 20.04 شما نصب شده است ، در دامنه شما قرار گرفته و با استفاده از گواهي Let’s Encrypt ايمن شده است. هم اكنون مي توانيد بر روي پروژه ها بصورت جداگانه و همچنين در يك مجموعه همكاري تيمي كار كنيد. اجراي IDE cloud منابع موجود در دستگاه محلي شما را آزاد مي كند و به شما امكان مي دهد منابع را در صورت لزوم مقياس كنيد. براي اطلاعات بيشتر در مورد ويژگي هاي ديگر و دستورالعمل هاي دقيق در مورد ساير مؤلفه هاي كد-سرور ، به مطالب كد ويژوال استوديو مراجعه كنيد.

خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان – 

برچسب‌ها:cloudCloud IDE