سرور مجازی

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

  • ۰
  • ۰

Jupyter Notebook یک برنامه وب منبع باز است که به شما امکان می دهد کد تعاملی ، تجسم سازی ها و سایر موارد را ایجاد و به اشتراک بگذارید. از این ابزار می توان همراه با چندین زبان برنامه نویسی از جمله Python ، Julia ، R ، Haskell و Ruby استفاده کرد. این اغلب برای کار با داده ها ، مدل سازی آماری و یادگیری ماشین مورد استفاده قرار می گیرد.
Jupyter notebooks (یا فقط ” notebooks “) اسنادی هستند که توسط برنامه Jupyter notebook تهیه شده اند و شامل کد رایانه و عناصر متن غنی (پاراگراف ، معادلات ، ارقام ، لینک ها و …) هستند که به ارائه و به اشتراک گذاری تحقیقات قابل چاپ کمک می کنند. بنابراین می توانند ابزاری عالی برای ارائه های برگرفته از داده ها یا برنامه های مبتنی بر برنامه نویسی یا به عنوان ابزاری آموزشی باشند.
این آموزش شما را با راه اندازی Jupyter notebook برای اجرا از یک سرور مجازی Ubuntu 20.04 و همچنین نحوه اتصال و استفاده از notebook از یک دستگاه محلی از طریق تونل زنی را نشان می دهد. با پایان این راهنما ، شما قادر خواهید بود با استفاده از Jupyter notebook که روی یک سرور مجازی از راه دور اجرا می شود ، کد Python 3 را اجرا کنید.
پیش نیازها
برای تکمیل این راهنما ، باید یک نمونه سرور مجازی جدید اوبونتو 20.04 با یک فایروال اساسی و یک کاربر غیر ریشه با امتیازات sudo پیکربندی شده داشته باشید. می توانید یاد بگیرید که چگونه این برنامه را با اجرای آموزش اولیه راه اندازی سرور مجازی ما تنظیم کنید.
مرحله 1 – تنظیم پایتون
برای شروع فرآیند ، متعلقات مورد نیاز محیط برنامه نویسی پایتون را از مخازن اوبونتو نصب خواهیم کرد. اوبونتو 20.04 با پایتون 3 از پیش نصب شده است. ما بعداً از pip مدیر بسته Python برای نصب قسمت های اضافی استفاده خواهیم کرد.
ابتدا باید شاخص بسته محلی apt را به روز کنیم و سپس بسته ها را دانلود و نصب کنیم:
⦁ $ sudo apt update

در مرحله بعد ، فایلهای هدر و پایتون را که توسط برخی از متعلقات Jupyter استفاده می شود ، نصب کنید:
⦁ $ sudo apt install python3-pip python3-dev

اکنون می توانیم به تنظیم محیط مجازی Python بپردازیم که در آن Jupyter را نصب خواهیم کرد.
مرحله 2 – یک محیط مجازی Python را برای Jupyter ایجاد کنید
اکنون که پایتون 3 را داریم ، فایل های هدر آن و pip آماده هستند ، می توانیم یک محیط مجازی پایتون ایجاد کنیم تا پروژه های خود را مدیریت کنیم. ما Jupyter را در این محیط مجازی نصب خواهیم کرد.
برای این کار ابتدا به دستور virtualenv نیاز داریم که می توانیم با pip نصب کنیم.
pip را به روز کنید و بسته را با تایپ کردن دستور زیر نصب کنید:
⦁ $ sudo -H pip3 install –upgrade pip

⦁ $ sudo -H pip3 install virtualenv

پرچم -H تضمین می کند که رویکرد امنیتی ، محیط هوم را روی دیرکتوری هوم کاربر هدف تنظیم می کند.
با نصب virtualenv ، می توانیم محیط خود را شکل دهیم. یک دایرکتوری ایجاد کنید که در آن بتوانیم فایل های پروژه خود را نگه داریم. ما این را my_project_dir می نامیم ، اما شما باید از اسمی استفاده کنید که برای تان معنی دارد و روی آن کار می کنید.
در داخل دیرکتوری پروژه ، یک محیط مجازی پایتون ایجاد خواهیم کرد. به منظور استفاده از این آموزش ، آن را my_project_env خواهیم نامید اما شما باید آن را به گونه ای نامگذاری کنید که مربوط به پروژه شما باشد.
⦁ $ mkdir ~/my_project_dir

⦁ $ cd ~/my_project_dir
با این کار دایرکتوری به نام my_project_env در دایرکتوری my_project_dir شما ایجاد می شود. در داخل ، یک نسخه محلی Python و یک نسخه محلی از pip را نصب می کند. ما می توانیم از این روش برای نصب و پیکربندی یک محیط جدا شده Python برای Jupyter استفاده کنیم.
قبل از نصب Jupyter ، باید محیط مجازی را فعال کنیم. می توانید این کار را با تایپ کردن دستور زیر انجام دهید:
⦁ $ source my_project_env/bin/activate

