سرور مجازی

۱۱۰ مطلب در تیر ۱۳۹۹ ثبت شده است

  • ۰
  • ۰

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

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

ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04

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

کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04

نصب و ایمن سازی Grafana در اوبونتو 20.04

نحوه نصب Git در Ubuntu 20.04

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

در این راهنما یک برنامه 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 “<h1 style=’color:blue’>Hello There!</h1>”

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 ارزان – 

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

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

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

ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04

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

کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04

نصب و ایمن سازی Grafana در اوبونتو 20.04

نحوه نصب Git در Ubuntu 20.04

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

در این راهنما یک برنامه 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 “<h1 style=’color:blue’>Hello There!</h1>”

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 می توانید یاد بگیرید که چگونه دامنه ها را به vpsgol نشان دهید. حتماً سوابق 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 ، ترافیک را به سرور خود ایمن می کنید.
فلاسک یک چارچوب بسیار ساده اما بسیار انعطاف پذیر به معنای ارائه کاربردهای شما با قابلیت های بدون محدودیت در مورد ساختار و طراحی است. می توانید از خدمات پشته ای که در این راهنما تشریح شده است استفاده کنید تا بتوانید کاربردهای فلاسکی را که طراحی کرده اید ارائه دهید.

 

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

چگونه به 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

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

ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04

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

کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04

نصب و ایمن سازی Grafana در اوبونتو 20.04

نحوه نصب Git در Ubuntu 20.04

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

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 دارید ، مراجعه به مطالب مربوطه آنها توصیه میشود.

 

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

چگونه به 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

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

ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04

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

کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04

نصب و ایمن سازی Grafana در اوبونتو 20.04

نحوه نصب Git در Ubuntu 20.04

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

با حرکت ابزارهای گسترش دهنده به سمت 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 منابع موجود در دستگاه محلی شما را آزاد می کند و به شما امکان می دهد منابع را در صورت لزوم مقیاس کنید. برای اطلاعات بیشتر در مورد ویژگی های دیگر و دستورالعمل های دقیق در مورد سایر مؤلفه های کد-سرور ، به مطالب کد ویژوال استودیو مراجعه کنید.

 

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

چگونه به 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

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

ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04

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

کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04

نصب و ایمن سازی Grafana در اوبونتو 20.04

نحوه نصب Git در Ubuntu 20.04

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

اکثر گواهی های Let’s Encrypt با استفاده از اعتبار HTTP صادر می شوند که امکان نصب آسان گواهینامه ها در یک سرور مجازی واحد را نیز می دهد. با این حال ، اعتبار سنجی HTTP همیشه برای صدور گواهی ها برای استفاده در وب سایت های دارای بار بالانس شده مناسب نیست و همچنین نمی توان از آن برای صدور گواهی های wildcard استفاده کرد.
اعتبار سنجی DNS اجازه می دهد تا درخواست های صدور گواهی با استفاده از سوابق DNS تأیید شود ، نه اینکه با ارائه محتوا از طریق HTTP انجام شود. این بدان معناست که می توان گواهی هایی را به طور همزمان برای خوشه ای از سرور مجازی های وب در حال اجرا در ورای متعادل کننده بار ، یا برای سیستمی که به طور مستقیم از طریق اینترنت قابل دسترسی نیست ، صادر کرد. گواهینامه های Wildcard نیز با استفاده از اعتبار سنجی DNS پشتیبانی می شوند.
از ابزار acme-dns-certbot برای اتصال Certbot به سرور مجازی DNS شخص ثالث استفاده می شود که در آن می توانید سوابق اعتبار سنجی گواهینامه را هنگام درخواست مجوز به طور خودکار از طریق API تنظیم کنید. مزیت این امر این است که شما نیازی به ادغام Certbot به طور مستقیم با حساب ارائه دهنده DNS خود ندارید ، و همچنین نیازی به دسترسی نامحدود به تنظیمات کامل DNS نیست ، که به امنیت بیشتر منجر میشود.
نواحی DNG مشخص شده به منظور تغییر مسیر جستجوی سوابق تأیید گواهی برای سرویس DNS شخص ثالث مورد استفاده قرار می گیرند ، بنابراین پس از اتمام ستاپ اولیه ، می توانید بدون نیاز به انجام هرگونه اعتبارسنجی دستی ، به همان تعداد گواهینامه درخواست کنید.
یکی دیگر از مزیت های مهم acme-dns-certbot این است که می توان از آن برای صدور گواهینامه برای سرور مجازی های جداگانه ای استفاده کرد که ممکن است در ورای بالانسر قرار داشته باشند ، یا در غیر این صورت مستقیماً از طریق HTTP قابل دسترسی نباشند. اعتبار سنجی گواهی HTTP معمول در این موارد قابل استفاده نیست ، مگر اینکه فایل های اعتبار سنجی را روی هر سرور مجازی تنظیم کنید. همچنین اگر می خواهید گواهینامه ای برای سرور مجازی هایی که از طریق اینترنت قابل دسترسی نیستند ، مانند سیستم داخلی یا محیط مرحله سازی ، صادر کنید ، ابزار Acme-dns-certbot مفید خواهد بود.
در این آموزش ، از قلاب acme-dns-certbot برای Certbot برای صدور گواهی رمزگذاری رمزگذاری با استفاده از اعتبار سنجی DNS استفاده می کنید.
پیش نیازها
برای تکمیل این آموزش ، به موارد زیر نیاز دارید:
• سرور مجازی Ubuntu 18.04 که با دنبال کردن راه اندازی اولیه سرور مجازی با اوبونتو 18.04 تنظیم شده باشد ، و شامل یک کاربر غیر ریشه sudo باشد.
• نام دامنه ای که می توانید برای آن گواهی TLS دریافت کنید ، از جمله امکان اضافه کردن سوابق DNS. در این مثال خاص ، ما از your-domain و subdomain.your-domain و همچنین *.your-domain برای یک گواهی wildcard استفاده خواهیم کرد. با این وجود در صورت لزوم می توان آن را برای دامنه ها، زیر دامنه ها یا wildcard های دیگر تنظیم کرد.
پس از آماده شدن ، به عنوان کاربر غیر ریشه خود وارد سرور مجازی شوید.
مرحله 1 – نصب Certbot
در این مرحله Certbot را نصب خواهید کرد ، این برنامه برای صدور و مدیریت گواهی های Let’s Encrypt استفاده می شود.
Certbot در مخازن رسمی اوبونتو Apt موجود است ، اما در عوض توصیه می شود از مخزن نگهداری شده توسط توسعه دهندگان Certbot استفاده کنید ، زیرا همیشه به روزترین نسخه نرم افزار را دارد.
با اضافه کردن مخزن Certbot شروع کنید:
⦁ $ sudo apt-add-repository ppa:certbot/certbot

برای قبول اعلان و افزودن مخزن جدید به سیستم خود ، باید ENTER را فشار دهید.
سپس ، بسته Certbot را نصب کنید:
⦁ $ sudo apt install certbot

پس از اتمام نصب ، می توانید بررسی کنید که Certbot با موفقیت نصب شده است:
⦁ $ certbot –version

خروجی چیزی شبیه به این خواهد بود:
Output
certbot 0.31.0

در این مرحله Certbot را نصب کردید. در مرحله بعد قلاب acme-dns-certbot را دانلود و نصب خواهید کرد.
مرحله 2 – نصب acme-dns-certbot
اکنون که برنامه پایه Certbot نصب شده است ، می توانید Acme-dns-certbot را دانلود و نصب کنید ، که این امکان را به Certbot می دهد که در حالت اعتبار سنجی DNS کار کند.
با دانلود نسخه ای از اسکریپت شروع کنید:
⦁ $ wget https://github.com/joohoi/acme-dns-certbot-joohoi/raw/master/acme-dns-auth.py

پس از اتمام دانلود ، اسکریپت را به صورت قابل اجرا علامت گذاری کنید:
⦁ $ chmod +x acme-dns-auth.py

سپس ، با استفاده از ویرایشگر متن مورد علاقه خود ، فایل را ویرایش کرده و خط اول را تنظیم کنید تا مجبور شود از پایتون 3 استفاده کند:
⦁ $ nano acme-dns-auth.py

یک عدد 3 به انتهای خط اول اضافه کنید:
acme-dns-certbot.py
#!/usr/bin/env python3
. . .
این کار به این منظور انجام میشود که اطمینان حاصل شود اسکریپت به جای پایتون نسخه 2 ، از جدیدترین نسخه پشتیبانی شده پایتون 3 استفاده می کند .
پس از تکمیل ، فایل را ذخیره کنید و ببندید.
سرانجام ، اسکریپت را در دیرکتوری Let’s Encrypt قرار دهید تا Certbot بتواند آن را لود کند:
⦁ $ sudo mv acme-dns-auth.py /etc/letsencrypt/

در این مرحله قلاب acme-dns-certbot را دانلود و نصب کردید. در مرحله بعد ، می توانید مراحل تنظیم را شروع کرده و به سمت صدور اولین گواهی خود بروید.
مرحله 3 – تنظیم acme-dns-certbot
برای شروع استفاده از acme-dns-certbot ، باید یک مجموعه مراحل اولیه تنظیم را انجام دهید و حداقل یک گواهی صادر کنید.
با اجرای Certbot شروع کنید تا مجبور شود با استفاده از اعتبار DNS صدور گواهی صادر کند. با این کار اسکریپت acme-dns-certbot اجرا می شود و روند تنظیم اولیه را شروع می کند:
⦁ $ sudo certbot certonly –manual –manual-auth-hook /etc/letsencrypt/acme-dns-auth.py –preferred-challenges dns –debug-challenges -d \*.your-domain -d your-domain