اعلان شما باید تغییر کند تا نشان دهد که اکنون در یک محیط مجازی پایتون فعالیت می کنید. خط فرمان شما اکنون چیزی شبیه به این را خواهد بود: (my_project_env)user@host:~/my_project_dir$
در این مرحله ، شما آماده نصب Jupyter در این محیط مجازی هستید.
مرحله 3 – نصب Jupyter
با فعال بودن محیط مجازی ، Jupyter را با نمونه محلی pip نصب کنید.
توجه: هنگامی که محیط مجازی فعال می شود (هنگامی که اعلان شما پیش از خودmy_project_env را دارد ، به جای pip3 از pip استفاده کنید ، حتی اگر از پایتون 3 استفاده می کنید. کپی محیط مجازی ابزار همیشه بدون در نظر گرفتن نسخه پایتون ، pip نامگذاری میشود.
⦁ (my_project_env)Sammy@your_server:~/my_project_dir$ pip install jupyter

در این مرحله ، شما با موفقیت همه نرم افزارهای مورد نیاز برای اجرای Jupyter را نصب کرده اید. اکنون می توانیم سرور مجازی notebook را شروع کنیم.
مرحله 4 – Jupyter notebook را اجرا کنید
اکنون همه موارد لازم برای اجرای Jupyter notebook را دارید! برای اجرای آن ، دستور زیر را اجرا کنید:
⦁ (my_project_env)Sammy@your_server:~/my_project_dir$ jupyter notebook

یک گزارش از فعالیتهای Jupyter notebook به ترمینال چاپ می شود. هنگامی که Jupyter notebook را اجرا می کنید ، روی یک شماره پورت خاص اجرا می شود. اولین notebook که اجرا می کنید از پورت 8888 استفاده می کند. برای بررسی شماره پورت خاصی که Jupyter Notebook روی آن در حال اجرا است ، به خروجی فرمان مورد استفاده برای شروع آن مراجعه کنید:
Output
[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret
[I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir
[I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at:
[I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
[I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser.
[C 21:23:21.361 NotebookApp]

Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72

اگر Jupyter notebook را روی یک رایانه محلی اجرا می کنید (نه بر روی سرور مجازی) ، می توانید به URL نمایش داده شده بروید تا به Jupyter Notebook بروید. اگر Jupyter notebook را بر روی یک سرور مجازی اجرا می کنید ، باید همانطور که در بخش بعدی بیان شده است ، با استفاده از تونل سازی SSH به سرور مجازی وصل شوید.
در این مرحله ، می توانید اتصال SSH را باز نگه دارید و Jupyter notebook را در حال اجرا نگه دارید یا می توانید پس از تنظیم تونل سازی SSH ، از برنامه خارج شوید و مجدداً آن را اجرا کنید. بیایید فرآیند Jupyter notebook را متوقف کنیم. بعد از تنظیم تونل سازی SSH دوباره آن را اجرا خواهیم کرد. برای متوقف کردن فرآیند Jupyter Notebook ، CTRL + C را فشار دهید ، Y را تایپ کنید و سپس ENTER را بزنید. خروجی زیر نمایش داده می شود:
Output
[C 21:28:28.512 NotebookApp] Shutdown confirmed
[I 21:28:28.512 NotebookApp] Shutting down 0 kernels

اکنون تونل SSH را تنظیم خواهیم کرد تا بتوانیم به notebook دسترسی پیدا کنیم.
مرحله 5 – با استفاده از تنظیم SSH به سرور مجازی متصل شوید
در این بخش نحوه اتصال به رابط وب Jupyter notebook با استفاده از تونل زنی SSH را نشان خواهیم داد. از آنجا که Jupyter notebook روی پورت خاصی روی سرور مجازی اجرا می شود (مانند: 8888 ،: 8889 و غیره) ، تونل سازی SSH شما را قادر می سازد به صورت ایمن به پورت سرور مجازی وصل شوید.
دو بخش زیر نحوه ایجاد یک تونل SSH از 1) مک یا لینوکس یا 2) ویندوز را شرح می دهد. لطفاً برای رایانه محلی خود به بخش فرعی مربوطه مراجعه کنید.
تنظیم SSH با Mac یا Linux
اگر از کامپیوتر محلی Mac یا Linux استفاده می کنید ، مراحل ایجاد یک تونل SSH مشابه استفاده از SSH برای ورود به سرور مجازی راه دور است ، به جز اینکه در فرمان ssh پارامترهای دیگری وجود دارد. در این زیر مجموعه پارامترهای اضافی مورد نیاز در فرمان ssh برای تونل زنی موفقیت آمیز ارائه خواهد شد.
تونل زنی SSH با اجرای دستور SSH زیر در یک پنجره ترمینال محلی جدید قابل انجام است:
⦁ $ ssh -L 8888:localhost:8888 your_server_username@your_server_ip

دستور ssh اتصال SSH را باز می کند ، اما -L مشخص می کند که پورت داده شده در هاست محلی (کلاینت) باید به میزبان و پورت داده شده در سمت از راه دور (سرور مجازی) ارسال شود. این بدان معنی است که هر آنچه در شماره پورت دوم (به عنوان مثال 8888) روی سرور مجازی اجرا می شود ، در اولین شماره پورت (به عنوان مثال 8888) در رایانه محلی شما ظاهر می شود.
به صورت اختیاری پورت 8888 را به یکی از انتخاب های خود تغییر دهید تا از استفاده از پورتی که قبلاً توسط یک فرآیند دیگر استفاده شده است خودداری کنید.
server_username نام کاربری شما (به عنوان مثال Sammy) در سرور مجازی ی است که شما ایجاد کرده اید و your_server_ip آدرس IP سرور مجازی شماست.
به عنوان مثال ، برای نام کاربری sammy و آدرس سرور مجازی 203.0.113.0 ، این دستور عبارت است از:
⦁ $ ssh -L 8888:localhost:8888 sammy@203.0.113.0

اگر بعد از اجرای دستور ssh-L خطایی ظاهر نشد ، می توانید به محیط برنامه نویسی خود بروید و Jupyter notebook را اجرا کنید:
(my_project_env)Sammy@your_server:~/my_project_dir$ notebook
خروجی را با URL دریافت خواهید کرد. از یک مرورگر وب در دستگاه محلی خود ، رابط وب Jupyter Notebook را با URL که با http: // localhost: 8888 شروع می شود ، باز کنید. اطمینان حاصل کنید که شماره توکن (token) درج شده است ، یا وقتی در http: // localhost: 8888 از شما خواسته شد رشته شماره توکن را وارد کنید.
تونل زنی SSH با ویندوز و Putty
اگر از ویندوز استفاده می کنید ، می توانید با استفاده از Putty یک تونل SSH ایجاد کنید.
همانطور که نشان داده شده است ابتدا آدرس سرور مجازی یا آدرس IP را به عنوان نام میزبان وارد کنید:

سپس ، برای بازکردن منو ، روی SSH در پایین صفحه سمت چپ کلیک کرده و سپس روی Tunnels کلیک کنید. برای دسترسی به Jupyter در دستگاه محلی خود ، شماره پورت محلی را که می خواهید استفاده کنید وارد کنید. 8000 یا بیشتر را انتخاب کنید تا از پورت های استفاده شده توسط سایر سرویس ها استفاده نکنید ، و مقصد را localhost:8888 تعیین کنید که 8888 تعداد پورتی است که Jupyter notebook در آن کار می کند.
اکنون روی دکمه Add کلیک کنید و پورت ها باید در لیست Forwarded ports ظاهر شوند:

در آخر ، بر روی دکمه Open کلیک کنید تا از طریق SSH به سرور مجازی وصل شوید و پورت های مورد نظر را تونل بزنید. برای اتصال به Jupyter notebook که روی سرور مجازی اجرا می شود ، به http: // localhost: 8000 (یا هر پورتی که انتخاب کردید) در یک مرورگر وب بروید. اطمینان حاصل کنید که شماره توکن درج شده است ، یا وقتی در http: // localhost: 8000 از شما خواسته شده است رشته شماره توکن را وارد کنید.
مرحله 6 – استفاده از Jupyter notebook
در این بخش به اصول استفاده از Jupyter notebook می پردازیم. اگر در حال حاضر Jupyter notebook را اجرا نمی کنید ، آن را با دستور Jupyter notebook شروع کنید.
اکنون باید با استفاده از یک مرورگر وب به آن متصل شوید. Jupyter notebook ابزاری بسیار قدرتمند با ویژگی های بسیار است. در این بخش چند ویژگی اساسی برای تشریح شما در استفاده از notebook ارائه شده است. Jupyter notebook تمام فایل ها و پوشه های موجود در دایرکتوری را که از آن استفاده می شود نشان می دهد ، بنابراین وقتی در حال کار روی یک پروژه هستید ، حتماً آن را از دیرکتوری پروژه شروع کنید.
برای ایجاد یک فایل notebook جدید ، از منوی کشویی بالا سمت راست New > Python 3 را انتخاب کنید:

یک notebook را باز می کند. اکنون می توانیم کد پایتون را در سلول اجرا کنیم یا سلول را به نشانه گذاری تغییر دهیم. به عنوان مثال ، با کلیک کردن بر روی Cell> Cell Type> Markdown از نوار پیمایش بالا ، اولین سلول را برای پذیرش Markdown تغییر دهید. اکنون می توانیم با استفاده از Markdown یادداشت هایی بنویسیم و حتی معادلات را با قرار دادن آنها بین نمادهای $ $ در LaTeX بگنجانیم. به عنوان مثال ، پس از تغییر آن به نشانه گذاری ، موارد زیر را در سلول تایپ کنید:
# First Equation

Let us now implement the following equation:
$$ y = x^2$$

where $x = 2$

برای تبدیل علامت گذاری به متن غنی ، کلیدهای CTRL و ENTER را فشار دهید. باید خروجی مشابه زیر دریافت کنید:

می توانید از سلول های علامت گذاری به عنوان یادداشت استفاده کرده و کد خود را مستند کنید. بیایید آن معادله را اجرا کنیم و نتیجه را چاپ کنیم. روی سلول بالا کلیک کنید ، سپس کلیدهای ALT و ENTER را با هم فشار دهید تا یک سلول در زیر آن اضافه شود. کد زیر را در سلول جدید وارد کنید.
x = 2
y = x**2
print(y)

برای اجرای کد ، CTRL + ENTER را فشار دهید. نتایج زیر را دریافت خواهید کرد:

اکنون توانایی وارد کردن ماژول ها و استفاده از notebook را همانطور که می خواهید با هر محیط توسعه Python دیگر خواهید داشت!
نتیجه
اکنون می توانید با استفاده از Jupyter notebook کد پایتون و یادداشت های قابل تکرار را در Markdown بنویسید. برای بازدید سریع از Jupyter Notebooاز داخل رابط ، و کسب اطلاعات بیشتر Help > User Interface Tour را از منوی پیمایش بالا انتخاب کنید.
از اینجا ، می توانید با خواندن مقاله تجزیه و تحلیل داده ها و تجسم سازی با pandas و Jupyter notebook در پایتون 3 ، شروع به تجزیه و تحلیل داده ها و تجسم سازی کنید.

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

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

Jitsi Meet یک برنامه کنفرانس ویدئویی منبع باز مبتنی بر WebRTC است. سرور مجازی Jitsi Meet اتاقهای کنفرانس ویدئویی چند نفره را در اختیار شما قرار می دهد که می توانید با استفاده از تنها یک مرورگر به آنها دسترسی داشته باشید و عملکرد قابل مقایسه ای را با یک گفتگوی کنفرانسی مثل zoom یا skype ارائه دهید. مزیت جیتسی کنفرانس این است که تمام داده های شما فقط از طریق سرور مجازی شما عبور می کند ، و رمزگذاری TLS به صورت end-to-end تضمین می کند که هیچ کس نمی تواند تماس را شنود کند. با وجود Jitsi می توانید مطمئن باشید که اطلاعات خصوصی شما به همان صورت باقی می مانند.
در این آموزش ، سرور مجازی Jitsi Meet را روی Debian 10 نصب و پیکربندی خواهید کرد. پیکربندی پیش فرض به هر کسی امکان ایجاد یک اتاق کنفرانس جدید را می دهد. اما برای سرور مجازی که در اینترنت در دسترس عموم باشد ایده آل نیست بنابراین شما Jitsi Meet را نیز به گونه ای پیکربندی میکنید تا فقط کاربران ثبت نام شده بتوانند اتاق های کنفرانس جدید ایجاد کنند. بعد از ایجاد اتاق کنفرانس ، هر کاربر می تواند عضویت داشته باشد ، مادامی که آدرس منحصر به فرد و رمز اختیاری را داشته باشد.
پیش نیازها
قبل از شروع این راهنما به موارد زیر نیاز خواهید داشت:
• یک سرور مجازی Debian 10 که با دنبال کردن راهنمای ستاپ اولیه سرور مجازی Debian 10 راه اندازی شده باشد، و شامل کاربر غیر ریشه فعال با sudo باشد. اندازه سرور مجازی مورد نیاز شما بیشتر به پهنای باند موجود و تعداد شرکت کننده ای که انتظار دارید از سرور مجازی استفاده کنند بستگی دارد. جدول زیر ایده های لازم را به شما ارائه می دهد.
• نام دامنه پیکربندی شده برای ارجاع به سرور مجازی تان. در سراسر این راهنما ، از نام دامنه jitsi.your-domain استفاده می شود.
هنگامی که شما یک سرور مجازی را برای اجرای نمونه Jitsi Meet انتخاب می کنید ، باید منابع مورد نیاز سیستم برای میزبانی اتاق های کنفرانس را در نظر بگیرید. اطلاعات معیار زیر از یک ماشین مجازی تک هسته ای با استفاده از تنظیمات ویدیویی با کیفیت بالا جمع آوری شده است:

CPU پهنای باند سرور مجازی
2 شرکت کننده 3% 30Kbps Up, 100Kbps Down
3 شرکت کننده 15% 7Mbps Up, 6.5Mbps Down

پرش در استفاده از منابع بین دو تا سه شرکت کننده به این دلیل است که Jitsi داده های تماس را مستقیماً بین کلاینت ها در صورت وجود دو نفر، هدایت می کند. هنگامی که بیش از دو کلاینت وجود دارند ، داده های تماس از طریق سرور مجازی Jitsi Meet هدایت می شوند.
مرحله 1 – تنظیم نام هاست سیستم
در این مرحله ، نام هاست سیستم را تغییر میدهید تا با نام دامنه ای که قصد دارید برای مثال Jitsi Meet خود استفاده کنید مطابقت داشته باشد و آن نام هاست را به IP localhost ، 127.0.0.1 تغییر می دهید. Jitsi Meet هنگام نصب و تولید فایل های پیکربندی خود از هر دو تنظیمات استفاده می کند.
ابتدا نام هاست سیستم را روی نام دامنه ای که برای نمونه Jitsi خود استفاده خواهید کرد تنظیم کنید. دستور زیر نام هاست فعلی را تنظیم کرده و /etc/hostname را تغییر میدهد که نام هاست سیستم را در بین ریبوت ها نگه میدارد:
⦁ $ sudo hostnamectl set-hostname jitsi.your-domain

فرمانی که اجرا کردید به شرح زیر است:
⦁ hostnamectl ابزاری است از مجموعه ابزارهای systemd برای مدیریت نام هاست سیستم استفاده میکند.
⦁ set-hostname نام هاست سیستم را تنظیم می کند.
با اجرای دستور زیر بررسی کنید که این کار موفقیت آمیز بوده است:
⦁ $ hostname

با این کار نام هاست شما با دستور hostnamectl برمی گردد:
Output
jitsi.your-domain

در مرحله بعد ، نگاشت محلی از نام هاست سرور مجازی را بر روی حلقه بازگشت آدرس IP ، 127.0.0.1 تنظیم خواهید کرد. این کار را با باز کردن فایل / etc / hosts با ویرایشگر متن انجام دهید:
⦁ $ sudo nano /etc/hosts

سپس خط زیر را اضافه کنید:
/etc/hosts
127.0.0.1 jitsi.your-domain

نگاشت نام دامنه سرور مجازی Jitsi Meet روی 127.0.0.1 به سرور مجازی Jitsi Meet شما اجازه می دهد تا از چندین فرآیند شبکه ای استفاده کند که اتصالات محلی را از یکدیگر در آدرس IP 127.0.0.1 قبول می کنند. این اتصالات با گواهی TLS که در نام دامنه شما ثبت شده است ، تأیید و رمزگذاری می شوند. نگاشت محلی نام دامنه روی 127.0.0.1 امکان استفاده از گواهینامه TLS برای این اتصالات شبکه محلی را فراهم می آورد.
فایل خود را ذخیره کنید و از آن خارج شوید.
اکنون سرور مجازی شما دارای نام هاست است که Jitsi برای نصب به آن نیاز دارد. در مرحله بعد ، پورت های فایروال مورد نیاز Jitsi و نصب کننده گواهینامه TLS را باز خواهید کرد.
مرحله 2 – پیکربندی فایروال
هنگامی که راهنمای راه اندازی اولیه سرور مجازی با Debian 10 را دنبال کردید ، فایروال UFW را فعال کرده و پورت SSH را باز نموده اید. سرور مجازی Jitsi به برخی از پورت های باز شده نیاز دارد تا بتواند با کلاینت ها ارتباط برقرار کند. همچنین ، فرایند نصب TLS نیاز به پورت باز دارد تا بتواند درخواست مجوز را تأیید کند.
پورت هایی که باز خواهید کرد به شرح زیر است:
⦁ 80 / tcp که در درخواست گواهینامه TLS مورد استفاده قرار میگیرد.
⦁ 443 / TCP برای صفحه وب ایجاد اتاق کنفرانس استفاده میشود.
⦁ 4443 / tcp ، 10000 / udp که برای انتقال و دریافت ترافیک تماس رمزگذاری شده استفاده می شود.
دستورات ufw زیر را برای باز کردن این پورت ها اجرا کنید:
⦁ $ sudo ufw allow 80/tcp

⦁ $ sudo ufw allow 443/tcp

⦁ $ sudo ufw allow 4443/tcp

⦁ $ sudo ufw allow 10000/udp

بررسی کنید که همه آنها با دستور ufw status اضافه شده باشند:
⦁ $ sudo ufw status

در صورت باز بودن این پورت ها ، خروجی زیر را مشاهده خواهید کرد:
Output
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
4443/tcp ALLOW Anywhere
10000/udp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
4443/tcp (v6) ALLOW Anywhere (v6)
10000/udp (v6) ALLOW Anywhere (v6)

اکنون سرور مجازی آماده نصب Jitsi است که در مرحله بعدی آن را کامل خواهید کرد.
مرحله 3 – نصب Jitsi Meet
در این مرحله مخزن پایدار Jitsi را به سرور مجازی خود اضافه می کنید و سپس بسته Jitsi Meet را ز آن مخزن نصب می کنید. با این کار اطمینان حاصل می شود که همیشه آخرین بسته پایدار Jitsi Meet را اجرا می کنید.
ابتدا بسته gnupg را نصب کنید که سیستم را قدر میسازد کلیدهای کریپتوگرافیک GPG را مدیریت کند:
⦁ $ sudo apt install gnupg

سپس با ابزار دانلود wget کلید Jitsi GPG را دانلود میکنیم
⦁ $ wget https://download.jitsi.org/jitsi-key.gpg.key

مدیر بسته apt از این کلید GPG برای اعتبارسنجی بسته هایی که از مخزن Jitsi دانلود می کنید ، استفاده خواهد کرد.
اکنون ، کلید GPG را که با استفاده از ابزار key-apt روی رینگ apt دانلود کرده اید، اضافه نمایید:
⦁ $ sudo apt-key add jitsi-key.gpg.key

اکنون می توانید فایل کلید GPG را حذف کنید زیرا دیگر نیازی به آن نیست:
⦁ $ rm jitsi-key.gpg.key

اکنون با ایجاد یک فایل منبع جدید که حاوی مخزن Jitsi است ، مخزن Jitsi را به سرور مجازی خود اضافه می کنید. با ویرایشگر خود فایل جدید را باز و ایجاد کنید:
⦁ $ sudo nano /etc/apt/sources.list.d/jitsi-stable.list

این خط را به فایل مخزن Jitsi اضافه کنید:
/etc/apt/sources.list.d/jitsi-stable.list
deb https://download.jitsi.org stable/
ویرایشگر خود را ذخیره کرده و از آن خارج شوید.
سرانجام برای جمع آوری لیست بسته ها از مخزن Jitsi یک به روزرسانی سیستم انجام دهید و سپس بسته jitsi-meet را نصب کنید:
⦁ $ sudo apt update

⦁ $ sudo apt install jitsi-meet

در حین نصب jitsi-meet از شما خواسته می شود نام دامنه (مثلاً jitsi.your-domain) را که می خواهید برای نمونه Jitsi Meet خود استفاده کنید وارد کنید.

توجه: شما مکان نما را از قسمت نام هاست حرکت می دهید تا دکمه <OK> را با کلید TAB هایلایت کنید. هنگامی که <OK> هایلایت شد برای ارسال نام هاست ، ENTER را فشار دهید.

سپس کادر جعبه گفتگوی جدیدی به شما نشان داده می شود که میپرسد آیا می خواهید Jitsi یک گواهی TLS امضا شده را استفاده کند یا از یک گواهی موجود که خودتان در اختیار دارید استفاده نماید:

اگر گواهی TLS برای دامنه Jitsi ندارید ، اولین مورد یعنی Generate a new self-signed certificate را انتخاب کنید.
نمونه Jitsi Meet شما اکنون با استفاده از گواهی TLS خود امضا شده نصب شده است. این باعث اخطار مرورگر می شود ، بنابراین در مرحله بعدی یک گواهی TLS امضا شده دریافت خواهید کرد.
مرحله 4 – اخذ گواهینامه TLS امضا شده
Jitsi Meet از گواهینامه های TLS برای رمزگذاری ترافیک تماس استفاده می کند تا هیچ کس نتواند هنگام استفاده از اینترنت به تماس شما گوش کند. گواهینامه های TLS همان گواهینامه هایی هستند که توسط وب سایت ها برای فعال کردن آدرس های HTTPS استفاده می شوند.
Jitsi Meet برنامه ای را برای دانلود خودکار گواهی TLS برای نام دامنه شما تهیه می نماند که از ابزار Certbot استفاده می کند. قبل از اجرای اسکریپت نصب گواهی ، باید این برنامه را نصب کنید.
ابتدا ، بسته ی certbot را با دستور زیر نصب کنید:
⦁ $ sudo apt install certbot

اکنون سرور مجازی شما آماده اجرای برنامه نصب گواهینامه TLS تهیه شده توسط Jitsi Meet است:
⦁ $ sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

هنگامی که اسکریپت را اجرا می کنید ، اعلان زیر برای آدرس ایمیل نشان داده می شود:
Output
————————————————————————-
This script will:
– Need a working DNS record pointing to this machine(for domain jitsi.example.com)
– Download certbot-auto from https://dl.eff.org to /usr/local/sbin
– Install additional dependencies in order to request Let’s Encrypt certificate
– If running with jetty serving web content, will stop Jitsi Videobridge
– Configure and reload nginx or apache2, whichever is used
– Configure the coturn server to use Let’s Encrypt certificate and add required deploy hooks
– Add command in weekly cron job to renew certificates regularly

You need to agree to the ACME server’s Subscriber Agreement (https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf)
by providing an email address for important account notifications
Enter your email and press [ENTER]:

این آدرس ایمیل به صادرکننده گواهینامه https://letsencrypt.org ارسال می شود و برای اطلاع دادن به شما درباره امنیت و سایر موارد مرتبط با گواهینامه TLS استفاده می شود. برای ادامه نصب باید یک آدرس ایمیل را وارد کنید. پس از آن نصب بدون هیچ گونه اعلان دیگری انجام می شود.
پس از اتمام ، نمونه Jitsi Meet شما پیکربندی می شود تا از یک گواهی TLS امضا شده برای نام دامنه خود استفاده کنید. تمدید گواهینامه به طور خودکار اتفاق می افتد زیرا نصب کننده، یک اسکریپت تجدید را در /etc/cron.weekly/letsencrypt-renew قرار داده است که هر هفته اجرا می شود.
سرور مجازی Jitsi Meet شما اکنون آماده و در حال اجرا است و برای آزمایش در دسترس میباشد. یک مرورگر باز کرده و نام دامنه خود را به آن معرفی کنید. قادر خواهید بود یک اتاق کنفرانس جدید ایجاد کنید و دیگران را نیز دعوت کنید تا به شما بپیوندند.
تنظیمات پیش فرض برای Jitsi Meet این گونه است که هرکسی که صفحه اصلی سرور مجازی Jitsi Meet شما را مشاهده می کند می تواند یک اتاق کنفرانس جدید ایجاد کند. با این کار از منابع سیستم سرور مجازی شما برای اجرای اتاق کنفرانس استفاده می شود و به خاطر استفاده کاربران غیرمجاز مطلوب نیست. در مرحله بعد ، شما نمونه Jitsi Meet را به گونه ای پیکربندی می کنید که فقط کاربران عضو شده قادر به ایجاد اتاق کنفرانس باشند.
مرحله 5 – ایجاد قفل کنفرانس
در این مرحله ، شما سرور مجازی Jitsi Meet را به گونه ای پیکربندی می کنید تا فقط کاربران ثبت نام شده بتوانند اتاق کنفرانس ایجاد کنند. فایل هایی که ویرایش می کنید توسط نصب کننده ایجاد شده اند و با نام دامنه شما پیکربندی میشوند.
متغیر your_domain به جای نام دامنه در مثالهای زیر استفاده خواهد شد.
ابتدا ، sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua را با یک ویرایشگر متن باز کنید:
⦁ $ sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua

این خط را ویرایش کنید:
/etc/prosody/conf.avail/your_domain.cfg.lua

authentication = “anonymous”

به صورت زیر:
/etc/prosody/conf.avail/your_domain.cfg.lua

authentication = “internal_plain”

این پیکربندی به Jitsi Meet می گوید تا قبل از اجازه ایجاد اتاق کنفرانس توسط یک بازدید کننده جدید ، مجبور به تأیید اعتبار نام کاربری و رمز عبور شود.
سپس در همان فایل قسمت زیر را به انتهای فایل اضافه کنید:
/etc/prosody/conf.avail/your_domain.cfg.lua

VirtualHost “guest.your_domain”
authentication = “anonymous”
c2s_require_encryption = false

این پیکربندی به کاربران ناشناس اجازه می دهد تا به اتاق های کنفرانس که توسط یک کاربر معتبر ایجاد شده اند بپیوندند. با این حال ، میهمان باید یک آدرس منحصر به فرد و رمز عبور اختیاری برای ورود به اتاق داشته باشد.
در اینجا ، شما guest. را به جلوی نام دامنه خود اضافه کردید به عنوان مثال ، برای jitsi.your-domain، guest.jitsi.your-domain را قرار دهید. نام هاست guest. فقط به صورت داخل توسط Jitsi Meet استفاده می شود. شما هرگز آن را وارد مرورگر نخواهید کرد و یا نیازی به ایجاد رکورد DNS برای آن ندارید.
فایل پیکربندی دیگری را در /etc/jitsi/meet/your_domain-config.js با یک ویرایشگر متن باز کنید:
⦁ $ sudo nano /etc/jitsi/meet/your_domain-config.js

این خط را ویرایش کنید:
/etc/jitsi/meet/your_domain-config.js

// anonymousdomain: ‘guest.example.com’,

تا به این صورت درآید:
/etc/jitsi/meet/your_domain-config.js

anonymousdomain: ‘guest.your_domain’,

مجدداً ، با استفاده از نام هاست guest.your_domain که قبلاً از این پیکربندی استفاده کرده اید ، به Jitsi می گوید چه نام هاست داخلی را برای مهمانان تأیید نشده استفاده کند.
سپس ، /etc/jitsi/jicofo/sip-communicator.properties را باز کنید:
⦁ $ sudo nano /etc/jitsi/jicofo/sip-communicator.properties

و خط زیر را برای تکمیل تغییرات پیکربندی اضافه کنید:
/etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.URL=XMPP:your_domain

این پیکربندی یکی از فرایندهای Jitsi Meet را به سرور مجازی محلی نشان می دهد که تأیید اعتبار کاربر را که اکنون لازم است انجام می دهد.
نمونه Jitsi Meet شما اکنون پیکربندی شده است و فقط کاربران ثبت نام شده می توانند اتاق کنفرانس ایجاد کنند. بعد از ایجاد یک اتاق کنفرانس ، هر کسی می تواند بدون نیاز به کاربر ثبت نام شده به آن بپیوندد. تنها آنچه نیاز دارند آدرس اتاق کنفرانس منحصر به فرد و رمزعبور اختیاری است که توسط فردی که اتاق را ایجاد کرده تنظیم شده است.
اکنون که Jitsi Meet پیکربندی شده است و برای ایجاد اتاق نیاز به کاربران معتبر دارد ، باید این کاربران و رمزهای عبور خود را ثبت کنید. برای این کار از ابزار prosodyctl استفاده خواهید کرد.
دستور زیر را برای افزودن کاربر به سرور مجازی خود اجرا کنید:
⦁ $ sudo prosodyctl register user your_domain password

کاربری که شما در اینجا اضافه می کنید کاربر سیستم نیست. آنها فقط قادر به ایجاد یک اتاق کنفرانس هستند و از طریق SSH قادر به ورود به سرور مجازی شما نیستند.
در آخر ، مراحل Jitsi Meet را ریستارت کنید تا پیکربندی جدید لود شود:
⦁ $ sudo systemctl restart prosody.service

⦁ $ sudo systemctl restart jicofo.service

⦁ $ sudo systemctl restart jitsi-videobridge2.service

⦁ $ sudo systemctl restart nginx

اکنون Jitsi Meet نمونه هنگام ایجاد یک اتاق کنفرانس ، نام کاربری و رمزعبور را با جعبه گفتگو درخواست می کند.

سرور مجازی Jitsi Meet شما اکنون تنظیم و ایمن شده است.
نتیجه
در این مقاله ، شما سرور مجازی Jitsi Meet را مستقر کرده اید که می توانید از آنها برای میزبانی اتاق های کنفرانس ویدیویی ایمن و خصوصی استفاده کنید. می توانید نمونه Jitsi Meet خود را با دستورالعمل Jitsi Meet Wiki گسترش دهید.

 

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

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

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 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
  • ۰
  • ۰

Grafana یک ابزار منبع باز تجسم و نظارت بر داده ها است که با داده های پیچیده از منابعی مانند Prometheus ، InfluxDB ، Graphite و ElasticSearch ادغام می شود. Grafana به شما امکان می دهد تا هشدارها ، اعلان ها و فیلترهای موقت را برای داده های خود ایجاد کنید و در عین حال با هم تیمی های خود از طریق مشخصه های به اشتراک گذاری داخلی آسانتر همکاری کنید.
در این آموزش Grafana را نصب کرده و با یک گواهی SSL و یک پروکسی معکوس Nginx آن را ایمن خواهید کرد. پس از راه اندازی Grafana ، می توانید گزینه احراز هویت کاربر را از طریق GitHub پیکربندی کنید ، که به شما امکان می دهد مجوزهای تیم خود را بهتر سازماندهی کنید.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
⦁ یک سرور مجازی  Ubuntu 20.04 که با دنبال کردن راهنمای ستاپ اولیه سرور مجازی برای Ubuntu 20.04 نصب شده باشد، و شامل یک کاربر غیر ریشه با امتیازات sudo و فایروال تنظیم شده با ufw باشد.
⦁ نام دامنه کاملاً ثبت شده. در کل این آموزش از your_domain استفاده می شود. می توانید نام دامنه را در Namecheap خریداری کنید ، به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید.
⦁ سوابق DNS زیر برای سرور مجازی شما تنظیم شده باشد. برای جزئیات بیشتر در مورد چگونگی افزودن آنها می توانید نحوه تنظیم نام میزبان با vpsgol را دنبال کنید.
⦁ یک رکورد A با your_domain که آدرس IP عمومی سرور مجازی شما نشان می دهد.
⦁ یک رکورد A با www.your_domain که به آدرس IP عمومی سرور مجازی شما اشاره کند.
⦁ Nginx که با پیروی از آموزش نحوه نصب Nginx در اوبونتو 20.04 نصب شده باشد، شامل بلوک سرور مجازی برای دامنه تان باشد.
⦁ بلوک سرور مجازی Nginx که با Let’S Encrypt پیکربندی شده باشد ، که می توانید با دنبال کردن چگونگی ایمن سازی Nginx با Let’s Encrypt در Ubuntu 20.04 تنظیم کنید.
⦁ به صورت اختیاری ، برای تنظیم تأیید هویت GitHub ، به یک حساب GitHub مرتبط با یک سازمان نیاز دارید.
مرحله 1 – نصب Grafana
در این مرحله اول ، Grafana را روی سرور مجازی Ubuntu 20.04 خود نصب خواهید کرد. شما می توانید Grafana را با دانلود مستقیم آن از وب سایت رسمی آن یا از طریق مخزن APT ، نصب کنید. از آنجا که یک مخزن APT نصب و مدیریت به روزرسانی های Grafana را آسان تر می کند ، از این روش در این آموزش استفاده خواهید کرد.
کلید Grafana GPG را با wget دانلود کنید ، سپس خروجی را به apt-key متصل کنید. با این کار کلید به لیست نصب کلیدهای قابل اعتماد APT شما اضافه خواهد شد که به شما امکان می دهد بسته Grafana امضا شده توسط GPG را دانلود و تأیید کنید.
⦁ $ wget -q -O – https://packages.grafana.com/gpg.key | sudo apt-key add –

در این دستور ، گزینه -q پیام به روزرسانی وضعیت را برای wget خاموش می کند ، و -O فایلی را که دانلود کرده اید به ترمینال خروجی می فرستد. این دو گزینه اطمینان حاصل می کنند که فقط محتویات فایل دانلود شده به کلید apt-key اتصال یافته است.
سپس ، مخزن Grafana را به منابع APT خود اضافه کنید:
⦁ $ sudo add-apt-repository “deb https://packages.grafana.com/oss/deb stable main”

حافظه نهان APT خود را برای به روزرسانی لیست های بسته بندی ریفرش کنید:
⦁ $ sudo apt update

اکنون میتوانید نصب را ادامه دهید
⦁ $ sudo apt install grafana

پس از نصب Grafana ، از systemctl برای راه اندازی سرور مجازی Grafana استفاده کنید:
⦁ $ sudo systemctl start grafana-server

سپس ، با بررسی وضعیت سرویس ، تأیید کنید که Grafana در حال اجرا است:
⦁ $ sudo systemctl status grafana-server

خروجی مشابه این دریافت خواهید کرد:
Output
● grafana-server.service – Grafana instance
Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2020-05-21 08:08:10 UTC; 4s ago
Docs: http://docs.grafana.org
Main PID: 15982 (grafana-server)
Tasks: 7 (limit: 1137)

این خروجی شامل اطلاعاتی در مورد فرآیند Grafana ، از جمله وضعیت آن ، شناساگر اصلی فرآیند (PID) و موارد دیگر می باشد. active (running) نشان می دهد که روند صحیح در حال اجرا است.
در آخر ، سرویس را فعال کنید تا به طور خودکار Grafana را از بوت شروع کند:
⦁ $ sudo systemctl enable grafana-server

خروجی زیر را دریافت خواهید کرد:
Output
Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.

این خروجی تأیید می کند که systemd  ، پیوندهای سمبولیک لازم را به autostart Grafana ایجاد کرده است.
Grafana هم اکنون نصب و آماده استفاده است. در مرحله بعد ، اتصال خود را با Grafana با یک پروکسی معکوس و گواهی SSL ایمن خواهید کرد.
مرحله 2 – تنظیم پروکسی معکوس
استفاده از گواهینامه SSL اطمینان حاصل می کند که داده های شما با رمزگذاری اتصال به و از Grafana ایمن هستند. اما برای استفاده از این ارتباط ، ابتدا لازم است Nginx را به عنوان یک پروکسی معکوس برای Grafana پیکربندی کنید.
پیکربندی Nginx که هنگام ستاپ بلوک سرور مجازی Nginx با Let’s Encrypt در پیش نیازها ایجاد کردید را باز کنید. می توانید از هر ویرایشگر متنی استفاده کنید ، اما برای این آموزش از nano استفاده خواهیم کرد:
⦁ $ sudo nano /etc/nginx/sites-available/your_domain

بلوک زیر را جای دهید:
/etc/nginx/sites-available/your_domain

location / {
try_files $uri $uri/ =404;
}

از آنجا که قبلاً Nginx را تنظیم کرده اید تا از طریق SSL ارتباط برقرار کند و از آنجا که تمام ترافیک وب به سرور مجازی شما از طریق Nginx عبور می کند ، فقط باید به Nginx بگویید که کلیه درخواست ها را به Grafana ارسال کند ، که بصورت پیش فرض در پورت 3000 اجرا می شود.
خط try_files موجود را در این location block را حذف کرده و آن را با گزینه proxy_pass زیر جایگزین کنید.
/etc/nginx/sites-available/your_domain

location / {
proxy_pass http://localhost:3000;
}

با این کار پروکسی به پورت مناسب نگاشت می شود. پس از اتمام کار ، فایل را با فشار دادن CTRL + X ذخیره کرده و آن را ببندید ، اگر از nano استفاده می کنید ، Y و سپس enter را بزنید.
اکنون ، تنظیمات جدید را آزمایش کنید تا مطمئن شوید همه چیز به درستی پیکربندی شده است:
⦁ $ 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 reload nginx

اکنون با نشان دادن مرورگر وب خود به https: // your_domain می توانید به صفحه پیش فرض ورود به سیستم Grafana دسترسی پیدا کنید. اگر نمی توانید به Grafana دسترسی پیدا کنید ، بررسی کنید که فایروال به گونه ای تنظیم شده باشد که در پورت 443 امکان عبور و مرور را فراهم کند و دستورالعمل های قبلی را دوباره ردیابی کنید.
با اتصال به Grafana رمزگذاری شده ، اکنون می توانید اقدامات امنیتی دیگری را با شروع تغییر اعتبارنامه ادمین پیش فرض Grafana ، انجام دهید.
مرحله 3 – به روزرسانی اعتبارات
از آنجا که هر نصب Grafana بصورت پیش فرض از یک مدل اعتبارات اجرایی استفاده می کند ، بهتر است هرچه سریعتر اطلاعات ورود به سیستم را تغییر دهید. در این مرحله ، اعتبارات را برای بهبود امنیت به روز می کنید.
با رفتن به https: // your_domain از مرورگر وب خود شروع کنید. این صفحه پیش فرض ورود به سیستم را ایجاد می کند که در آن لوگوی Grafana را مشاهده می کنید ، فرمی که از شما خواسته می شود یک ایمیل یا نام کاربری و رمز عبور وارد کنید، دکمه ورود به سیستم و لینک آیا رمز ورود خود را فراموش کنید؟ را نشان میدهد.

ادمین را در هر دو قسمت User و Password وارد کرده و بر روی دکمه Log in (ورود به سیستم) کلیک کنید.
در صفحه بعدی از شما خواسته می شود با تغییر رمز پیش فرض ، حساب خود را ایمن تر کنید:

گذرواژه‌ای را که مایل به استفاده از آن هستید ، در گذرواژه جدید وارد کرده و قسمتهای رمز عبور جدید را تأیید کنید.
از اینجا ، می توانید برای ذخیره اطلاعات جدید روی save کلیک کرده یا skip را فشار دهید تا از این مرحله رد شوید. در صورت skip (پرش)، دفعه بعدی که وارد میشوید از شما خواسته می شود گذرواژه را تغییر دهید.
برای افزایش امنیت راه اندازی Grafana ، روی save کلیک کنید. به صفحه  Home Dashboard باز خواهید گشت:

اکنون با تغییر اعتبارات پیش فرض ، حساب خود را ایمن کرده اید. در مرحله بعد ، تغییراتی در پیکربندی Grafana ایجاد خواهید کرد تا هیچ کس نتواند بدون اجازه شما یک حساب Grafana جدید ایجاد کند.
مرحله 4 – غیرفعال کردن ثبت نام های Grafana و دسترسی ناشناس
Grafana گزینه هایی را فراهم می کند که به بازدید کنندگان امکان می دهد برای خود حساب کاربری ایجاد کنند و داشبورد پیش نمایش را بدون ثبت نام مشاهده کنند. وقتی Grafana از طریق اینترنت قابل دسترسی نیست یا وقتی با داده های عمومی مانند وضعیت سرویس کار می کند ، ممکن است بخواهید این ویژگی ها را مجاز کنید. با این حال ، هنگام استفاده از Grafana آنلاین برای کار با داده های حساس ، دسترسی ناشناس می تواند یک مشکل امنیتی باشد. برای برطرف کردن این مشکل ، در پیکربندی Grafana خود تغییراتی ایجاد کنید.
با باز کردن فایل اصلی پیکربندی Grafana برای ویرایش شروع کنید:
⦁ $ sudo nano /etc/grafana/grafana.ini

دستورالعمل allow_sign_up را تحت عنوان [users] قرار دهید:
/etc/grafana/grafana.ini

[users]
# disable user signup / registration
;allow_sign_up = true

با فعال کردن این دستورالعمل ، یک دکمه sign up به صفحه ورود اضافه می شود و به کاربران امکان می دهد ثبت نام کنند و به Grafana دسترسی پیدا کنند.
غیرفعال کردن این ویژگی با false ، دکمه ثبت نام را حذف کرده و امنیت و حریم خصوصی Grafana را بیشتر می کند.
با حذف ; در ابتدای خط و سپس تنظیم گزینه روی false، این امکان را لغو کنید.
/etc/grafana/grafana.ini

[users]
# disable user signup / registration
allow_sign_up = false

در مرحله بعد ، دستورالعمل enabled  زیر را تحت عنوان [auth.annam] قرار دهید:
/etc/grafana/grafana.ini

[auth.anonymous]
# enable anonymous access
;enabled = false

تبدیل enabled به true به کاربران غیر ثبت شده دسترسی به داشبورد شما را می دهد. تنظیم این گزینه روی false دسترسی به داشبورد را فقط محدود به کاربران ثبت نام شده میکند.
با حذف ; در ابتدای خط و سپس تنظیم گزینه روی false، این امکان را لغو کنید.
/etc/grafana/grafana.ini

[auth.anonymous]
# enable anonymous access
enabled = false

فایل را ذخیره کنید و از ویرایشگر متن خود خارج شوید.
برای فعال سازی تغییرات ، Grafana را ریستارت کنید:
⦁ $ sudo systemctl restart grafana-server

با بررسی وضعیت سرویس Grafana تأیید کنید که همه چیز کار می کند:
⦁ $ sudo systemctl status grafana-server

مانند قبل ، خروجی گزارش خواهد داد که Grafana فعال (در حال اجرا( است.
اکنون ، در مرورگر وب خود https: // your_domain را وارد کنید. برای بازگشت به صفحه ورود به سیستم ، نشانگر خود را روی قسمت پایین سمت چپ صفحه نمایشگر در آواتار خود آورده و بر روی گزینه Sign out که ظاهر می شود کلیک کنید.
پس از ورود به سیستم ، مطمئن شوید که هیچ دکمه sign up وجود ندارد و بدون وارد کردن اعتبارات ورود نمی توانید وارد سیستم شوید.
در این مرحله ، Grafana کاملاً پیکربندی شده و آماده استفاده است. در مرحله بعد ، می توانید فرآیند ورود به سیستم خود را با تأیید اعتبار از طریق GitHub ساده کنید.
(اختیاری) مرحله 5 – تنظیم یک برنامه GitHub OAuth
به عنوان یک روش جایگزین برای ورود به سیستم ، می توانید Grafana را برای تأیید اعتبار از طریق GitHub پیکربندی کنید ، که دسترسی به تمام اعضای سازمان های مجاز GitHub را فراهم می کند. این مسئله می تواند به ویژه هنگامی مفید باشد که بخواهید به چندین توسعه دهنده اجازه دهید با متریک ها کار کنند و دسترسی داشته باشند بدون آنکه احتیاج به اعتبار ویژه Grafana داشته باشید.
با ورود به یک حساب GitHub مرتبط با سازمان خود شروع کنید و سپس به صفحه نمایه GitHub خود در https://github.com/settings/profile بروید.
محتوای تنظیمات را با کلیک بر روی نام در سمت چپ صفحه نمایش تغییر دهید، سپس سازمان خود را از منوی کشویی انتخاب کنید. این کار محتوا را از Personal settings به Organization settings تغییر میدهد.
در صفحه بعدی ، پروفایل سازمان خود را مشاهده خواهید کرد که می توانید تنظیماتی مانند نام صفحه نمایش سازمان ، ایمیل سازمان و URL سازمان خود را تغییر دهید.
از آنجا که Grafana از OAuth – برای تأیید اعتبار کاربران از طریق GitHub استفاده می کند (که یک استاندارد باز برای دسترسی به اشخاص ثالث از راه دور به منابع محلی است)، باید یک برنامه OAuth جدید در GitHub ایجاد کنید.
روی لینک OAuth Apps در زیر تنظیمات توسعه (Developer settings) در پایین سمت چپ صفحه نمایش کلیک کنید.
اگر از قبل هیچ برنامه OAuth مربوط به سازمان خود در GitHub ندارید ، با No Organization Owned Applications مواجه میشوید. در غیر این صورت لیستی از برنامه های OAuth را که قبلاً به حساب شما متصل شده اند ، خواهید دید.
برای ادامه بر روی دکمه New OAuth App
کلیک کنید.
در صفحه بعدی ، جزئیات زیر در مورد نصب Grafana خود را پر کنید:
⦁ Application name – به شما کمک می کند تا برنامه های مختلف OAuth خود را از یکدیگر متمایز کنید.
⦁ Homepage URL – به GitHub می گوید کجا می توانید Grafana را پیدا کنید.https: // your_domain را در این قسمت تایپ کنید و your_domain را جایگزین دامنه خود کنید.
⦁ Application Description – توضیحی را برای هدف برنامه OAuth شما ارائه می دهد.
⦁ Application callback URL – آدرسی است که پس از تأیید اعتبار با موفقیت برای کاربران ارسال می شود. برای Grafana ، این قسمت باید روی https://your_domain/login/github تنظیم شود.
به خاطر داشته باشید که کاربران Grafana که از طریق GitHub وارد سیستم می شوند مقادیری را که در سه قسمت قبلی وارد کرده اید ، مشاهده می کنند ، بنابراین حتماً چیزی معنی دار و مناسب را وارد کنید.
پس از اتمام کار ، فرم چیزی شبیه به این خواهد شد:

روی دکمه سبز ، ثبت نام برنامه کلیک کنید.
اکنون به صفحه ای حاوی Client ID و Client Secret مرتبط با برنامه جدید OAuth خود هدایت می شوید. هر دو مقدار را یادداشت کنید ، زیرا برای تکمیل تنظیمات باید آنها را به فایل اصلی پیکربندی Grafana اضافه کنید.
هشدار: مطمئن شوید که Client ID و Client Secret خود را در یک مکان امن و غیر عمومی نگه داری میکنید ، زیرا می توانند مورد حمله قرار گیرند.

با ایجاد برنامه GitHub OAuth خود ، اکنون آماده پیکربندی مجدد Grafana برای استفاده از GitHub جهت تأیید اعتبار هستید.
(اختیاری) مرحله 6 – پیکربندی Grafana به عنوان یک برنامه GitHub OAuth
برای تکمیل تأیید اعتبار GitHub برای تنظیم Grafana ، اکنون تغییراتی در فایل های پیکربندی Grafana خود اعمال خواهید کرد.
برای شروع ، فایل اصلی پیکربندی Grafana را باز کنید.
⦁ $ sudo nano /etc/grafana/grafana.ini

عنوان [auth.github] را بیابید و با حذف ; در ابتدای هر خط به جز ;allowed_domains = و ;team_ids= که در این آموزش تغییر نخواهد کرد ، این بخش را لغو کنید.
در مرحله بعدی ، این تغییرات را ایجاد کنید:
⦁ گزینه enabled و allow_sign_up را روی true تنظیم کنید. این امر تأیید هویت GitHub را انجام می دهد و به اعضای مجاز سازمان اجازه می دهد تا خودشان حساب ایجاد کنند. توجه داشته باشید که این تنظیمات با ویژگی allow_sign_up تحت [users] که در مرحله 4 تغییر کرده اید متفاوت است.
⦁ client_id و client_secret را روی مقادیری که هنگام ایجاد برنامه GitHub OAuth خود قرار داده اید تنظیم کنید.
⦁ allow _organizations را روی نام سازمان خود تنظیم کنید تا اطمینان حاصل شود که فقط اعضای سازمان شما می توانند عضو و وارد Grafana شوند.
پیکربندی کامل اینگونه خواهد بود:
/etc/grafana/grafana.ini

[auth.github]
enabled = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
;allowed_domains =
;team_ids =
allowed_organizations = your_organization_name

اکنون به Grafana که همه موارد لازم در مورد GitHub را گفته اید. برای تکمیل ستاپ ، باید تغییر مسیرها را در پشت پروکسی معکوس فعال کنید. این کار با تنظیم یک مقدار root_url تحت عنوان [server] انجام می شود.
/etc/grafana/grafana.ini

[server]
root_url = https://your_domain

پیکربندی خود را ذخیره کرده و فایل را ببندید.
سپس Grafana را مجدداً راه اندازی کنید تا تغییرات فعال شود:
⦁ $ sudo systemctl restart grafana-server

در آخر ، تأیید کنید که سرویس در حال اجرا است.
⦁ $ sudo systemctl status grafana-server

خروجی نشان می دهد که سرویس فعال (در حال اجرا) است.
اکنون با رفتن به https: // your_domain ، سیستم تأیید اعتبار جدید خود را آزمایش کنید. اگر قبلاً وارد Grafana شده اید ، موس خود را روی نماد آواتار در گوشه سمت چپ پایین صفحه حرکت دهید و روی منوی ثانویه که در کنار نام شما ظاهر می شود ، روی Sign Out کلیک کنید.
در صفحه ورود ، زیر دکمه اصلی ورود به سیستم یک بخش جدید مشاهده خواهید کرد که شامل دکمه ورود به سیستم با GitHub با آرم GitHub است.

بر روی دکمه ورود به سیستم با GitHub کلیک کنید تا به GitHub هدایت شوید ، در آنجا وارد حساب GitHub خود شوید و هدف خود را برای تأیید مجوز Grafana را تأیید کنید.
بر روی دکمه سبز ، Authorize your_github_organization کلیک کنید.
توجه: اطمینان حاصل کنید که حساب GitHub شما عضو سازمان تأیید شده شماست و آدرس ایمیل Grafana با آدرس ایمیل GitHub شما مطابقت دارد. اگر سعی کنید با یک حساب GitHub که عضو سازمان تأیید شده شما نیست ، تأیید اعتبار کنید ، یک پیام Login Failed دریافت خواهید کرد و به شما می گوید ، کاربر عضو یکی از سازمان های مورد نیاز نیست.
اکنون با حساب Grafana موجود خود وارد سیستم خواهید شد. اگر برای کاربری که با آن وارد سیستم شده اید قبلا حساب Grafana ایجاد نشده باشد ، Grafana یک حساب کاربری جدید با مجوز Viewer ایجاد می کند ، و اطمینان می دهد که کاربران جدید فقط می توانند از داشبوردهای موجود استفاده کنند.
برای تغییر مجوزهای پیش فرض برای کاربران جدید ، فایل اصلی پیکربندی Grafana را برای ویرایش باز کنید.
⦁ $ sudo nano /etc/grafana/grafana.ini

دستورالعمل auto_assign_org_role را تحت عنوان [users] بیابید و با حذف کردن ; در ابتدای خط آن را لغو کنید.
دستورالعمل را روی یکی از مقادیر زیر تنظیم کنید:
⦁ Viewer  – فقط می تواند از داشبوردهای موجود استفاده کند
⦁ Editor  – می تواند داشبوردها را استفاده کند، تغییر دهد و اضافه کند
⦁ Admin  – اجازه انجام همه کارها را دارد
این آموزش اختصاص خودکار به Viewer را انجام میدهد:
/etc/grafana/grafana.ini

[users]

auto_assign_org_role = Viewer

پس از ذخیره تغییرات ، فایل را ببندید و مجدداً Grafana را ریستارت کنید:
⦁ $ sudo systemctl restart grafana-server

وضعیت سرویس را بررسی کنید:
⦁ $ sudo systemctl status grafana-server

مانند قبل ، وضعیت فعال (در حال اجرا) خواهد بود.
در این مرحله ، شما Grafana را کاملاً پیکربندی کرده اید تا به اعضای سازمان GitHub خود اجازه دهید ثبت نام و استفاده از نصب Grafana را انجام دهند.
نتیجه
در این آموزش Grafana را نصب ، پیکربندی و ایمن کرده اید و همچنین آموخته اید که چگونه به اعضای سازمان خود اجازه دهید تا از طریق GitHub احراز هویت کنند.
برای بسط نصب فعلی Grafana ، به لیست داشبوردها و افزونه های رسمی و ساخته شده توسط انجمن مراجعه کنید. برای کسب اطلاعات بیشتر در مورد استفاده از Grafana به طور کلی ، به مطالب رسمی Grafana مراجعه کنید ، یا سایر آموزش های مانیتورینگ ما را مطالعه نمایید.

 

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

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

هنگام ذخیره هرگونه اطلاعات مهم ، داشتن یک نقطه خرابی بسیار خطرناک است. در حالی که بسیاری از پایگاه داده ها و نرم افزارهای دیگر به شما امکان می دهند داده ها را در زمینه یک برنامه واحد پخش کنید ، سایر سیستم ها می توانند در سطح سیستم فایلها کار کنند تا اطمینان حاصل شود که داده ها هر زمان که در دیسک نوشته شده باشند ، به جای دیگری کپی می شوند.
GlusterFS یک سیستم فایل ذخیره سازی متصل به شبکه است که به شما امکان می دهد منابع ذخیره سازی چندین ماشین را جمع کنید. به نوبه خود ، این ویژگی به شما اجازه می دهد تا دستگاه های ذخیره سازی متعددی را که در بین بسیاری از رایانه ها توزیع می شود ، به عنوان یک واحد تکی قدرتمند استفاده کنید. GlusterFS همچنین به شما امکان می دهد انواع مختلفی از تنظیمات ذخیره سازی را ایجاد کنید ، بسیاری از آنها از نظر عملکردی مشابه سطوح RAID هستند. به عنوان مثال ، می توانید داده ها را در گره های مختلف در خوشه نواری کنید ، یا می توانید افزونگی را برای دسترسی بهتر به اطلاعات پیاده سازی کنید.
اهداف
در این راهنما ، یک مجموعه ذخیره سازی خوشه ای اضافی ایجاد خواهید کرد ، که به یک سیستم فایل توزیع شده نیز شناخته می شود یا همانطور که در اسناد GlusterFS به آن اشاره شده است ، یک استخر ذخیره سازی قابل اعتماد ایجاد میکنید. این استخر عملکردی شبیه به پیکربندی RAID آینه ای بر روی شبکه فراهم می کند: هر سرور مجازی مستقل شامل کپی داده های خود است و به برنامه های شما امکان دسترسی به هر کپی را می دهد و از این طریق به توزیع بار قابل خواندن شما کمک می کند.
این خوشه GundterFS اضافی از دو سرور مجازی Ubuntu 20.04 تشکیل شده است. مشابه سرور مجازی NAS با RAID آینه ای عمل می کند. سپس به یک سرور سوم Ubuntu 20.04 پیکربندی شده برای عملکرد به عنوان یک کلاینت GlusterFS دسترسی پیدا خواهید کرد.
نکته ای در مورد اجرای ایمن GlusterFS
وقتی داده ها را به یک والیوم GlusterFS اضافه می کنید ، آن داده ها با هر دستگاه موجود در استخر ذخیره سازی که در آن والیوم هاست است همگام سازی می شود. این ترافیک بین گره ها به طور پیش فرض رمزگذاری نشده است ، به این معنی که خطری وجود دارد که بتواند توسط سو استفاده گران ردیابی شود.
به همین دلیل ، اگر می خواهید از GlusterFS در تولید استفاده کنید ، توصیه می شود که آن را در یک شبکه جداگانه اجرا کنید. به عنوان مثال ، می توانید آن را به گونه ای تنظیم کنید تا در یک Virtual Private Cloud (VPC) یا با یک VPN بین هر یک از گره ها اجرا شود.
پیش نیازها
برای دنبال کردن این آموزش ، به سه سرور مجازی اوبونتو 20.04 در حال اجرا نیاز دارید. هر سرور مجازی باید دارای یک کاربر غیر ریشه با امتیازات ادمین و فایروال تنظیم شده با UFW باشد. برای انجام این کار ، راهنمای تنظیم اولیه سرور مجازی ما برای اوبونتو 20.04 را دنبال کنید.
توجه: همانطور که در بخش اهداف گفته شد ، این آموزش پیکربندی دو سرور مجازی Ubuntu را انجام می دهد تا به عنوان سرور مجازی در استخر ذخیره سازی شما عمل کنند و مابقی نیز به عنوان کلاینت باشند که برای دسترسی به این گره ها استفاده خواهید کرد.
برای شفاف سازی ، این آموزش با نام های هاست زیر به این دستگاه ها اشاره می کند:
نام هاست نقش آن در استخر
gluster0 سرور مجازی
gluster1 سرور مجازی
gluster2 کلاینت

دستوراتی که باید بر روی gluster0 یا gluster1 اجرا شوند ، به ترتیب رنگهای آبی و قرمز دارند:
Sammy@gluster0:~$
Sammy@gluster1:~$

دستوراتی که فقط باید روی کلاینت اجرا شوند (gluster2) رنگ سبز دارند:
Sammy@gluster2:~$
دستوراتی که می توانند یا باید روی بیش از یک دستگاه اجرا شوند ، رنگ خاکستری دارند:
$
مرحله 1 – پیکربندی رزولوشن DNS در هر دستگاه
تنظیم نوعی رزولوشن نام هاست بین هر رایانه می تواند در مدیریت استخر ذخیره سازی Gluster شما کمک کننده باشد. به این ترتیب ، هر وقت در این آموزش مجبور به مراجعه به یکی از دستگاه های خود در یک دستور gluster هستید ، می توانید به جای آدرس IP مربوطه ، آنها را با یک نام دامنه یا حتی یک نام مستعار به خاطر بسپارید.
اگر نام دامنه اضافی ندارید ، یا اگر می خواهید چیزی را سریع تنظیم کنید ، می توانید به جای آن فایل / etc / hosts را در هر رایانه ویرایش کنید. این یک فایل ویژه در دستگاه های لینوکس است که در آن می توانید سیستم را پیکربندی کنید تا نامهای هاست موجود در فایل را در آدرسهای IP ثابت مشخص کنید.
توجه: اگر می خواهید سرور مجازی های خود را برای تأیید هویت با دامنه ای که در اختیار دارید پیکربندی کنید ، ابتدا لازم است یک نام دامنه از یک ثبت دامنه – مانند Namecheap یا Enom – دریافت کنید و رکوردهای DNS مناسب را پیکربندی کنید.
پس از پیکربندی یک رکورد برای هر سرور مجازی ، می توانید به مرحله دوم بروید. از آنجا که این راهنما را دنبال می کنید ، مطمئن شوید که glusterN.example.com و glusterN را با نام دامنه ای جایگزین می کنید که به سرور مجازی مربوطه در دستور نمونه ارجاع می شود.

با استفاده از ویرایشگر متن مورد نظر خود ، این فایل را با امتیازات اصلی در هر یک از دستگاه های خود باز کنید. در اینجا ، ما از nano استفاده خواهیم کرد:
$ sudo nano /etc/hosts

به طور پیش فرض ، با حذف کامنت ها فایل چیزی شبیه به این خواهد بود:
/etc/hosts
127.0.1.1 hostname hostname
127.0.0.1 localhost

::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

در یکی از سرور مجازی های اوبونتو ، آدرس IP سرور مجازی را به همراه هر نامی که مایل به استفاده برای ارجاع آنها در دستورات زیر تعریف هاست محلی هستید اضافه کنید.
در مثال زیر ، هر سرور مجازی با یک نام هاست طولانی که با glusterN.example.com مطابقت دارد و یک نام کوتاه که به صورت glusterN است ، ارائه می شود. می توانید قسمتهای glusterN.example.com و glusterN هر خط را با هر اسمی – یا نامهای جدا شده با اسپیس – که می خواهید برای دسترسی به هر سرور مجازی از آنها استفاده کنید ، تغییر دهید. البته توجه داشته باشید که در کل این آموزش از این مثالها استفاده خواهد شد:
توجه: اگر سرور مجازی های شما بخشی از استخر زیرساختی Virtual Private Cloud هستند ، باید از آدرس IP خصوصی سرور مجازی ها در فایل / etc / host ها به جای IP های عمومی آنها استفاده کنید.
/etc/hosts
. . .
127.0.0.1 localhost
first_ip_address gluster0.example.com gluster0
second_ip_address gluster1.example.com gluster1
third_ip_address gluster2.example.com gluster2

. . .

پس از پایان افزودن این خطوط جدید به فایل / etc / host های یک دستگاه ، آنها را در فایل های / etc / hosts در دستگاه های دیگر خود کپی کرده و اضافه کنید. هر فایل /etc/hosts باید همان خطوط را داشته باشد ، آدرسهای IP سرور مجازی های شما را به نامهایی که انتخاب کرده اید پیوند دهد.
پس از اتمام ، هر فایل را ذخیره کنید و ببندید. اگر از nano استفاده کرده اید ، این کار را با فشار دادن CTRL + X ، Y ، و سپس ENTER انجام دهید.
اکنون که تنظیمات نام هاست را بین هر یک از سرور مجازی های خود پیکربندی کرده اید ، سپس با تنظیم استخر و والیوم ، دستورات را ساده تر می کنید. سپس ، گام دیگری را برمیدارید که باید روی هر یک از سرور مجازی های شما انجام شود. یعنی ، درواقع بایگانی بسته رسمی شخصی پروژه (PPA) Gluster را به هر سه سرور مجازی Ubuntu خود اضافه کنید تا اطمینان حاصل شود که می توانید جدیدترین نسخه GlusterFS را نصب کنید.
مرحله 2 – تنظیم منابع نرم افزاری روی هر دستگاه
اگرچه مخازن پیش فرض Ubuntu 20.04 APT شامل بسته های GlusterFS هستند ، اما در زمان نوشتن این مقاله، جدیدترین نسخه ها نیستند. یکی از راه های نصب آخرین نسخه پایدار GlusterFS (نسخه 7.6 در زمان این نوشتار) اضافه کردن PPA رسمی پروژه Gluster به هر سه سرور مجازی Ubuntu شما است.
با اجرای دستور زیر روی هر سرور مجازی ، PPA را برای بسته های GlusterFS اضافه کنید:
$ sudo add-apt-repository ppa:gluster/glusterfs-7

هنگامی که از شما خواسته شد تأیید کنید که در واقع می خواهید PPA را اضافه کنید ، ENTER را فشار دهید.
پس از افزودن PPA ، شاخص بسته محلی هر سرور مجازی را ریفرشکنید. این کار باعث می شود هر سرور مجازی از بسته های جدید موجود آگاه شود:
$ sudo apt update

پس از افزودن PPA رسمی پروژه Gluster به هر سرور مجازی و به روزرسانی شاخص بسته محلی ، آماده نصب بسته های لازم GlusterFS هستید. اما ، از آنجا که دو تا از سه ماشین شما به عنوان سرور مجازی های Gluster و دیگری به عنوان کلاینت عمل می کنند ، دو روش نصب و پیکربندی مجزا وجود دارد. ابتدا اجزای سرور مجازی را نصب و تنظیم می کنید.
مرحله 3 – نصب مؤلفه های سرور مجازی و ایجاد استخر ذخیره سازی مطمئن
استخر ذخیره سازی هر مقدار ظرفیت ذخیره از بیش از یک منبع ذخیره سازی است. در این مرحله ، دو سرور مجازی خود را – gluster0 و gluster1 – به عنوان اجزای خوشه پیکربندی می کنید.
در هر دو gluster0 و gluster1 ، بسته بندی سرور مجازی GlusterFS را با تایپ کردن دستور زیر نصب کنید:
$ sudo apt install glusterfs-server

هنگامی که از شما خواسته شد ، Y و سپس ENTER را فشار دهید تا نصب را تأیید کنید.
فرایند نصب به طور خودکار GlusterFS را پیکربندی می کند تا به عنوان یک سرویس سیستمی اجرا شود. با این حال ، این سرویس به طور خودکار شروع نمی شود و با بوت شدن فعال نمیشود.
برای شروع glusterd ، سرویس GlusterFS ، دستور شروع systemctl زیر را در gluster0 و gluster1 اجرا کنید:
$ sudo systemctl start glusterd.service

سپس دستور زیر را روی هر دو سرور مجازی اجرا کنید. این کار باعث می شود تا هر زمان که سرور مجازی بوت شود ، سرویس شروع شود:
$ sudo systemctl enable glusterd.service

پس از آن ، می توانید وضعیت سرویس را در یکی یا هر دو سرور مجازی بررسی کنید:
$ sudo systemctl status glusterd.service

اگر سرویس به روز و در حال اجرا باشد ، خروجی مانند این را دریافت خواهید کرد:
Output
● glusterd.service – GlusterFS, a clustered file-system server
Loaded: loaded (/lib/systemd/system/glusterd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-06-02 21:32:21 UTC; 32s ago
Docs: man:glusterd(8)
Main PID: 14742 (glusterd)
Tasks: 9 (limit: 2362)
CGroup: /system.slice/glusterd.service
└─14742 /usr/sbin/glusterd -p /var/run/glusterd.pid –log-level INFO

با فرض اینکه از راهنمای پیش نیاز ستاپ اولیه سرور مجازی پیروی کرده اید ، فایروال را با UFW بر روی هر یک از دستگاه های خود تنظیم کرده اید. به همین دلیل ، قبل از برقراری ارتباطات بین آنها و ایجاد استخر ذخیره سازی ، باید فایروال را در هر گره باز کنید.
Daemon Gluster از پورت 24007 استفاده می کند ، بنابراین باید به هر گره اجازه دهید از طریق فایروال هر گره دیگر در استخر ذخیره سازی خود به آن پورت دسترسی پیدا کند. برای انجام این کار ، دستور زیر را در gluster0 اجرا کنید. به یاد داشته باشید gluster1_ip_address را به آدرس IP gluster1 تغییر دهید:
Sammy@gluster0:~$ sudo ufw allow from gluster1_ip_address to any port 24007

و دستور زیر را روی gluster1 اجرا کنید. دوباره مطمئن شوید gluster0_ip_address را به آدرس IP gluster0 تغییر دهید:
Sammy@gluster1:~$ sudo ufw allow from gluster0_ip_address to any port 24007

همچنین باید به دستگاه کلاینت (gluster2) اجازه دسترسی به این پورت را بدهید. در غیر این صورت ، بعد از تلاش برای تنظیم والیوم ، بعداً به مشکلاتی دچار خواهید شد. دستور زیر را بر روی هر دو سرور مجازی gluster0 و gluster1 اجرا کنید تا این پورت در دستگاه کلاینت شما باز شود:
سپس ، برای اطمینان از اینکه هیچ ماشین دیگری قادر به دسترسی به پورت Gluster در هر یک از سرور مجازی ها نیست ، قانون deny  زیر را نیز به gluster0 و gluster1 اضافه کنید:
$ sudo ufw deny 24007

اکنون آماده برقراری ارتباط بین gluster0 و gluster1 هستید. برای انجام این کار ، باید دستورالعمل gler peer probe را در یکی از گره های خود اجرا کنید. فرقی نمی کند از کدام گره استفاده کنید ، اما مثال زیر نشان می دهد که فرمان در gluster0 اجرا می شود:
Sammy@gluster0:~$ sudo gluster peer probe gluster1

در اصل ، این دستور به gluster0 می گوید که به gluster1 اعتماد کند و آن را به عنوان بخشی از استخر ذخیره خود ثبت کند. اگر کاوشگر موفقیت آمیز باشد ، خروجی زیر را برمی گرداند:
Output
peer probe: success

می توانید در هر زمان با اجرای دستور gluster peer status روی هر کدام از موارد ، بررسی کنید که گره ها در حال برقراری ارتباط هستند. در این مثال، روی gluster1 در حال اجرا است:
Sammy@gluster1:~$ sudo gluster peer status

اگر این دستور را از gluster1 اجرا کنید ، خروجی مانند این را نشان می دهد:
Output
Number of Peers: 1

Hostname: gluster0.example.com
Uuid: a3fae496-c4eb-4b20-9ed2-7840230407be
State: Peer in Cluster (Connected)

در این مرحله ، دو سرور مجازی شما در حال برقراری ارتباط و آماده برای ایجاد حجم ذخیره با یکدیگر هستند.
مرحله 4 – ایجاد یک حجم ذخیره سازی
به یاد بیاورید که هدف اصلی این آموزش ایجاد استخر اضافی ذخیره سازی است. برای این منظور شما می توانید یک والیوم با عملکرد کپی گیری تنظیم کنید ، که به شما امکان می دهد چندین نسخه از داده های خود را نگه دارید و از بروز مشکل در خوشه خود جلوگیری کنید.
برای ایجاد یک والیوم ، می توانید از دستور gluster volume createبا این ترکیب کلی استفاده کنید:
sudo gluster volume create volume_name replica number_of_servers domain1.com:/path/to/data/directory domain2.com:/path/to/data/directory force

در اینجا معنی آرگومان ها و گزینه های فرمان gluster volume create آورده شده است:
volume_name: این نامی است که شما می توانید پس از ایجاد ، به آن والیوم بدهید. دستور مثال زیر یک والیوم با نام Volum1 ایجاد می کند.
replica number_of_servers: به دنبال نام والیوم ، می توانید نوع والیوم را تعیین کنید. به یاد بیاورید که هدف از این آموزش ایجاد استخر اضافی ذخیره سازی است ، بنابراین ما از نوع والیوم کپی گیری استفاده خواهیم کرد. نیاز به یک آرگومان دارد که نشان می دهد داده های والیوم روی چند سرور مجازی کپی میشود (در مورد این آموزش 2 سرور مجازی).
domain1.com:/… و domain2.com:/…: ماشینها و محل دایرکتوری آجرها را تعریف می کنند – اصطلاح GlusterFS برای واحد اصلی ذخیره سازی آن ، که شامل هر دایرکتوری در مورد هر دستگاهی است که به عنوان یک قسمت یا یک نسخه از یک والیوم بزرگتر – که والیوم 1 را تشکیل می دهد، ارائه میشود. مثال زیر دایرکتوری به نام gluster-store را در دیرکتوری اصلی هر دو سرور مجازی ایجاد می کند.
Force: این گزینه ، هشدارها یا گزینه هایی که ممکن است ظاهر شوند و ایجاد والیوم را متوقف کنند، رد می کند.
طبق کنوانسیون هایی که در ابتدا در این آموزش ایجاد شده است ، می توانید این دستور را برای ایجاد یک والیوم اجرا کنید. توجه داشته باشید که می توانید آن را از طریق gluster0 یا gluster1 اجرا کنید:
$ sudo gluster volume create volume1 replica 2 gluster0.example.com:/gluster-storage gluster1.example.com:/gluster-storage force

اگر والیوم با موفقیت ایجاد شد ، خروجی زیر را دریافت خواهید کرد:
Output
volume create: volume1: success: please start the volume to access data

در این مرحله ، والیوم شما ایجاد شده است ، اما هنوز فعال نیست. با اجرای دستور زیر ، مجدداً از هر یک از سرور مجازی های Gluster می توانید والیوم را شروع کرده و آن را برای استفاده در دسترس قرار دهید:
$ sudo gluster volume start volume1

اگر والیوم به درستی شروع شده باشد ، این خروجی را دریافت خواهید کرد:
Output
volume start: volume1: success

سپس ، بررسی کنید که والیوم آنلاین باشد. دستور زیر را از هر یک از گره های خود اجرا کنید:
$ sudo gluster volume status

خروجی مشابه این را برمی گرداند:
Output
Status of volume: volume1
Gluster process TCP Port RDMA Port Online Pid
——————————————————————————
Brick gluster0.example.com:/gluster-storage 49152 0 Y 18801
Brick gluster1.example.com:/gluster-storage 49152 0 Y 19028
Self-heal Daemon on localhost N/A N/A Y 19049
Self-heal Daemon on gluster0.example.com N/A N/A Y 18822

Task Status of Volume volume1
——————————————————————————
There are no active volume tasks

براساس این خروجی ، brickها در هر دو سرور مجازی بصورت آنلاین هستند.
به عنوان آخرین مرحله برای پیکربندی والیوم خود ، باید فایروال را در هر دو سرور مجازی باز کنید تا دستگاه کلاینت شما بتواند به آن متصل شود و والیوم آن را نصب کند. با توجه به خروجی نمونه فرمان قبلی ، volume1 در پورت 49152 در هر دو دستگاه در حال اجرا است. این پورت پیش فرض GlusterFS برای والیوم اولیه آن است و در والیوم بعدی که ایجاد می کنید از پورت 49153 ، سپس 49154 و غیره استفاده خواهید کرد.
دستور زیر را بر روی هر دو gluster0 و gluster1 اجرا کنید تا gluster2 از طریق فایروال مربوط به هر یک به این پورت دسترسی داشته باشد:
$ sudo ufw allow from gluster2_ip_address to any port 49152

سپس ، برای یک لایه امنیتی بیشتر ، یک قانون deny  دیگر برای پورت والیوم در هر دو gluster0 و gluster1 اضافه کنید. این کار تضمین می کند که هیچ دستگاهی به غیر از کلاینت شما نمی تواند به والیوم هر سرور مجازی دسترسی داشته باشد:
$ sudo ufw deny 49152

اکنون که والیوم شما به روز و در حال اجراست ، می توانید دستگاه کلاینت خود را تنظیم کرده و از راه دور استفاده از آن را شروع کنید.
مرحله 5 – نصب و پیکربندی مولفه های کلاینت
اکنون والیوم شما پیکربندی شده و برای استفاده توسط دستگاه کلاینت شما در دسترس است. قبل از شروع کار ، باید بسته glusterfs-client را از PPA تنظیم شده در مرحله 1 در دستگاه کلاینت خود نصب کنید. متعلقات این بسته شامل برخی از کتابخانه های مشترک و ماژول های مترجم GlusterFS و ابزارهای FUSE لازم برای کار کردن آن است.
دستور زیر را در gluster2 اجرا کنید:
Sammy@gluster2:~$ sudo apt install glusterfs-client

در ادامه والیوم ذخیره از راه دور خود را روی رایانه کلاینت خود سوار می کنید. قبل از اینکه بتوانید این کار را انجام دهید ، باید یک نقطه اتصال ایجاد کنید. به طور معمول ، این نقطه در دیرکتوری / mnt است ، اما در هر مکان راحت می توان از آن استفاده کرد.
برای سادگی ، دایرکتوری به نام /storage-poolرا بر روی دستگاه کلاینت خود ایجاد کنید تا به عنوان نقطه سوارسازی ارائه شود. این نام دیرکتوری با یک اسلش (/) که آن را در دیرکتوری اصلی قرار می دهد ، شروع می شود ، بنابراین شما باید آن را با امتیازات sudo ایجاد کنید:
Sammy@gluster2:~$ sudo mkdir /storage-pool

اکنون می توانید والیوم از راه دور را نصب کنید. اما قبل از آن ، نگاهی به نحو دستور mount مورد نظر برای انجام این کار بیندازید:
sudo mount -t glusterfs domain1.com:volume_name /path/to/mount/point

mount ابزاری است که در بسیاری از سیستم عاملهای یونیکس مانند یافت می شود. برای نصب سیستم فایل ها – هر چیزی از دستگاههای ذخیره سازی خارجی ، مانند کارتهای SD یا USB ، برای ذخیره سازی متصل به شبکه ، مانند این آموزش – تا دایرکتوری های موجود در سیستم فایل های موجود دستگاه استفاده می شود. ترکیب دستور mount که از آن استفاده خواهید کرد شامل گزینه -t است که به سه آرگومان نیاز دارد: نوع سیستم فایل نصب شده ، دستگاهی که می توان سیستم فایل برای سوار شدن روی آن را پیدا کرد و دایرکتوری روی کلاینت که در آن والیوم را نصب خواهید کرد.
توجه کنید که در این مثال ، آرگومان دستگاه به یک نام هاست اشاره می کند که به دنبال آن یک علامت کولون و سپس نام والیوم اضافه می شود. GlusterFS دیرکتوری های ذخیره سازی واقعی را در هر هاست ابسترکت میکند، به این معنی که این دستور به دنبال نصب دیرکتوری /gluster-storage نیست ، بلکه به جای آن volume1.
همچنین توجه داشته باشید که فقط باید یک عضو از خوشه ذخیره را مشخص کنید. این می تواند هر دو گره باشد ، زیرا سرویس GlusterFS با آنها به عنوان یک دستگاه رفتار می کند.
دستور زیر را روی دستگاه کلاینت خود (gluster2) اجرا کنید تا والیوم را در دیرکتوری /storage-pool ایجاد کنید:
Sammy@gluster2:~$ sudo mount -t glusterfs gluster0.example.com:/volume1 /storage-pool

پس از آن ، دستور df را اجرا کنید. که مقدار فضای موجود در دیسک را برای سیستم فایلی هایی که کاربر از آن استفاده می کند ، نشان می دهد:
Sammy@gluster2:~$ df

این دستور نشان می دهد که والیوم GlusterFS در محل صحیح نصب شده است:
Output
Filesystem 1K-blocks Used Available Use% Mounted on
. . .
gluster0.example.com:/volume1 50633164 1938032 48695132 4% /storage-pool

اکنون می توانید آزمایش کنید که هر داده ای که برای کلاینت ارسال می کنید همانطور که انتظار می رود در گره های سرور مجازی شما کپی شود.
مرحله 6 – تست ویژگی های افزونگی (Redundancy)
اکنون که کلاینت خود را برای استفاده از استخر و والیوم خود تنظیم کرده اید ، می توانید عملکرد آن را آزمایش کنید.
در دستگاه کلاینت (gluster2) خود ، به نقطه سوار سازی در مرحله قبل بروید:
Sammy@gluster2:~$ cd /storage-pool

سپس چند فایل آزمایشی ایجاد کنید. دستور زیر ده فایل خالی جداگانه در استخر شما ایجاد می کند:
Sammy@gluster2:~$ sudo touch file_{0..9}.test

اگر دایرکتوریهای ذخیره سازی را که قبلاً در مورد هر هاست ذخیره سازی تعریف کرده اید ، بررسی کنید ، متوجه می شوید که همه این فایل ها در هر سیستم موجود هستند.
در gluster0:
Sammy@gluster0:~$ ls /gluster-storage

Output
file_0.test file_2.test file_4.test file_6.test file_8.test
file_1.test file_3.test file_5.test file_7.test file_9.test

به همین ترتیب ، در gluster1:
Sammy@gluster1:~$ ls /gluster-storage

Output
file_0.test file_2.test file_4.test file_6.test file_8.test
file_1.test file_3.test file_5.test file_7.test file_9.test

همانطور که این خروجی ها نشان می دهد ، فایل های آزمایشی که به کلاینت اضافه کردید نیز برای هر دو گره شما نوشته شده است.
اگر تا به حال نقطه ای وجود داشته باشد که یکی از گره های موجود در خوشه ذخیره شما تنزل یابد ، در صورت ایجاد تغییراتی در سیستم فایل ، می تواند از همگام سازی با استخر ذخیره خارج شود. انجام یک عمل خوانش در نقطه نصب کلاینت پس از بازگشت گره به صورت آنلاین ، به گره هشدار می دهد تا فایل های از دست رفته را دریافت کنید:
Sammy@gluster2:~$ ls /storage-pool

اکنون که تأیید کرده اید که والیوم ذخیره شما به درستی نصب شده است و می تواند داده ها را در هر دو دستگاه در خوشه تکرار کند ، می توانید دسترسی به استخر ذخیره سازی را غیرفعال کنید.
مرحله 7 – محدود کردن ویژگی های افزونگی
در این مرحله ، هر رایانه ای می تواند بدون هیچ محدودیتی به والیوم ذخیره شما وصل شود. شما می توانید با تنظیم گزینه auth.allow ، که آدرس های IP هر کلاینت را که باید به والیوم دسترسی داشته باشد تعریف میکند، این مشخصه را تغییر دهید.
اگر از پیکربندی /etc/hostsاستفاده می کنید ، نامهایی که برای هر سرور مجازی تعیین کرده اید به طور صحیح مسیریابی نمی شوند. به جای آن باید از یک آدرس IP ثابت استفاده کنید. از طرف دیگر ، اگر از رکوردهای DNS استفاده می کنید ، نام دامنه ای که پیکربندی کرده اید در اینجا کار خواهد کرد.
روی هر یک از گره های ذخیره سازی خود (gluster0 یا gluster1) ، دستور زیر را اجرا کنید:
$ sudo gluster volume set volume1 auth.allow gluster2_ip_address

اگر فرمان با موفقیت انجام شود ، این خروجی را برمی گرداند:
Output
volume set: success

اگر در هر نقطه ای نیاز به حذف محدودیت دارید ، می توانید این دستور را تایپ کنید:
$ sudo gluster volume set volume1 auth.allow *

با این کار مجدداً اتصالات از هر دستگاه امکان پذیر می شود. این کار ایمن نیست ، اما می تواند برای مشکلات اشکال زدایی مفید باشد.
اگر چندین کلاینت دارید ، می توانید آدرس IP یا نام دامنه آنها را همزمان (بسته به اینکه از / etc / host یا رزولوشن نام هاست DNS استفاده کنید) مشخص کنید ، و با کاما از هم جدا کنید:
$ sudo gluster volume set volume1 auth.allow gluster_client1_ip,gluster_client2_ip

استخر ذخیره سازی شما اکنون پیکربندی شده ، ایمن و آماده استفاده است. در مرحله بعد چند دستور را یاد خواهید گرفت که به شما کمک می کنند اطلاعاتی درباره وضعیت استخر ذخیره خود بدست آورید.
مرحله 8 – دریافت اطلاعات در مورد استخر ذخیره سازی خود با دستورات GlusterFS
هنگامی که شروع به تغییر برخی از تنظیمات ذخیره سازی GlusterFS می کنید ، ممکن است در مورد گزینه هایی که در دسترس دارید ، اینکه کدام والیوم زنده است و کدام گره ها با هر والیوم مرتبط هستند ، دچار سردرگمی شوید.
دستورات مختلفی وجود دارد که در گره های شما برای بازیابی این داده ها و تعامل با استخر شما وجود دارد.
اگر می خواهید اطلاعات مربوط به هر یک از والیوم های خود را داشته باشید ، فرمان gluster volume info را اجرا کنید:
$ sudo gluster volume info

Output
Volume Name: volume1
Type: Replicate
Volume ID: a1e03075-a223-43ab-a0f6-612585940b0c
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: gluster0.example.com:/gluster-storage
Brick2: gluster1.example.com:/gluster-storage
Options Reconfigured:
auth.allow: gluster2_ip_address
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
performance.client-io-threads: off

به طور مشابه ، برای به دست آوردن اطلاعات در مورد هر همتایی که این گره به آن متصل است ، می توانید تایپ کنید:
Sammy@gluster1:~$ sudo gluster peer status

Number of Peers: 1

Hostname: gluster0.example.com
Uuid: cb00a2fc-2384-41ac-b2a8-e7a1793bb5a9
State: Peer in Cluster (Connected)

اگر می خواهید اطلاعات دقیقی در مورد عملکرد هر گره داشته باشید ، می توانید با تایپ کردن دستور زیر یک والیوم را تنظیم کنید:
$ sudo gluster volume profile volume_name start

پس از اتمام این دستور ، می توانید اطلاعاتی را که جمع آوری شده است با تایپ دستور زیر بدست آورید:
$ sudo gluster volume profile volume_name info

Output
Brick: gluster0.example.com:/gluster-storage
——————————————–
Cumulative Stats:
%-latency Avg-latency Min-Latency Max-Latency No. of calls Fop
——— ———– ———– ———– ———— —-
0.00 0.00 us 0.00 us 0.00 us 30 FORGET
0.00 0.00 us 0.00 us 0.00 us 36 RELEASE
0.00 0.00 us 0.00 us 0.00 us 38 RELEASEDIR

Duration: 5445 seconds
Data Read: 0 bytes
Data Written: 0 bytes

Interval 0 Stats:
%-latency Avg-latency Min-Latency Max-Latency No. of calls Fop
——— ———– ———– ———– ———— —-
0.00 0.00 us 0.00 us 0.00 us 30 FORGET
0.00 0.00 us 0.00 us 0.00 us 36 RELEASE
0.00 0.00 us 0.00 us 0.00 us 38 RELEASEDIR

Duration: 5445 seconds
Data Read: 0 bytes
Data Written: 0 bytes
. . .

همانطور که قبلاً نشان داده شده است ، برای لیستی از کلیه مؤلفه های مرتبط با GlusterFS که در هریک از گره های شما اجرا شده است ، دستور gluster volume status را اجرا کنید:
$ sudo gluster volume status

Output
Status of volume: volume1
Gluster process TCP Port RDMA Port Online Pid
——————————————————————————
Brick gluster0.example.com:/gluster-storage 49152 0 Y 19003
Brick gluster1.example.com:/gluster-storage 49152 0 Y 19040
Self-heal Daemon on localhost N/A N/A Y 19061
Self-heal Daemon on gluster0.example.com N/A N/A Y 19836

Task Status of Volume volume1
——————————————————————————
There are no active volume tasks

اگر می خواهید والیوم ذخیره سازی GlusterFS خود را مدیریت کنید ، ممکن است ایده خوبی باشد که به کنسول GlusterFS وارد شوید. این امر به شما امکان می دهد قبل از همه چیز با محیط GlusterFS خود ارتباط برقرار کنید:
$ sudo gluster

این امر به شما اعلانی را نشان می دهد که می توانید دستورات خود را تایپ کنید. help اعلان خوبی برای جهت گیری میباشد:
Gluster> help

Output
peer help – display help for peer commands
volume help – display help for volume commands
volume bitrot help – display help for volume bitrot commands
volume quota help – display help for volume quota commands
snapshot help – display help for snapshot commands
global help – list global commands

پس از اتمام ، برای خروج از کنسول Gluster ، exit را اجرا کنید:
Gluster> exit

با این کار ، آماده هستید تا GlusterFS را با برنامه بعدی خود ادغام کنید.
نتیجه
با تکمیل این آموزش ، یک سیستم ذخیره سازی اضافی دارید که به شما امکان می دهد همزمان روی دو سرور مجازی جداگانه بنویسید. این ویژگی می تواند برای تعدادی از برنامه ها مفید باشد و می تواند اطمینان حاصل کند که داده های شما حتی در صورت تنزل یک سرور مجازی در دسترس باشند

 

برچسب‌ها:

  • behnam gol mohamadi
  • ۰
  • ۰

امروزه Laravel یکی از محبوب ترین چارچوب های منبع باز برنامه PHP است. معمولاً با یک پایگاه داده MySQL مستقر می شود اما می تواند به گنه ای پیکربندی شود که از انواع مختلف گزینه های ذخیره داده backend استفاده کند.Laravel مفتخر است که از بسیاری از ویژگی های مدرن PHP و اکوسیستم گسترده بسته استفاده می کند.
Kubernetes یک پلتفرم هماهنگ سازی کانتینر است که می تواند بر روی خوشه های vpsgol Kubernetes میزبانی شود تا بخش عمده ای از کار اجرایی را در راه اندازی و اجرای کانتینرها در تولید انجام دهد. Helm یک مدیر بسته Kubernetes است که پیکربندی و نصب سرویس ها و pod ها در Kubernetes را آسان تر می کند.
در این راهنما یک برنامه PHP Laravel ایجاد می کنید ، برنامه خود را در یک تصویر Docker ایجاد می کنید و با استفاده از نمودار LAMP Helm آن تصویر را در یک خوشه vpsgol Kubernetes به کار می گیرید. در مرحله بعدی ، یک کنترلر Ingress را تنظیم می کنید تا SSL و یک نام دامنه سفارشی را به برنامه تان اضافه کنید. پس از اتمام ، یک برنامه Laravel در حال کار و متصل به یک پایگاه داده MySQL خواهید داشت که روی یک خوشه Kubernetes در حال اجرا است.
پیش نیازها
⦁ Docker روی دستگاهی که از آن به خوشه خود دسترسی پیدا کنید ، نصب شده باشد. می توانید دستورالعمل های دقیقی در مورد نصب Docker برای اکثر توزیع های لینوکس در اینجا یا در وب سایت Docker برای سایر سیستم عامل ها پیدا کنید.
⦁ یک حساب کاربری در Docker Hub برای ذخیره تصاویر Docker که می خواهید در طول این آموزش ایجاد کنید.
⦁ یک خوشه vpsgol Kubernetes 1.17+ که پیکربندی اتصال شما به صورت پیش فرض kubectl تنظیم شده باشد.
⦁ مدیر بسته Helm 3 نصب شده روی دستگاه محلی شما. مرحله اول را کامل کنید و از مرحله دوم نحوه نصب نرم افزار روی Kubernetes Cluster با آموزش Helm 3 Package Manager ، repo stable  را اضافه کنید.
⦁ یک نام دامنه کاملاً ثبت شده با یک رکورد A در دسترس. در سراسر این آموزش از your_domain استفاده خواهد شد. می توانید نام دامنه را در Namecheap خریداری کنید ، به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید. در مورد IP برای رکورد A دامنه خود در این زمان نگران نباشید. هنگامی که به مرحله 5 رسیدید و کنترلر Ingress شما در محل کار قرار گرفت ، your_domain خود را به IP مناسب وصل می کنید.
مرحله 1 – ایجاد یک برنامه جدید Laravel
در این مرحله از Docker برای ایجاد یک برنامه جدید Laravel 7 استفاده خواهید کرد ، اما باید بتوانید با یک برنامه موجود Laravel که از MySQL به عنوان پایگاه داده پشتیبان استفاده می کند ، مراحل مشابه را طی کنید. برنامه جدیدی که شما ایجاد می کنید ، تأیید می کند که Laravel به بانک اطلاعاتی متصل شده است و نام بانک اطلاعات را نشان می دهد.
ابتدا به دیرکتوری هوم خود بروید و سپس با استفاده از یک کانتینر composer Docker یک برنامه جدید Laravel ایجاد کنید:
⦁ $ cd ~

⦁ $ docker run –rm -v $(pwd):/app composer create-project –prefer-dist laravel/laravel laravel-kubernetes

پس از اتمام کار کانتینر و نصب تمام بسته های composer ، باید نصب جدیدی از Laravel را در دیرکتوری فعلی خود با نام laravel-kubernetes ببینید. به آن پوشه بروید:
⦁ $ cd ~/laravel-kubernetes

بقیه دستورات این آموزش را از اینجا اجرا خواهید کرد.
هدف از این برنامه تست اتصال بانک اطلاعاتی شما و نمایش نام آن در مرورگر شما است. برای آزمایش اتصال بانک اطلاعاتی ، فایل ./resources/views/welcome.blade.phpرا در ویرایشگر متن باز کنید:
⦁ $ nano ./resources/views/welcome.blade.php

بخش <div class = “link”> … </div> را پیدا کنید و محتوای آن را با موارد زیر جایگزین کنید:
./resources/views/welcome.blade.php

<div class=”links”>
<strong>Database Connected: </strong>
@php
try {
DB::connection()->getPDO();
echo DB::connection()->getDatabaseName();
} catch (\Exception $e) {
echo ‘None’;
}
@endphp
</div>

فایل را ذخیره کنید و ببندید.
این کارها تمام سفارشی سازی هایی است که برای این آموزش باید روی برنامه پیش فرض Laravel انجام دهید. پس از اتمام ، این قطعه مختصر از PHP ، اتصال به پایگاه داده شما را آزمایش می کند و نام بانک اطلاعاتی را روی صفحه نمایش Laravel در مرورگر وب شما نمایش می دهد.
در مرحله بعد ، از Docker برای ساختن تصویری که حاوی این برنامه Laravel و Docker Compose است برای بررسی کارکرد آن به صورت محلی و اتصال به یک پایگاه داده MySQL استفاده می کنید.
مرحله 2 – کانتینرایز کردن برنامه Laravel
اکنون که یک برنامه جدید Laravel ایجاد کرده اید ، باید کد خود را در یک تصویر Docker بسازید و سپس تصویر را با Docker Compose تست کنید. در حالی که هدف از این آموزش استقرار برنامه روی یک خوشه Kubernetes است ، Docker Compose روشی مناسب برای آزمایش تصویر Docker و پیکربندی به صورت محلی قبل از اجرای آن روی cloud است. این حلقه بازخورد سریع می تواند برای ایجاد و آزمایش تغییرات کوچک مفید باشد.
ابتدا با استفاده از nano یا ویرایشگر متن مورد نظر خود ، یک فایل را در ریشه برنامه Laravel خود با نام Dockerfile ایجاد کنید:
⦁ $ nano ./Dockerfile

محتوای زیر را اضافه کنید. Docker از این فایل برای ساختن کد شما در تصویر استفاده می کند:
./Dockerfile
FROM php:7.4-apache

# Install packages
RUN apt-get update && apt-get install -y \
git \
zip \
curl \
sudo \
unzip \
libicu-dev \
libbz2-dev \
libpng-dev \
libjpeg-dev \
libmcrypt-dev \
libreadline-dev \
libfreetype6-dev \
g++

# Apache configuration
ENV APACHE_DOCUMENT_ROOT=/var/www/html/public
RUN sed -ri -e ‘s!/var/www/html!${APACHE_DOCUMENT_ROOT}!g’ /etc/apache2/sites-available/*.conf
RUN sed -ri -e ‘s!/var/www/!${APACHE_DOCUMENT_ROOT}!g’ /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
RUN a2enmod rewrite headers

# Common PHP Extensions
RUN docker-php-ext-install \
bz2 \
intl \
iconv \
bcmath \
opcache \
calendar \
pdo_mysql

# Ensure PHP logs are captured by the container
ENV LOG_CHANNEL=stderr

# Set a volume mount point for your code
VOLUME /var/www/html

# Copy code and run composer
COPY –from=composer:latest /usr/bin/composer /usr/bin/composer
COPY . /var/www/tmp
RUN cd /var/www/tmp && composer install –no-dev

# Ensure the entrypoint file can be run
RUN chmod +x /var/www/tmp/docker-entrypoint.sh
ENTRYPOINT [“/var/www/tmp/docker-entrypoint.sh”]

# The default apache run command
CMD [“apache2-foreground”]

فایل را ذخیره کنید و ببندید.
این Dockerfile با تصویر PHP 7.4 Apache Docker که در Docker Hub یافت می شود ، شروع می کند ، سپس چندین بسته Linux را که معمولاً توسط برنامه های Laravel مورد نیاز هستند ، نصب می کند. در مرحله بعد ، فایلهای پیکربندی Apache را ایجاد کرده و بازنویسی هدر را فعال می کند.Dockerfile چندین پسوند متداول PHP را نصب می کند و متغیر محیطی را اضافه می کند تا اطمینان حاصل کند که ورود های لاراول از طریق stderr به داخل کانتینر منتقل می شوند. این به شما امکان می دهد تا ورودهای لاراول را با پیگیری Docker Compose یا Kubernetes ببینید.
سرانجام ، Dockerfile تمام کدهای موجود در برنامه Laravel را در / var / www / tmp کپی کرده و متعلقات Composer را نصب می کند. سپس ENTRYPOINT را تنظیم می کند ، اما باید آن فایل را ایجاد کنید ، که در مرحله بعدی انجام خواهیم داد.
در دیرکتوری اصلی پروژه خود ، فایل جدیدی بنام docker-entrypoint.sh ایجاد کنید. این فایل هنگامی اجرا می شود که کانتینر شما به صورت محلی یا در خوشه Kubernetes اجرا شود ، و کد برنامه Laravel شما را از دیرکتوری / var / www / tmp به / var / www / html کپی می کند که Apache قادر به ارائه آن است.
⦁ $ nano ./docker-entrypoint.sh

اکنون اسکریپت زیر را اضافه کنید:
./docker-entrypoint.sh
#!/bin/bash

cp -R /var/www/tmp/. /var/www/html/
chown -R www-data:www-data /var/www/html

exec “$@”

خط آخر ، exec “$@” به پوسته دستور می دهد تا دستور دیگری را که به عنوان یک آرگومان ورودی به آن وارد شد ، اجرا کند. از این جهت مهم است که شما می خواهید Docker بعد از اجرای این اسکریپت ، دستور اجرای آپاچی (apache2-foreground) را ادامه دهد. فایل را ذخیره کنید و ببندید.
در مرحله بعدی ، یک فایل .dockerignore را در دیرکتوری اصلی برنامه خود ایجاد کنید. این فایل اطمینان می دهد که هنگام ساختن تصویر Docker ، با بسته ها یا فایل های محیطی که نباید در آن کپی گردد مخلوط نمی شود:
⦁ $ nano ./.dockerignore

./.dockerignore
.env
/vendor

فایل را ذخیره کنید و ببندید.
آخرین فایلی که باید قبل از اجرای برنامه خود بصورت محلی با استفاده از Docker Compose ایجاد کنید ، فایل docker-compose.yml است. اما در طول پیکربندی این فایل YAML ، باید APP_KEY را که لاراول هنگام نصب ایجاد کرده است ، وارد کنید. با باز کردن و جستجو در فایل ./.env یا با اجرای دستورات cat و grep زیر ، آن را پیدا کنید:
⦁ $ cat .env | grep ^APP_KEY

خروجی مانند این را مشاهده خواهید کرد:
Output
APP_KEY=base64:0EHhVpgg … UjGE=

کلید خود را در کلیپ بورد خود کپی کنید. حتماً پیشوند base64: وجود دارد. اکنون فایل docker-compose.yml را در دیرکتوری اصلی برنامه خود ایجاد کنید:
⦁ $ nano ./docker-compose.yml

در اینجا ما برای پیاده سازی پایگاه داده شما از تصویر PHP برنامه Laravel و همچنین یک کانتینر MySQL استفاده خواهیم کرد. محتوای زیر را اضافه کنید:
./docker-compose.yml
version: ‘3.5’
services:
php:
image: your_docker_hub_username/laravel-kubernetes:latest
restart: always
ports:
– 8000:80
environment:
– APP_KEY=”your_laravel_app_key”
– APP_ENV=local
– APP_DEBUG=true
– DB_PORT=3306
– DB_HOST=mysql
– DB_DATABASE
– DB_USERNAME
– DB_PASSWORD
mysql:
image: mysql:5.7
restart: always
environment:
– MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
– MYSQL_DATABASE=${DB_DATABASE}
– MYSQL_USER=${DB_USERNAME}
– MYSQL_PASSWORD=${DB_PASSWORD}

برای متغیر your_laravel_app_key از متغیر APP_KEY که در کلیپ بورد کپی کرده اید استفاده کنید و از متغیر your_docker_hub_username برای نام کاربری Docker Hub استفاده نمایید. فایل را ذخیره کنید و ببندید.
اولین تصویر را بصورت محلی با استفاده از docker build ایجاد خواهید کرد. تصویر دوم تصویر رسمی MySQL Docker است که در Hub Docker موجود است. هر دو به چندین متغیر محیطی احتیاج دارند ، که شما هنگام اجرای کانتینرها خواهید داشت.
برای ساختن تصویر Docker حاوی برنامه Laravel ، دستور زیر را اجرا کنید. مطمئن شوید که your_docker_hub_username را با نام کاربری یا نام کاربری تیم خود در Docker Hub که این تصویر در آن ذخیره می شود ، جایگزین کنید:
⦁ $ docker build -t your_docker_hub_username/laravel-kubernetes:latest .

در مرحله بعد ، می توانید این دو کانتینر را با Docker Compose با اعتبارات موردنیاز بانک اطلاعاتی اجرا کنید:
⦁ $ DB_ROOT_PASSWORD=rootpassword DB_DATABASE=local_db DB_USERNAME=admin DB_PASSWORD=password docker-compose up -d

چهار متغیر محیطی که در اینجا مورد استفاده قرار می گیرند ( DB_ROOT_PASSWORD ، DB_DATABASE ، DB_USERNAME، DB_PASSWORD) در صورت تمایل می توانند اصلاح شوند ، اما از آنجا که شما فقط برنامه خود را بصورت محلی آزمایش می کنید ، دیگر لازم نیست نگران امنیت آنها باشید.
ممکن است حداکثر 30 ثانیه طول بکشد تا پایگاه داده MySQL شروع به کار کند و کانتینرها آماده شوند. هنگامی که آماده بودند ، می توانید برنامه Laravel خود را بر روی دستگاه خود در localhost:8000مشاهده کنید.

برنامه PHP شما به پایگاه داده MySQL شما متصل می شود. پس از اتصال موفق ، متن “بانک اطلاعاتی متصل: local_db” در زیر آرم Laravel ظاهر می شود.
اکنون که تصویر Docker خود را بصورت محلی با استفاده از Docker Compose آزمایش کرده اید ، می توانید کانتینرها را با اجرای docker-compose down پایین بیاورید:
⦁ $ docker-compose down

در بخش بعدی ، تصویر Docker خود را به Docker Hub سوق می دهید تا نمودار Helm شما بتواند از آن برای استقرار برنامه خود در خوشه Kubernetes استفاده کند.
مرحله 3 – وارد کردن تصویر Docker به Docker Hub
نمودار LAMP Helm که برای استفاده از کد خود در Kubernetes استفاده خواهید کرد ، نیاز دارد که کد شما در یک رجیستری کانتینر موجود باشد. در حالی که می توانید تصویر خود را به یک رجیستری خصوصی یا خود هاست وارد کنید ، برای اهداف این آموزش از یک رجیستری Docker در دسترس عمومی و رایگان در Docker Hub استفاده خواهید کرد.
با استفاده از مرورگر وب خود به حساب کاربری خود در Docker Hub دسترسی پیدا کنید و سپس یک مخزن جدید به نام laravel-kubernetes ایجاد کنید.

در مرحله بعد ، اگر از دستگاه محلی خود به Docker Hub متصل نشده اید ، باید وارد Docker Hub شوید. می توانید این کار را از طریق خط فرمان انجام دهید:
⦁ $ docker login -u your_docker_hub_username

هنگام درخواست ، اعتبارنامه ورود خود را وارد کنید. این کار معمولاً فقط باید یک بار در هر دستگاه انجام شود زیرا Docker اعتبار شما را در دیرکتوری ~ / .docker / config.json در دیرکتوری هوم شما ذخیره می کند.
در آخر ، تصویر خود را به Docker Hub وارد کنید:
⦁ $ docker push your_docker_hub_username/laravel-kubernetes:latest

بسته به اتصال شما ممکن است چند دقیقه طول بکشد تا برنامه تان آپلود شود، اما هنگامی که کار Docker انجام شد ، یک hash نهایی و اندازه تصویر خود را در ترمینال مشاهده خواهید کرد. چیزی شبیه به این خواهد بود:
Output
latest: digest: sha256:df4bdeda91484c8c26a989b13b8f27ab14d93ab2e676e3c396714cb3811c4086 size: 4918

اکنون که برنامه Laravel شما محصور شده است و تصویری را به Docker Hub فشار داده اید ، می توانید از آن در یک طرح Helm Chart یا Kubernetes استفاده کنید. در مرحله بعد ، مقادیر سفارشی را بر اساس نمودار LAMP Helm تنظیم کرده و آن را به خوشه vpsgol Kubernetes خود مستقر می کنید.
مرحله 4 – پیکربندی و به کارگیری برنامه با نمودار LAMP Helm
Helm تعدادی نمودار را برای کمک به شما در تنظیم برنامه های Kubernetes با استفاده از ابزارهای از پیش تعیین شده ابزارها فراهم می کند. در حالی که شما می توانید فایل های خدمات Kubernetes خود را برای دستیابی به استقرار مشابه بنویسید ، در این بخش خواهید دید که استفاده از نمودار Helm به پیکربندی بسیار کمتری نیاز دارد.
ابتدا برای ذخیره کلیه فایل های پیکربندی Helm به یک دیرکتوری راهنما نیاز دارید. دایرکتوری جدیدی را در ریشه پروژه Laravel خود به نام helm ایجاد کنید:
⦁ $ mkdir ./helm

در داخل دایرکتوری helm / ، دو فایل جدید ایجاد خواهید کرد: values.yml و secrets.yml. ابتدا values.yml را ایجاد و باز کنید:
⦁ $ nano ./helm/values.yml

فایل values.yml شامل گزینه های پیکربندی غیر سری است که مقادیر پیش فرض در نمودار LAMP Helm را رونویسی می کند. تنظیمات زیر را اضافه کنید ، مطمئن شوید که نام_docker_hub_us را با نام کاربری شخصی خود جایگزین کنید:
./helm/values.yml
php:
repository: “your_docker_hub_username/laravel-kubernetes”
tag: “latest”
fpmEnabled: false
envVars:
– name: APP_ENV
value: production
– name: APP_DEBUG
value: false
– name: DB_PORT
value: 3306
– name: DB_HOST
value: localhost

فایل را ذخیره کنید و ببندید.
اکنون یک فایل secrets.yml ایجاد کنید:
⦁ $ nano ./helm/secrets.yml

secrets.yml تحت بررسی کنترل نسخه قرار نمیگیرد. شامل اطلاعات پیکربندی حساس مانند گذرواژه پایگاه داده شما و کلید برنامه Laravel است. تنظیمات زیر را انجام دهید و متناسب با نیاز و اعتبارات خود تنظیم کنید:
./helm/secrets.yml
mysql:
rootPassword: “your_database_root_password”
user: your_database_user
password: “your_database_password”
database: your_database_name

php:
envVars:
– name: APP_KEY
value: “your_laravel_app_key”
– name: DB_DATABASE
value: your_database_name
– name: DB_USERNAME
value: your_database_user
– name: DB_PASSWORD
value: “your_database_password”

حتماً از نام کاربری و رمز ورود ترکیبی برای پایگاه داده تولید خود استفاده کنید و از همان your_laravel_app_key همانند بالا استفاده کنید ، یا یک پنجره ترمینال جدید را باز کنید و با اجرای دستور زیر یک مورد جدید ایجاد کنید. سپس می توانید مقدار جدیدی را که Laravel در فایل .env خود قرار دارد کپی کنید:
⦁ $ docker run –rm -v $(pwd):/app php:cli php /app/artisan key:generate

secrets.yml را ذخیره کنید و ببندید.
در مرحله بعد ، برای جلوگیری از ایجاد فایل secrets.yml در تصویر Docker یا ذخیره روی کنترل نسخه ، مطمئن شوید که خط زیر را هم به فایل های .dockerignore و .gitignore اضافه می کنید. /helm/secrets.yml را در هر فایل باز کرده و پیوست کنید ، یا برای اضافه کردن هر دو دستور زیر را اجرا کنید:
⦁ $ echo ‘/helm/secrets.yml’ >> ./.dockerignore && echo ‘/helm/secrets.yml’ >> ./.gitignore

اکنون که فایل های پیکربندی Helm را برای برنامه خود و تصویر Docker ایجاد کرده اید ، می توانید این نمودار Helm را به عنوان یک نسخه جدید در خوشه Kubernetes خود نصب کنید. نمودار خود را از دیرکتوری اصلی برنامه خود نصب کنید:
⦁ $ helm install laravel-kubernetes -f helm/values.yml -f helm/secrets.yml stable/lamp

خروجی مانند این را مشاهده خواهید کرد:
Output
NAME: laravel-kubernetes
LAST DEPLOYED: Mon May 18 13:21:20 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1

برنامه شما یک یا دو دقیقه طول می کشد تا در دسترس قرار گیرد ، اما می توانید این دستور را برای نظارت بر خدمات Kubernetes در خوشه خود اجرا کنید:
⦁ $ kubectl get services -w

به دنبال نام برنامه خود باشید:
Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
laravel-kubernetes-lamp LoadBalancer your_cluster_ip your_external_ip 80:32175/TCP,3306:32243/TCP

هنگامی که سرویس جدید laravel-kubernetes-lamp شما آدرس IP را تحت EXTERNAL-IP نمایش می دهد ، می توانید برای دیدن برنامه در خوشه Kubernetes خود ، به your_external_ip مراجعه کنید. برنامه شما به بانک اطلاعاتی شما متصل می شود ، مانند آنچه هنگام اجرای برنامه به صورت محلی روی Docker Compose انجام دادید ، نام بانک اطلاعاتی را در زیر آرم Laravel مشاهده خواهید کرد.

اجرای یک برنامه وب در آدرس IP نا ایمن ممکن است برای اثبات مفهوم مناسب باشد ، اما وب سایت شما بدون گواهی SSL و نام دامنه سفارشی آماده تولید نیست. قبل از انجام تنظیمات در مرحله بعدی ، نسخه خود را از طریق خط فرمان uninstall کنید:
⦁ $ helm delete laravel-kubernetes

در مرحله بعد ، اولین پیکربندی Helm را بسط میدهید تا یک کنترلر Ingress ، گواهی SSL و دامنه سفارشی را به برنامه Laravel خود اضافه کنید.
مرحله 5 – اضافه کردن کنترلرIngress و SSL به خوشه Kubernetes
در Kubernetes ، کنترلرIngress مسئول ارائه خدمات برنامه شما در اینترنت است. در مرحله قبل ، نمودار LAMP Helm یک لود بالانسر vpsgol ایجاد کرد و برنامه شما را مستقیماً از طریق آدرس IP لود بالانسر به نمایش میگذارد.
می توانید SSL و نام دامنه خود را مستقیماً روی لود بالانسر محدود کنید ، اما از آنجا که در Kubernetes کار می کنید ، ممکن است مدیریت همه آن ها در یک مکان راحت تر باشد. برای اطلاعات بیشتر در مورد کنترلرهای Ingress و جزئیات بیشتر در مورد مراحل زیر ، نحوه تنظیم یک Nginx Ingress در vpsgol Kubernetes با استفاده از Helm را بخوانید.
نمودار LAMP Helm شامل گزینه ای برای تنظیم پشتیبانی از Ingress است. فایل helm/values.yml خود را باز کنید:
⦁ $ nano ./helm/values.yml

خطوط زیر را اضافه کنید:
./helm/values.yml

# Use Ingress Controller
service:
type: ClusterIP
HTTPPort: 80
ingress:
enabled: true
domain: your_domain

این امر باعث میشود استقرار شما لود بالانسر را نصب نکند و در عوض برنامه را در پورت 80 خوشه Kubernetes ارائه دهد که کنترلرIngress آن را در اینترنت قرار دهد. values.yml را ذخیره کرده و ببندید.
اکنون دستور helm install را که قبلاً اجرا کرده اید ، اجرا کنید تا دوباره برنامه Laravel خود را راه اندازی نمایید. حتماً این دستور را از دیرکتوری روت برنامه خود اجرا کنید:
⦁ $ helm install laravel-kubernetes -f helm/values.yml -f helm/secrets.yml stable/lamp

سپس ، کنترلر nginx-ingress را روی خوشه Kubernetes خود با استفاده از کنترلرNginx Ingress تحت کنترل Kubernetes نصب کنید:
⦁ $ helm install nginx-ingress stable/nginx-ingress –set controller.publishService.enabled=true

پس از نصب ، خروجی مانند این را مشاهده خواهید کرد:
Output
NAME: nginx-ingress
LAST DEPLOYED: Mon May 18 13:28:34 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1

برای به نمایش گذاشتن استقرار برنامه Laravel به یک منبع Ingress نیز نیاز دارید. یک فایل جدید در دیرکتوری اصلی برنامه خود با نام ingress.yml ایجاد کنید:
⦁ $ nano ./ingress.yml

این فایل، هاست برنامه ، یعنی مدیر گواهینامه SSL و خدمات backend و نام پورت شما را تعریف می کند. تنظیمات زیر را اضافه کنید ، و your_domain را با دامنه مورد نظر خود جایگزین کنید:
./ingress.yml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: laravel-kubernetes-ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
– hosts:
– your_domain
secretName: laravel-kubernetes-tls
rules:
– host: your_domain
http:
paths:
– backend:
serviceName: laravel-kubernetes-lamp
servicePort: 80

فایل را ذخیره کنید و ببندید.
در مرحله بعد ، باید Cert-Manager را نصب کنید و یک صادرکننده ایجاد کنید که به شما امکان می دهد با استفاده از Let’s Encrypt ، گواهی های تولید SSL تولید کنید.Cert-Manager به تعاریف منابع سفارشی نیاز دارد که می توانید با استفاده از خط فرمان از مخزن Cert-Manager استفاده کنید:
⦁ $ kubectl apply –validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.15.0/cert-manager.crds.yaml

تعدادی از منابع Kubernetes را ایجاد می کند که در خط فرمان نمایش داده می شوند:
Output
customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io create

Cert-Manager همچنین برای جداسازی آن در خوشه Kubernetes به یک فضای نام نیاز دارد:
⦁ $ kubectl create namespace cert-manager

این خروجی را مشاهده خواهید کرد:
Output
namespace/cert-manager created

از آنجا که cert منیجر Jetstack یکی از نمودارهای حفظ شده Kubernetes نیست ، شما باید مخزن Jetstack Helm را نیز اضافه کنید. دستور زیر را اجرا کنید تا در Helm در دسترس باشد:
$ helm repo add jetstack https://charts.jetstack.io

افزودن موفقیت آمیز خروجی زیر را به همراه خواهد داشت:
Output
“jetstack” has been added to your repositories

اکنون آماده هستید تا Cert-Manager را در فضای نام cert منیجر در خوشه Kubernetes خود نصب کنید:
$ helm install cert-manager –version v0.15.0 –namespace cert-manager jetstack/cert-manager

پس از اتمام ، خلاصه ای از استقرار مانند این را مشاهده خواهید کرد:
Output
NAME: cert-manager
LAST DEPLOYED: Mon May 18 13:32:08 2020
NAMESPACE: cert-manager
STATUS: deployed
REVISION: 1

آخرین فایلی که باید به دیرکتوری اصلی برنامه Laravel اضافه کنید ، یک فایل پیکربندی production_issuer.yml Kubernetes است. فایل را ایجاد کنید:
$ nano ./production_issuer.yml
اکنون موارد زیر را اضافه کنید:
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
# Email address used for ACME registration
email: your_email_address
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
# Name of a secret used to store the ACME account private key
name: letsencrypt-prod-private-key
# Add a single challenge solver, HTTP01 using nginx
solvers:
– http01:
ingress:
class: nginx

فایل را ذخیره کنید و ببندید.
Let’s Encrypt، هشدارهای مهم و هشدارهای مربوط به انقضا را به your_email_address ارسال میکند ، بنابراین حتماً آدرسی را که مرتباً بررسی میکنید ، اضافه نمایید. این فایل را ذخیره کنید و یک منبع جدید هم برای منبع Ingress و هم برای صادرکننده تولید در خوشه Kubernetes خود ایجاد کنید:
⦁ $ kubectl create -f ingress.yml

⦁ $ kubectl create -f production_issuer.yml

در آخر ، رکوردهای DNS نام دامنه خود را به روز کنید تا یک رکورد به آدرس IP لود بالانسر شما نشان داده شود. برای یافتن آدرس IP برای کنترلرIngress خود این دستور را وارد کنید:
⦁ $ kubectl get service nginx-ingress-controller

Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-ingress-controller LoadBalancer your_cluster_ip your_external_ip

از آدرس your_external_ip به عنوان آدرس IP برای رکورد DNS A خود استفاده کنید. روند به روزرسانی رکوردهای DNS شما بسته به مکانی که شما نام دامنه و هاست DNS خود را مدیریت می کنید ، متفاوت است.
هنگامی که رکوردهای DNS شما به روزرسانی شد و گواهینامه SSL شما تولید گردید ، برنامه شما در your_domain موجود است و SSL فعال خواهد شد.

در حالی که برنامه PHP و بانک اطلاعاتی شما اکنون به هم متصل هستند ، همچنان نیاز به رفتن به پایگاه داده دارید. در مرحله آخر ، نحوه اجرای فرامین Artisan را در غلاف Kubernetes خود مشاهده خواهید کرد تا جابه جایی به پایگاه داده و سایر کارهای تعمیر و نگهداری معمول را انجام دهید.

مرحله 6 – اجرای دستورات از راه دور
در حالی که برنامه Laravel شما در حال اجراست و به پایگاه داده MySQL در Kubernetes متصل شده است ، چندین عملیات معمول وجود دارد که باید آنها را با نصب جدید Laravel اجرا کنید. یکی از کارهای متداولی که باید انجام دهید ، انتقال پایگاه داده است.
قبل از اینکه بتوانید یک دستور Artisan را در برنامه Laravel خود اجرا کنید ، باید نام غلاف را اجرا کنید که کانتینر برنامه Laravel شماست. با استفاده از خط فرمان ، می توانید تمام غلاف ها را در خوشه Kubernetes خود مشاهده کنید:
$ kubectl get pods

خروجی مانند این را مشاهده خواهید کرد:
Output
NAME READY STATUS RESTARTS AGE
laravel-kubernetes-lamp-77fb989b46-wczgb 2/2 Running 0 16m

غلاف را برای استقرار laravel-kubernetes-lamp-… انتخاب کنید. حتماً از نام موجود در خروجی خود استفاده کنید و از نام ذکر شده در بالا استفاده نکنید. اکنون می توانید kubectl exec را روی آن اجرا کنید. به عنوان مثال ، با استفاده از دستور artisan migrate ، یک جابه جایی بانک اطلاعاتی را اجرا کنید. شما پرچم –force را اضافه می کنید زیرا در حال تولید غلاف هستید:
$ kubectl exec laravel-kubernetes-lamp-77fb989b46-wczgb — php artisan migrate –force

این دستور یک خروجی تولید می کند:
Output
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.16 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.05 seconds)

شما اکنون با موفقیت Laravel 7 و MySQL را به Kubernetes مستقر کرده اید و یک کار اساسی برای نگهداری پایگاه داده را انجام داده اید.

نتیجه
در این آموزش ، یاد گرفتید که چگونه یک برنامه کاربردی Laravel PHP را کانتینرایز کنید ، آن را به یک پایگاه داده MySQL متصل کنید ، یک تصویر داکر حاوی کد خود را به Docker Hub وارد کنید ، و سپس از یک نمودار Helm برای استقرار آن تصویر در یک خوشه vpsgol Kubernetes استفاده کنید. در آخر ، SSL و یک نام دامنه سفارشی اضافه کردید و یاد گرفتید که چگونه ابزارهای خط فرمان را روی غلافهای در حال اجرای خود راه اندازی کنید.
Kubernetes و Helm مزایای بسیاری نسبت به هاستینگ معمول LAMP Stack را ارائه می دهند: مقیاس پذیری ، امکان تعویض سرویس ها بدون ورود مستقیم به سرور ، ابزارهایی برای انجام به روزرسانی ها و کنترل روی محیط هاست. به عبارتی ، پیچیدگی کانتینرایز اولیه و پیکربندی برنامه شما مانع شروع کار سریع می شود. با استفاده از این راهنما به عنوان نقطه شروع ، استقرار Laravel به Kubernetes قابل دستیابی تر می شود. از این به بعد میتوانید درباره قدرت لاراول یا اضافه کردن ابزارهای نظارتی به Kubernetes مانند Linkerd ، که می توانید بصورت دستی با راهنمای ما یا با vpsgol 1-Click نصب کنید ، اطلاعاتی دریافت کنید.

 

برچسب‌ها:

  • behnam gol mohamadi