شما برای غیرفعال کردن همه ویژگی های خودکار ادغام Certbot از آرگومان – manual استفاده می کنید. در این حالت به جای نصب خودکار آن بر روی یک سرویس ، فقط یک گواهی خام صادر می کنید.
Certbot را برای استفاده از قلاب acme-dns-certbot از طریق آرگومان –manual-auth-hookپیکربندی می کنید . شما ارگومان –preferred-challenges را اجرا می کنید تا Certbot به اعتبار DNS ارجحیت دهد.
همچنین باید قبل از تلاش برای صدور گواهی ، به Certbot بگویید که مکث کند ، که این کار را با آرگومان –debug-challenges انجام می دهد. این امر به شما امکان می دهد تا رکوردهای DNS CNAME مورد نیاز Acme-dns-certbot را تنظیم کنید ، که بعداً در این مرحله تحت پوشش قرار می گیرد. بدون آرگومان –debug-challenges ، Certbot متوقف نمی شود ، بنابراین دیگر وقتی برای تغییر DNS نخواهید داشت.
به یاد داشته باشید که هر یک از نامهای دامنه مورد نظر را با استفاده از آرگومانهای -d جایگزین کنید. اگر می خواهید یک مجوز Wildcard صادر کنید ، حتما از ستاره (*) با یک بک اسلش (\) فاصله ایجاد کنید.
پس از پیروی از مراحل استاندارد Certbot ، در نهایت پیامی شبیه به پیام زیر به شما نشان داده میشود:
Output

Output from acme-dns-auth.py:
Please add the following CNAME record to your main DNS zone:
_acme-challenge.your-domain CNAME a15ce5b2-f170-4c91-97bf-09a5764a88f6.auth.acme-dns.io.

Waiting for verification…

باید رکورد مورد نیاز DNS CNAME را به پیکربندی DNS برای دامنه خود اضافه کنید. این امر کنترل زیر دامنه _acme-challenge را به سرویس ACME DNS واگذار می کند ، که به Acme-dns-certbot اجازه می دهد تا سوابق DNS مورد نیاز را برای تأیید درخواست گواهی تنظیم کند.
اگر از vpsgol به عنوان ارائه دهنده DNS خود استفاده می کنید ، می توانید رکورد DNS را در کنترل پنل خود تنظیم کنید:

توصیه می شود TTL (time-to-live) را روی حدود 300 ثانیه تنظیم کنید تا اطمینان حاصل شود که هرگونه تغییر در رکورد به سرعت منتشر می شود.
پس از تنظیم کورد DNS ، مجدداً به Certbot برگردید و ENTER را بزنید تا درخواست گواهی را تأیید کنید و مراحل صدور را انجام دهید.
این کار چند ثانیه طول می کشد ، و سپس می توانید پیامی را مشاهده کنید که گواهی صادر شده است:
Output

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

شما برای اولین بار acme-dns-certbot را اجرا کرده اید ، کرودهای DNS لازم را تنظیم کرده و یک گواهی را با موفقیت صادر کرده اید. در مرحله بعد تمدید خودکار گواهی خود را انجام می دهید.
مرحله 4 – استفاده از acme-dns-certbot
در این مرحله آخر ، از Acme-dns-certbot برای صدور گواهینامه های بیشتر و تمدید گواهینامه های موجود استفاده خواهید کرد.
در مرحله اول ، اکنون که حداقل یک گواهی را با استفاده از acme-dns-certbot صادر کرده اید ، می توانید بدون نیاز به اضافه کردن یک رکورد DNS CNAME ، همچنان به صدور گواهینامه برای همین نامهای DNS ادامه دهید. با این حال ، اگر مایل به اخذ گواهی برای یک زیر دامنه متفاوت یا نام دامنه کاملاً جدید هستید ، از شما خواسته می شود یک رکورد CNAME دیگر اضافه کنید.
به عنوان مثال ، شما می توانید یک مجوز wildcard مستقل دیگری بدون تأیید صحت مجدد صادر کنید:
⦁ $ sudo certbot certonly –manual –manual-auth-hook /etc/letsencrypt/acme-dns-auth.py –preferred-challenges dns –debug-challenges -d \*.your-domain

با این حال ، اگر می خواهید برای صدور گواهینامه برای یک زیر دامنه تلاش کنید ، از شما خواسته می شود یک رکورد CNAME برای زیر دامنه اضافه کنید:
⦁ $ sudo certbot certonly –manual –manual-auth-hook /etc/letsencrypt/acme-dns-auth.py –preferred-challenges dns –debug-challenges -d subdomain.your-domain

با این کار خروجی شبیه به ستاپ اولیه ای که در مرحله 3 انجام دادید نشان داده می شود:
Output

Please add the following CNAME record to your main DNS zone:
_acme-challenge.subdomain.your-domain CNAME 8450fb54-8e01-4bfe-961a-424befd05088.auth.acme-dns.io.

Waiting for verification…

اکنون که می توانید از Acme-dns-certbot برای صدور گواهینامه ها استفاده کنید ، خوب است که فرآیند تجدید را نیز در نظر بگیرید.
پس از پایان اعتبار گواهینامه های شما ، Certbot می تواند به طور خودکار آنها را برای شما تمدید کند:
⦁ $ sudo certbot renew

فرایند تجدید می تواند بدون تعامل با کاربر ، کار را انجام دهد ، و تمام گزینه های پیکربندی را که در هنگام راه اندازی اولیه مشخص کرده اید ، به خاطر خواهد آورد.
برای آزمایش اینکه این تمدید برقرار است، بدون نیاز به انتظار تا تاریخ انقضای بعدی ، می توانید یک dry run انجام دهید. این کار روند تجدید را بدون ایجاد هیچگونه تغییر واقعی در پیکربندی تان ، شبیه سازی می کند.
شما می توانید با استفاده از دستور تمدید استاندارد یک dry run را شروع کنید ، اما با آرگومان –dry-run :
⦁ $ sudo certbot renew –dry-run

این چیزی شبیه به خروجی زیر را خواهد داشت ، که اطمینان می دهد که روند تمدید به درستی کار می کند:
Output

Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator manual, Installer None
Renewing an existing certificate
Performing the following challenges:
dns-01 challenge for your-domain
dns-01 challenge for your-domain
Waiting for verification…
Cleaning up challenges

در این مرحله آخر ، مجوز دیگری صادر کردید و سپس فرایند تمدید خودکار را در داخل Certbot آزمایش کردید.
نتیجه
در این مقاله به منظور صدور گواهینامه ها با استفاده از اعتبار DNS ، Certbot را با Acme-dns-certbot تنظیم کرده اید. این کار امکان استفاده از گواهینامه های wildcard و همچنین مدیریت دارایی های زیادی از سرور مجازی های وب مجزا را که ممکن است در ورای یک بالانسر بار قرار داشته باشند ، ممکن می کند.
برای بروزرسانی های اسکریپت ، مراقب مخزن acme-dns-certbot باشید ، زیرا همیشه اجرای آخرین نسخه پشتیبانی شده توصیه می شود.
اگر علاقه مند به کسب اطلاعات بیشتر در مورد acme-dns-certbot هستید ، میتوانید مستندات مربوط به پروژه acme-dns را که عنصر سمت سرور مجازی Acme-dns-certbot است ، مرور کنید:
acme-dns on GitHub
نرم افزار acme-dns همچنین می تواند هاست خود باشد که اگر در محیط های با امنیت بالا یا پیچیده کار می کنید ، می تواند مفید واقع شود.
از طرف دیگر ، می توانید با بررسی بخش مربوط به مطالب رسمی RFC که شامل نحوه کار روند می باشد ، جزئیات فنی اعتبارسنجی ACME DNS را جستجو کنید.

 

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

چگونه به 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

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

ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04

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

کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04

نصب و ایمن سازی Grafana در اوبونتو 20.04

نحوه نصب Git در Ubuntu 20.04

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

سیستم های مدیریت پیکربندی به منظور ساده سازی فرایند کنترل تعداد زیادی سرور مجازی ، برای مدیران و تیم های عملیاتی طراحی شده اند. آنها به شما اجازه می دهند بسیاری از سیستم های مختلف را به صورت خودکار از یک مکان مرکزی کنترل کنید.
در حالی که بسیاری از ابزارهای مدیریت پیکربندی محبوب برای سیستمهای لینوکس مانند 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

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

ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04

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

کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04

نصب و ایمن سازی Grafana در اوبونتو 20.04

نحوه نصب Git در Ubuntu 20.04

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

مدیریت پیکربندی فرایندی است برای مدیریت تغییرات در یک سیستم به شکلی که از یکپارچگی در طول زمان اطمینان حاصل کند ، و به طور معمول شامل ابزار و فرآیندهایی است که اتوماسیون و قابلیت مشاهده را تسهیل می کند. حتی اگر این مفهوم از صنعت 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

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

ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04

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

کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04

نصب و ایمن سازی Grafana در اوبونتو 20.04

نحوه نصب Git در Ubuntu 20.04

 

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

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

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 <marutter@gmail.com>” 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

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

ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04

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

کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04

نصب و ایمن سازی Grafana در اوبونتو 20.04

نحوه نصب Git در Ubuntu 20.04

 

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

 

برچسب‌ها:

  • behnam gol mohamadi