loading...
سرور مجازی
behnam gol mohamadi بازدید : 18 سه شنبه 17 تیر 1399 نظرات (0)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/home/sammy/Maildir/cur:

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

/home/sammy/Maildir/tmp:

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

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

init

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

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

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

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

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

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

This is a test. Please confirm receipt!

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

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

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

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

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

 

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

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

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

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

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

نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04

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

نصب Jitsi Meet در Debian 10

نصب و پیکربندی Nextcloud در اوبونتو 20.04

نصب و پیکربندی Ansible در اوبونتو 20.04

مقدمه ای بر مدیریت پیکربندی با Ansible

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

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

نصب و پیکربندی Postfix در اوبونتو 20.04

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

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

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

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

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

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

 

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

 

برچسب‌ها:

behnam gol mohamadi بازدید : 15 سه شنبه 17 تیر 1399 نظرات (0)

 

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

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

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

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

⦁ $ cd ~/myproject

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

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

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

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

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

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

@app.route(“/”)
def hello():
return “<h1 style=’color:blue’>Hello There!</h1>”

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

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

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

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

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

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

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

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

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

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

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

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

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

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

master = true
processes = 5

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

master = true
processes = 5

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

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

master = true
processes = 5

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

die-on-term = true

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

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

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

[Service]
User=sammy
Group=www-data

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

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

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

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

[Install]
WantedBy=multi-user.target

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

⦁ $ sudo systemctl enable myproject

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

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

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

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

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

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

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

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

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

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

⦁ $ sudo ufw allow ‘Nginx Full’

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04

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

نصب Jitsi Meet در Debian 10

نصب و پیکربندی Nextcloud در اوبونتو 20.04

نصب و پیکربندی Ansible در اوبونتو 20.04

مقدمه ای بر مدیریت پیکربندی با Ansible

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

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

نصب و پیکربندی Postfix در اوبونتو 20.04

 

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

 

برچسب‌ها:

behnam gol mohamadi بازدید : 9 سه شنبه 17 تیر 1399 نظرات (0)

در این راهنما یک برنامه 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 بازدید : 16 سه شنبه 17 تیر 1399 نظرات (0)

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 بازدید : 15 سه شنبه 17 تیر 1399 نظرات (0)

 

با حرکت ابزارهای گسترش دهنده به سمت 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 بازدید : 18 سه شنبه 17 تیر 1399 نظرات (0)

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 بازدید : 12 سه شنبه 17 تیر 1399 نظرات (0)

سیستم های کنترل نسخه بخشی ضروری از توسعه نرم افزاری مدرن هستند. نسخه سازی به شما امکان می دهد تا نرم افزار خود را در سطح منبع دنبال کنید. می توانید تغییرات را ردیابی کنید ، به مراحل قبلی برگردید و انشعاب ایجاد کنید تا نسخه های متفاوتی از فایل ها و دیرکتوری ها ایجاد کنید.
بسیاری از فایل های پروژه ها در یک مخزن Git نگهداری می شوند و پلتفرم هایی مانند GitHub ، GitLab و Bitbucket به تسهیل اشتراک و همکاری پروژه توسعه نرم افزار کمک می کنند.
در این راهنما نحوه نصب و پیکربندی Git روی سرور مجازی Ubuntu 20.04 را بررسی خواهیم کرد. نحوه نصب نرم افزار را به دو روش مختلف پوشش خواهیم داد: از طریق مدیر بسته داخلی و از طریق منبع. هر یک از این رویکردها بسته به نیازهای خاص شما مزایای خاص خود را دارد.

پیش نیازها
به یک سرور مجازی Ubuntu 20.04 با یک حساب فوق کاربری غیر ریشه نیاز خواهید داشت.
برای انجام این کار، می توانید راهنمای ستاپ اولیه سرور مجازی برای Ubuntu 20.04 را دنبال کنید.
با راه اندازی سرور مجازی و کاربر ، آماده شروع کار هستید.

نصب Git با بسته های پیش فرض
گزینه نصب با بسته های پیش فرض برای کسانی که می خواهند به سرعت با Git پیش بروند، یا کسانی که نسخه پایدار و پر کاربرد را ترجیح می دهند ، یا کسانی که به دنبال جدیدترین گزینه های موجود نیستند، بهترین انتخاب است. اگر به دنبال جدیدترین نسخه منتشر شده هستید ، باید به سراغ بخش نصب آن از منبع بروید.
Git احتمالا روی سرور مجازی اوبونتو شما نصب است. میتوانید این موضوع را با دستور زیر تایید کنید:

$ git –version

اگر خروجی شبیه به زیر دریافت کردید، یعنی Git قبلا نصب شده است:
Output
git version 2.25.1

اگر این گونه است ، می توانید به سراغ تنظیم Git بروید ، یا در صورت نیاز به نسخه به روزتر ، می توانید بخش بعدی نحوه نصب از منبع را بخوانید.
با این حال ، اگر شماره نسخه Git را در خروجی دریافت نکردید ، می توانید آن را با مدیر بسته پیش فرض اوبونتو APT نصب کنید.
ابتدا ، از ابزارهای مدیریت بسته apt برای به روزرسانی ایندکس بسته محلی خود استفاده کنید.
$ sudo apt update

با اتمام به روزرسانی ، می توانید Git را نصب کنید:
$ sudo apt install git

می توانید با اجرای دستور زیر و بررسی اینکه خروجی مربوطه را دریافت کرده اید ، تایید کنید که Git را به درستی نصب کرده اید:
$ git –version

Output
git version 2.25.1

با نصب موفقیت آمیز Git ، اکنون می توانید برای تکمیل تنظیم خود به بخش Setting Up Git بروید.

نصب Git از Source
یک روش انعطاف پذیرتر برای نصب Git ، کامپایل نرم افزار از منبع است. این کار زمان بیشتری طول می کشد و از طریق مدیر بسته شما نگه داری نمی شود ، اما به شما امکان می دهد آخرین نسخه را دانلود کنید و در صورت تمایل به شخصی سازی ، کنترل برخی گزینه ها را در اختیار شما قرار می دهد.
نسخه Git که در حال حاضر روی سرور مجازی شما نصب شده است را تایید کنید:
$ git –version

اگر Git نصب شده است، خروجی شبیه به این دریافت خواهید کرد:
Output
git version 2.25.1

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

$ sudo apt install libz-dev libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext cmake gcc

بعد از اینکه متعلقات لازم را نصب کردید ، یک دیرکتوری موقت ایجاد کنید و به داخل آن بروید. اینجاست که تاربال Git خود را دانلود خواهیم کرد.
$ mkdir tmp

$ cd /tmp

از وب سایت پروژه Git ، می توانیم به لیست تاربل در https://mirrors.edge.kernel.org/pub/software/scm/git/ برویم و نسخه مورد نظر خود را دانلود کنیم. در زمان نوشتن این مقاله ، جدیدترین نسخه 2.26.2 است ، بنابراین ما آن را برای اهداف نمایشی دانلود خواهیم کرد. از curl استفاده می کنیم و فایلی را که دانلود می کنیم به git.tar.gz. میفرستیم:

$ curl -o git.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz

فایل تاربال فشرده را باز کنید:

$ tar -zxf git.tar.gz
سپس، وارد دیرکتوری جدید Git شوید:

$ cd git-*

اکنون می توانید بسته را ایجاد کرده و با تایپ این دو دستور آن را نصب کنید:
$ make prefix=/usr/local all

$ sudo make prefix=/usr/local install

اکنون فرآیند پوسته را به گونه ای جایگزین کنید که نسخه Git که اکنون نصب کرده ایم استفاده شود:
$ exec bash

پس از تکمیل این کار ، می توانید با بررسی نسخه مطمئن شوید که نصب شما موفقیت آمیز بوده است.
$ git –version

Output
git version 2.26.0
با نصب موفقیت آمیز Git ، اکنون می توانید ستاپ خود را تکمیل کنید.

راه اندازی Git

بعد از اینکه از نسخه Git خود راضی شدید ، باید Git را پیکربندی کنید تا پیام های تعهد تولید شده حاوی اطلاعات صحیح شما باشند و در هنگام ساخت پروژه نرم افزاری از شما پشتیبانی کنند.
پیکربندی را می توان با استفاده از دستور پیکربندی git انجام داد. به طور خاص ، باید نام و آدرس ایمیل خود را ارائه کنیم زیرا Git این اطلاعات را در هر تعهدی که انجام می دهیم وارد می کند. می توانیم با تایپ دستور زیر، پیش برویم و این اطلاعات را اضافه کنیم:
$ git config –global user.name “Your Name”

$ git config –global user.email “youremail@domain.com”

ما می توانیم تمام موارد پیکربندی تنظیم شده را با تایپ دستور زیر نمایش دهیم:
$ git config –list

Output
user.name=Your Name
user.email=youremail@domain.com

اطلاعاتی که وارد می کنید در پرونده پیکربندی Git شما ذخیره می شود ، که می توانید به صورت اختیاری با ویرایشگر متن مورد نظر خود مانند این ویرایش کنید (ما از nano استفاده خواهیم کرد):
$ nano ~/.gitconfig

~/.gitconfig contents
[user]
name = Your Name
email = youremail@domain.com

CTRL و X ، سپس Y و ENTER را فشار دهید تا از ویرایشگر متن خارج شوید.
گزینه های دیگر بسیاری وجود دارد که می توانید تنظیم کنید ، اما این دو مورد ضروری هستند. اگر این مرحله را رد کنید ، احتمالاً هنگام تعهد به Git هشدارهایی مشاهده خواهید کرد. این باعث می شود کار بیشتری برای شما ایجاد شود زیرا مجبور خواهید بود تعهداتی را که انجام داده اید با اطلاعات اصلاح شده جایگزین کنید.

نتیجه
اکنون باید Git را نصب کرده و آماده استفاده در سیستم خود باشید.
برای کسب اطلاعات بیشتر در مورد نحوه استفاده از Git ، این مقاله ها و مجموعه ها را بررسی کنید:
• چگونه می توان از Git به طور موثر استفاده کرد
• نحوه استفاده از انشعابات Git
• مقدمه ای بر منبع باز

 

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

چگونه به 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 بازدید : 18 سه شنبه 17 تیر 1399 نظرات (0)

حتی با محبوبیت روزافزون خدمات ابری ، نیاز به اجرای برنامه های بومی هنوز وجود دارد.
با استفاده از noVNC و TigerVNC ، می توانید برنامه های بومی را درون یک کانتینر Docker اجرا کنید و از راه دور با استفاده از یک مرورگر وب به آنها دسترسی پیدا کنید. علاوه بر این ، می توانید برنامه خود را بر روی سرور مجازی با منابع سیستم بیشتر از آنچه به صورت محلی موجود دارید اجرا کنید ، که می تواند در هنگام اجرای برنامه های بزرگ ، انعطاف پذیری بیشتری را ارائه دهد.
در این آموزش ، Mozilla Thunderbird ، کلاینت ایمیل را با استفاده از Docker کانتینرایز می کنید. پس از آن ، آن را ایمن کرده و با استفاده از سرور مجازی وب Caddy امکان دسترسی از راه دور را فراهم خواهید کرد.
پس از اتمام کار ، فقط با یک مرورگر وب می توانید از هر وسیله ای به Thunderbird دسترسی پیدا کنید. همچنین به صورت اختیاری می توانید با استفاده از WebDAV به طور محلی به فایل های موجود در آن دسترسی پیدا کنید. همچنین یک تصویر کاملاً خود شمول از Docker خواهید داشت که می توانید در هر مکانی اجرا کنید.
پیش نیازها
قبل از شروع این راهنما ، به موارد زیر نیاز خواهید داشت:
⦁ یک سرور مجازی اوبونتو 18.04 با حداقل 2 گیگابایت رم و فضای دیسک 4 گیگابایتی.
⦁ یک کاربر غیر ریشه با امتیازات sudo.
⦁ Docker که روی سرور مجازی شما تنظیم شده باشد. می توانید نحوه نصب و استفاده از Docker در Ubuntu 18.04 را در این لینک دنبال کنید.
مرحله 1 – ایجاد پیکربندی supervisord
اکنون که سرور مجازی شما در حال اجرا است و Docker نصب شده است ، آماده هستید تا پیکربندی کانتینر برنامه خود را شروع کنید. از آنجا که کانتینر شما از چندین مؤلفه تشکیل شده است ، برای راه اندازی و نظارت بر آنها باید از یک مدیر فرآیند استفاده کنید. در اینجا ، از supervisord استفاده خواهید کرد. supervisord یک مدیر فرآیند است که در پایتون نوشته شده و اغلب برای موزون کردن کانتینرهای پیچیده استفاده می شود.
ابتدا دایرکتوری به نام thunderbird برای کانتینر خود ایجاد کنید و وارد شوید:
⦁ $ mkdir ~/thunderbird

⦁ $ cd ~/thunderbird

اکنون با استفاده از nano یا ویرایشگر مورد نظر خود ، فایلی به نام supervisord.conf ایجاد و باز کنید:
⦁ $ nano supervisord.conf

اکنون این اولین بلوک کد را به supraord.conf اضافه کنید ، که گزینه های جهانی برای supervisord را تعریف می کند:
~/thunderbird/supervisord.conf
[supervisord]
nodaemon=true
pidfile=/tmp/supervisord.pid
logfile=/dev/fd/1
logfile_maxbytes=0
در این بخش ، شما خود supervisord را پیکربندی می کنید. باید nodaemon را روی true تنظیم کنید زیرا درون یک کانتینر Docker به عنوان ورودی وارد می شود. بنابراین ، می خواهید که در پیش زمینه اجرا شود. همچنین pidfile را روی مسیری که توسط یک کاربر غیر ریشه قابل دسترسی است و logfile را روی stdout تنظیم میکنید تا بتوانید ورودها را مشاهده کنید.
در مرحله بعد ، یک بلوک کد کوچک دیگر را به supervisord.conf اضافه کنید. این بلوک TigerVNC را که یک سرور مجازی ترکیبی VNC / X11 است شروع می کند:
~/thunderbird/supervisord.conf

[program:x11]
priority=0
command=/usr/bin/Xtigervnc -desktop “Thunderbird” -localhost -rfbport 5900 -SecurityTypes None -AlwaysShared -AcceptKeyEvents -AcceptPointerEvents -AcceptSetDesktopSize -SendCutText -AcceptCutText :0
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

در این بلوک ، سرور مجازی X11 را تنظیم می کنید. X11 یک پروتکل سرور مجازی نمایشگر است ، همان چیزی است که به برنامه های GUI اجازه اجرا می دهد. توجه داشته باشید که در آینده باWayland جایگزین خواهد شد ، اما دسترسی از راه دور هنوز در دست توسعه است.
برای این کانتینر ، شما از TigerVNC و سرور مجازی داخلی VNC استفاده می کنید. که دارای چندین مزیت نسبت به استفاده از یک سرور مجازی جداگانه X11 و VNC است:
• زمان پاسخ سریعتر ، زیرا کشیدن GUI مستقیماً روی سرور مجازی VNC انجام می شود به جای اینکه روی یک بافر چارچوب واسطه (حافظه ای که محتویات صفحه را ذخیره می کند) انجام شود.
• تغییر اندازه خودکار صفحه ، که به برنامه ریموت اجازه می دهد تا به طور خودکار تغییر اندازه دهد تا با کلاینت (در این حالت ، پنجره مرورگر وب شما) متناسب باشد.
در صورت تمایل ، می توانید آرگومان را برای گزینه -desktop از Thunderbird به چیز دیگری که انتخاب کرده اید تغییر دهید. سرور مجازی انتخاب شما را به عنوان تیتر صفحه وب مورد استفاده برای دسترسی به برنامه شما نمایش می دهد.
اکنون ، بیایید یک بلوک سوم از کد را به supervisord.conf اضافه کنیم تا easy-novnc را شروع کنیم:
~/thunderbird/supervisord.conf

[program:easy-novnc]
priority=0
command=/usr/local/bin/easy-novnc –addr :8080 –host localhost –port 5900 –no-url-password –novnc-params “resize=remote”
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

در این بلوک ، یک easy-novnc را راه اندازی می کنید ، یک سرور مجازی مستقل که یک پوشش حول noVNC فراهم می کند. این سرور مجازی دو نقش را انجام می دهد. ابتدا یک صفحه اتصال ساده فراهم می کند که به شما امکان می دهد گزینه های اتصال را پیکربندی کنید و به شما امکان می دهد موارد پیش فرض را تنظیم کنید. دوم ، VNC را روی WebSocket پروکسی میکند ، که به آن امکان دسترسی از طریق یک مرورگر وب معمولی را می دهد.
معمولاً تغییر اندازه در سمت کلاینت انجام می شود (یعنی مقیاس بندی تصویر) ، اما شما از گزینه resize=remote استفاده می کنید تا از تنظیمات وضوح تصویری از راه دور TigerVNC استفاده کامل کنید. این گزینه همچنین تأخیر کمتری را در دستگاه های کندتر مانند Chromebooks رده پایین ایجاد می کند:
توجه: در این آموزش از easy-novnc استفاده شده است. در صورت تمایل می توانید به جای آن از websockify و یک وب سرور مجازی جداگانه استفاده کنید. مزیت easy-novnc این است که میزان حافظه و زمان راه اندازی آن به میزان قابل توجهی پایین است و خود شمول به حساب می آید. easy-novnc همچنین یک صفحه اتصال تمیزتر نسبت به noVNC پیش فرض ارائه می دهد و تنظیم گزینه های پیش فرض مفید برای این ستاپ (مانند resize=remote) را ممکن می سازد.

برای شروع OpenBox ، یعنی مدیر پنجره ، بلوک زیر را به پیکربندی خود اضافه کنید:
~/thunderbird/supervisord.conf

[program:openbox]
priority=1
command=/usr/bin/openbox
environment=DISPLAY=:0
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

در این بلوک ، شما در حال راه اندازی OpenBox ، مدیر پنجره سبک X11 هستید. می توانید از این مرحله بگذرید ، اما بدون آن ، نمودارهای میله ای عنوان را ندارید یا نمی توانید اندازه ویندوز را تغییر دهید.
در آخر ، بیایید آخرین بلوک را به supervisord.conf اضافه کنیم ، که برنامه اصلی را شروع می کند:
~/thunderbird/supervisord.conf

[program:app]
priority=1
environment=DISPLAY=:0
command=/usr/bin/thunderbird
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

در این بلوک آخر ، برای اطمینان از اجرای Thunderbird بعد از TigerVNC ، اولویت را روی 1 تنظیم کنید در غیر این صورت با یک شرایط مسابقه روبرو می شوید و به طور تصادفی در شروع کار ناکام خواهید ماند. بنابراین autorestart = true قرار دهید تا اگر برنامه به اشتباه بسته شد ، برنامه را مجدداً باز کنید. متغیر محیط DISPLAY به برنامه می گوید تا روی سرور مجازی VNC که قبلاً تنظیم کرده اید نمایش داده شود.
در اینجا ظاهر نهایی supervisord.conf شما نمایش داده شده است:
~/thunderbird/supervisord.conf
[supervisord]
nodaemon=true
pidfile=/tmp/supervisord.pid
logfile=/dev/fd/1
logfile_maxbytes=0

[program:x11]
priority=0
command=/usr/bin/Xtigervnc -desktop “Thunderbird” -localhost -rfbport 5900 -SecurityTypes None -AlwaysShared -AcceptKeyEvents -AcceptPointerEvents -AcceptSetDesktopSize -SendCutText -AcceptCutText :0
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

[program:easy-novnc]
priority=0
command=/usr/local/bin/easy-novnc –addr :8080 –host localhost –port 5900 –no-url-password –novnc-params “resize=remote”
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

[program:openbox]
priority=1
command=/usr/bin/openbox
environment=DISPLAY=:0
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

[program:app]
priority=1
environment=DISPLAY=:0
command=/usr/bin/thunderbird
autorestart=true
stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true

اگر می خواهید برنامه دیگری را کانتینرایز کنید ، /usr/bin/thunderbird را با مسیر قابل اجرای برنامه خود جایگزین کنید. در غیر این صورت ، اکنون آماده پیکربندی منوی اصلی GUI خود هستید.
مرحله 2 – تنظیم منوی OpenBox
اکنون که مدیر پروسه شما پیکربندی شده است ، بیایید منوی OpenBox را تنظیم کنیم. این منو به ما امکان می دهد تا برنامه ها را درون کانتینر راه اندازی کنیم. همچنین یک ترمینال و مانیتور پردازش برای اشکال زدایی در صورت لزوم را در اختیار خواهیم داشت.
در داخل دیرکتوری برنامه خود ، از nano یا ویرایشگر متن مورد علاقه خود استفاده کنید تا فایل جدیدی به نام menu.xml ایجاد و باز کنید:
⦁ $ nano ~/thunderbird/menu.xml

اکنون کد زیر را به menu.xml اضافه کنید:
~/thunderbird/menu.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<openbox_menu xmlns=”http://openbox.org/” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://openbox.org/ file:///usr/share/openbox/menu.xsd”>
<menu id=”root-menu” label=”Openbox 3″>
<item label=”Thunderbird”>
<action name=”Execute”>
<execute>/usr/bin/thunderbird</execute>
</action>
</item>
<item label=”Terminal”>
<action name=”Execute”>
<execute>/usr/bin/x-terminal-emulator</execute>
</action>
</item>
<item label=”Htop”>
<action name=”Execute”>
<execute>/usr/bin/x-terminal-emulator -e htop</execute>
</action>
</item>
</menu>
</openbox_menu>

این فایل XML شامل آیتم های منو است که با کلیک راست بر روی دسکتاپ ظاهر می شود. هر مورد از یک لیبل و یک عمل تشکیل شده است.
اگر می خواهید برنامه دیگری را کانتینرایز کنید ، / usr / bin / thunderbird را با مسیر اجرایی برنامه خود جایگزین کنید و لیبل مورد را تغییر دهید.
مرحله 3 – ایجاد Dockerfile
اکنون که OpenBox پیکربندی شده است ، Dockerfile را ایجاد خواهید کرد ، که همه چیز را به هم پیوند می دهد.
یک Dockerfile در دیرکتوری کانتینر خود ایجاد کنید:
⦁ $nano ~/thunderbird/Dockerfile

برای شروع ، بیایید برای ساختن easy-novnc کد دیگری اضافه کنیم:
~/thunderbird/Dockerfile
FROM golang:1.14-buster AS easy-novnc-build
WORKDIR /src
RUN go mod init build && \
go get github.com/geek1011/easy-novnc@v1.1.0 && \
go build -o /bin/easy-novnc github.com/geek1011/easy-novnc

در مرحله اول ، شما در حال ساختن easy-novnc هستید. برای سادگی و صرفه جویی در فضا این کار در یک مرحله جداگانه انجام می شود – به زنجیره ابزار کلیGo در تصویر نهایی خود نیازی ندارید. به@ v1.1.0 در دستور build توجه داشته باشید. این تضمین می کند که نتیجه تعیین کننده است ، و از آن جهت مهم است که Docker نتیجه هر مرحله را ذخیره می کند. اگر نسخه صریح را مشخص نکرده اید ، Docker در زمان ساخت اولین تصویر، آخرین نسخه های easy-novnc را ارجاع می دهد. علاوه بر این ، بهتر است اطمینان حاصل کنید که یک نسخه خاص از easy-novnc را دانلود می کنید تا در صورت ایجاد تغییرات در رابط CLI آن را داشته باشید.
حالا بیایید مرحله دوم را ایجاد کنیم که به تصویر نهایی تبدیل می شود. در اینجا از Debian 10 (Buster) به عنوان تصویر پایه استفاده خواهید کرد. توجه داشته باشید که از آنجا که این کار در یک کانتینر در حال اجرا است ، صرف نظر از توزیع شما در سرور خود ، کار خواهد کرد.
سپس ، بلوک زیر را به Dockerfile خود اضافه کنید:
~/thunderbird/Dockerfile

FROM debian:buster
RUN apt-get update -y && \
apt-get install -y –no-install-recommends openbox tigervnc-standalone-server supervisor gosu && \
rm -rf /var/lib/apt/lists && \
mkdir -p /usr/share/desktop-directories

در این دستورالعمل ، شما Debian 10 را به عنوان تصویر پایه خود نصب می کنید و سپس حداقل مورد نیاز برای اجرای برنامه های GUI را در کانتینر خود نصب می کنید. توجه داشته باشید که apt-get update را به عنوان بخشی از همان دستورالعمل ها برای جلوگیری از مشکلات ذخیره سازی در Docker ، اجرا کنید. برای صرفه جویی در فضا ، همچنین لیست های بسته را که بعد از آن دانلود شده است حذف می کنید (بسته های ذخیره شده به صورت پیش فرض حذف می شوند). همچنین /usr/share/desktop-directories را ایجاد می کنید زیرا برخی برنامه ها به دایرکتوری موجود بستگی دارند.
بیایید یک بلوک کد کوچک دیگر اضافه کنیم:
~/thunderbird/Dockerfile

RUN apt-get update -y && \
apt-get install -y –no-install-recommends lxterminal nano wget openssh-client rsync ca-certificates xdg-utils htop tar xzip gzip bzip2 zip unzip && \
rm -rf /var/lib/apt/lists

در این دستورالعمل ، شما در حال نصب برخی از نرم افزارها و بسته های عمومی مفید هستید. موارد قابل توجه در اینجا xd-utils (که دستورات پایه مورد استفاده برنامه های دسکتاپ را در لینوکس فراهم می کند) و ca-certificates (که گواهی های ریشه را نصب می کند تا به ما امکان دسترسی به سایت های HTTPS را بدهد) هستند.
اکنون می توانیم دستورالعمل برنامه اصلی را اضافه کنیم:
~/thunderbird/Dockerfile

RUN apt-get update -y && \
apt-get install -y –no-install-recommends thunderbird && \
rm -rf /var/lib/apt/lists

مانند گذشته ، در اینجا ما در حال نصب برنامه هستیم. اگر برنامه کاربردی دیگری را کانتینرایز میکنید ، می توانید این دستورات را با دستورالعمل های لازم برای نصب برنامه خاص خود جایگزین کنید. برخی از برنامه ها برای اجرای داخل Docker به کار کمی بیشتر نیاز دارند. به عنوان مثال ، اگر برنامه ای را نصب می کنید که از Chrome ،Chromium یا QtWebEngine استفاده می کند ، باید از آرگومان خط فرمان –no-sandbox استفاده کنید ، زیرا در Docker پشتیبانی نمی شود.
در مرحله بعد ، بیایید دستورالعمل هایی را اضافه کنیم تا چند فایل آخر به کانتینر اضافه شود:
~/thunderbird/Dockerfile

COPY –from=easy-novnc-build /bin/easy-novnc /usr/local/bin/
COPY menu.xml /etc/xdg/openbox/
COPY supervisord.conf /etc/
EXPOSE 8080

در اینجا شما می توانید فایل های پیکربندی را که قبلاً ایجاد کرده اید به تصویر اضافه کرده و از مرحله اول کپی کردن باینری easy-novnc را انجام دهید.
این بلوک کد بعدی دایرکتوری داده را ایجاد می کند و کاربر اختصاصی را برای برنامه شما اضافه می کند. از آن جهت مهم است که برخی برنامه ها از اجرا به عنوان ریشه خودداری می کنند. همچنین بهتر است که حتی در یک کانتینر ، برنامه ها را به صورت ریشه اجرا نکنید.
~/thunderbird/Dockerfile

RUN groupadd –gid 1000 app && \
useradd –home-dir /data –shell /bin/bash –uid 1000 –gid 1000 app && \
mkdir -p /data
VOLUME /data

برای اطمینان از یک UID / GID سازگار برای فایل ها ، صریحاً هر دو را روی 1000 تنظیم می کنید. همچنین می توانید یک حجم را در دایرکتوری داده قرار دهید تا اطمینان حاصل شود که بین راه ریستارت ها همچنان ادامه دارد.
در آخر ، دستورالعمل هایی را برای راه اندازی همه موارد اضافه می کنیم:
~/thunderbird/Dockerfile

CMD [“sh”, “-c”, “chown app:app /data /dev/stdout && exec gosu app supervisord”]

با تنظیم دستور پیش فرض روی supervisord ، مدیر فرآیندهای مورد نیاز برای اجرای برنامه شما را راه اندازی می کند. در این حالت ، به جای ENTRYPOINT از CMD استفاده می کنید. در بیشتر موارد ، تفاوتی ایجاد نمی کند ، اما استفاده از CMD برای این منظور به چند دلیل مناسب تر است. اولا ، supervisord هیچ آرگومانی مربوط به ما را دریافت نمیکند ، و اگر آرگومان هایی را به کانتینر ارائه می دهید ، آنها CMD را جایگزین می كنند و به ENTRYPOINT اضافه می شوند. دوما ، استفاده از CMD به ما امکان می دهد هنگام ارسال آرگومان ها به داخل کانتینر ، یک دستور کاملاً متفاوت (که توسط / bin / sh -c اجرا خواهد شد) ارائه دهیم ، که اشکال زدایی را آسان تر می کند.
و در آخر ، لازم است قبل از شروع supervisord ، chown را به عنوان ریشه اجرا کنید تا از مشکلات مجوز در حجم داده جلوگیری کنید و به فرآیند کودک (child) اجازه دهید stdout را باز کند. این همچنین بدان معنی است که شما باید به جای دستورالعمل USER برای تعویض کاربر از gosu استفاده کنید.
در اینجا ظاهر Dockerfile تکمیل شده شما به شرح زیر است:
~/thunderbird/Dockerfile
FROM golang:1.14-buster AS easy-novnc-build
WORKDIR /src
RUN go mod init build && \
go get github.com/geek1011/easy-novnc@v1.1.0 && \
go build -o /bin/easy-novnc github.com/geek1011/easy-novnc

FROM debian:buster

RUN apt-get update -y && \
apt-get install -y –no-install-recommends openbox tigervnc-standalone-server supervisor gosu && \
rm -rf /var/lib/apt/lists && \
mkdir -p /usr/share/desktop-directories

RUN apt-get update -y && \
apt-get install -y –no-install-recommends lxterminal nano wget openssh-client rsync ca-certificates xdg-utils htop tar xzip gzip bzip2 zip unzip && \
rm -rf /var/lib/apt/lists

RUN apt-get update -y && \
apt-get install -y –no-install-recommends thunderbird && \
rm -rf /var/lib/apt/lists

COPY –from=easy-novnc-build /bin/easy-novnc /usr/local/bin/
COPY menu.xml /etc/xdg/openbox/
COPY supervisord.conf /etc/
EXPOSE 8080

RUN groupadd –gid 1000 app && \
useradd –home-dir /data –shell /bin/bash –uid 1000 –gid 1000 app && \
mkdir -p /data
VOLUME /data

CMD [“sh”, “-c”, “chown app:app /data /dev/stdout && exec gosu app supervisord”]

Dockerfile خود را ذخیره کرده و ببندید. اکنون آماده ساخت و اجرای کانتینر خود هستیم و سپس به Thunderbird – که یک برنامه GUI است، دسترسی پیدا خواهیم کرد.
مرحله 4 – ساخت و اجرای کانتینر
مرحله بعدی ساخت کانتینر شما و تنظیم آن در زمان راه اندازی است. همچنین می توانید یک حجم برای حفظ داده های برنامه بین ریستارت ها و به روز رسانی تنظیم کنید.
ابتدا کانتینر خود را بسازید. حتماً این دستورات را در دیرکتوری ~ / thunderbird اجرا کنید:
⦁ $ docker build -t thunderbird .

اکنون یک شبکه جدید ایجاد کنید که بین کانتینرهای برنامه به اشتراک گذاشته شود:
⦁ $ docker network create thunderbird-net

سپس یک حجم برای ذخیره داده های برنامه ایجاد کنید:
⦁ $ docker volume create thunderbird-data

در آخر ، آن را اجرا کرده و آن را روی ریستارت خودکار تنظیم کنید:
⦁ $ docker run –detach –restart=always –volume=thunderbird-data:/data –net=thunderbird-net –name=thunderbird-app thunderbird

توجه داشته باشید که در صورت تمایل ، می توانید برنامه thunderbird را بعد از گزینه –name با نام دیگری جایگزین کنید. هرچه انتخاب کردید ، اکنون برنامه شما کانتینرایز شده و در حال اجرا است. اکنون بیایید از سرور وب Caddy برای امنیت آن استفاده کنیم و از راه دور به آن متصل شویم.
مرحله 5 – راه اندازی Caddy
در این مرحله ، وب سرور Caddy را تنظیم می کنید تا تأیید هویت انجام شود و به صورت اختیاری ، دسترسی از راه دور فایل از طریق WebDAV را انجام دهد. برای سادگی و اینکه به شما امکان استفاده از پروکسی معکوس موجود خود را بدهد ، آن را در یک کانتینر دیگر اجرا کنید.
یک دیرکتوری جدید ایجاد کنید و سپس به داخل آن بروید:
⦁ $ mkdir ~/caddy

⦁ $ cd ~/caddy

اکنون با استفاده از nano یا ویرایشگر مورد نظر خود ، یک Dockerfile جدید ایجاد کنید:
⦁ $ nano ~/caddy/Dockerfile

سپس بخش های زیر را اضافه کنید:
~/caddy/Dockerfile
FROM golang:1.14-buster AS caddy-build
WORKDIR /src
RUN echo ‘module caddy’ > go.mod && \
echo ‘require github.com/caddyserver/caddy/v2 v2.0.0’ >> go.mod && \
echo ‘require github.com/mholt/caddy-webdav v0.0.0-20200523051447-bc5d19941ac3’ >> go.mod
RUN echo ‘package main’ > caddy.go && \
echo ‘import caddycmd “github.com/caddyserver/caddy/v2/cmd”‘ >> caddy.go && \
echo ‘import _ “github.com/caddyserver/caddy/v2/modules/standard”‘ >> caddy.go && \
echo ‘import _ “github.com/mholt/caddy-webdav”‘ >> caddy.go && \
echo ‘func main() { caddycmd.Main() }’ >> caddy.go
RUN go build -o /bin/caddy .

FROM debian:buster

RUN apt-get update -y && \
apt-get install -y –no-install-recommends gosu && \
rm -rf /var/lib/apt/lists

COPY –from=caddy-build /bin/caddy /usr/local/bin/
COPY Caddyfile /etc/
EXPOSE 8080

RUN groupadd –gid 1000 app && \
useradd –home-dir /data –shell /bin/bash –uid 1000 –gid 1000 app && \
mkdir -p /data
VOLUME /data

WORKDIR /data
CMD [“sh”, “-c”, “chown app:app /data && exec gosu app /usr/local/bin/caddy run -adapter caddyfile -config /etc/Caddyfile”]

این Dockerfile با فعال کردن افزونه WebDAV ، Caddy را ایجاد می کند ، و سپس آن را در پورت 8080 با Caddyfile در / etc / Caddyfile راه اندازی می کند. فایل را ذخیره کنید و ببندید.
سپس سرور وب Caddy را پیکربندی می کنید. فایلی به نام Caddyfile را در دایرکتوری که تازه ایجاد کرده اید ایجاد کنید:
⦁ $ nano ~/caddy/Caddyfile

اکنون بلوک کد زیر را به Caddyfile خود اضافه کنید:
~/caddy/Caddyfile
{
order webdav last
}
:8080 {
log
root * /data
reverse_proxy thunderbird-app:8080

handle /files/* {
uri strip_prefix /files
file_server browse
}
redir /files /files/

handle /webdav/* {
uri strip_prefix /webdav
webdav
}
redir /webdav /webdav/

basicauth /* {
{env.APP_USERNAME} {env.APP_PASSWORD_HASH}
}
}

این Caddyfile دیرکتوری اصلی را به کانتینر thunderbird-app که در مرحله 4 ایجاد کرده اید پروکسی میکند ( Docker آن را در IP صحیح تجزیه می کند). همچنین یک مرورگر فایل مبتنی بر وب فقط قابل خواندن در /files ارائه می کند و یک سرور WebDAV را روی / webdav اجرا می کند که می توانید برای دسترسی به فایل های خود به صورت محلی قرار دهید. نام کاربری و رمز عبور از متغیرهای محیط APP_USERNAME و APP_PASSWORD_HASH خوانده می شود.
اکنون کانتینر را بسازید:
⦁ $ docker build -t thunderbird-caddy .

Caddy v.2 شما را مجبور به رمزگذاری رمز عبور مورد نظر خود می کند. دستور زیر را اجرا کنید و به یاد داشته باشید که mypass را با یک رمز عبور قوی به انتخاب خود جایگزین کنید:
⦁ $ docker run –rm -it thunderbird-caddy caddy hash-password -plaintext ‘mypass’

این دستور یک رشته کاراکتر را تولید می کند. این کار را برای تهیه دستور بعدی در کلیپ بورد خود کپی کنید.
اکنون آماده اجرای کانتینر هستید. اطمینان حاصل کنید که myuser را با نام کاربری مورد نظر خود جایگزین کنید و mypass-hash را با همان دستوری که در مرحله قبل اجرا کردید جایگزین نمایید. همچنین می توانید پورت (8080 در اینجا) را برای دسترسی به سرور خود در پورت دیگری تغییر دهید:
⦁ $ docker run –detach –restart=always –volume=thunderbird-data:/data –net=thunderbird-net –name=thunderbird-web –env=APP_USERNAME=”myuser” –env=APP_PASSWORD_HASH=”mypass-hash” –publish=8080:8080 thunderbird-caddy

اکنون آماده دسترسی و آزمایش برنامه خود هستیم.
مرحله 6 – تست و مدیریت برنامه
بیایید به برنامه دسترسی پیدا کنیم و از عملکرد آن اطمینان حاصل نماییم.
ابتدا http: // your_server_ip: 8080 را در یک مرورگر وب باز کنید ، با اعتباراتی که قبلاً انتخاب کرده اید وارد شوید و روی connect کلیک کنید.

اکنون می توانید با برنامه تعامل برقرار کنید ، و برای تنظیم مناسب پنجره مرورگر ، باید به طور خودکار تغییر اندازه دهد.

اگر بر روی دسکتاپ سیاه رنگ کلیک راست کنید، باید منویی را مشاهده کنید که به شما امکان دسترسی به یک ترمینال را می دهد. اگر کلیک وسط کنید ​​، باید لیستی از پنجره ها را ببینید.

اکنون http://your_server_ip:8080/files/ را در یک مرورگر وب باز کنید. باید بتوانید به فایل های خود دسترسی پیدا کنید.

به صورت اختیاری ، می توانید http: // your_server_ip: 8080 / webdav / خود را در یک کلاینت WebDAV نصب کنید. باید بتوانید مستقیماً به فایل های خود دسترسی پیدا کرده و آن ها را تغییر دهید. اگر از گزینه Map network drive در ویندوز اکسپلورر استفاده می کنید ، باید برای اضافه کردنHTTPS از یک پروکسی معکوس استفاده کنید یا HKLM\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel را روی DWORD:2 تنظیم کنید.
در هر صورت ، برنامه GUI بومی شما اکنون برای استفاده از راه دور آماده است.
نتیجه
اکنون با موفقیت یک کانتینر Docker را برای Thunderbird تنظیم کرده اید و سپس با استفاده از Caddy ، دسترسی به آن را از طریق یک مرورگر وب پیکربندی کرده اید. در صورت نیاز به بروزرسانی برنامه خود ، کانتینرها را متوقف کنید ، docker rm thunderbird-app thunderbird-web را اجرای کنید، تصاویر را مجدد بسازید و سپس دستورات docker را از مراحل قبلی بالا مجدداً اجرا کنید. از آنجا که در یک حجم ذخیره می شود ، داده های شما همچنان حفظ می شوند.
اگر می خواهید در مورد دستورات اساسی Docker اطلاعات بیشتری کسب کنید ، می توانید این لینک آموزش یا این صفحه را بخوانید. برای استفاده طولانی مدت تر ، میتوانید HTTPS را برای امنیت بیشتر فعال کنید (برای این کار به دامنه ای نیاز دارید).
علاوه بر این ، اگر بیش از یک برنامه نصب کرده اید ، می توانید به جای شروع هر کانتینر به صورت دستی ، از Docker Compose یا Kubernetes استفاده کنید. و به یاد داشته باشید ، این آموزش می تواند به عنوان پایه ای برای اجرای سایر برنامه های لینوکس روی سرور شما استفاده شود ، از جمله:
⦁ Wine ، یک لایه سازگاری برای اجرای برنامه های ویندوز در لینوکس.
⦁ GIMP ، ویرایشگر تصویر منبع باز.
⦁ Cutter ، پلتفرم مهندسی معکوس منبع باز.
این گزینه آخر پتانسیل بسیار مهمی را برای کانتینرایزینگ و دسترسی از راه دور به برنامه های GUI ارائه می دهد. با استفاده از این ستاپ ، اکنون می توانید از سروری با توان محاسباتی بسیار بیشتر از آنچه به صورت محلی در دسترس دارید برای اجرای ابزارهای منبع فشرده مانند Cutter استفاده کنید.

 

 

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

دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04

راه اندازی سایت توسعه Jekyll در اوبونتو 20.04

نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04

نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04

نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8

نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04

نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04

 

 

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

 

برچسب‌ها:

behnam gol mohamadi بازدید : 15 سه شنبه 17 تیر 1399 نظرات (0)

اگر به دنبال ایجاد یک وب سایت یا وبلاگ استاتیک (پایا) هستید ، Jekyll می تواند یک راه حل عالی باشد. Jekyll یک مولد سایت استاتیک منبع باز است که به زبان Ruby نوشته شده و امکان اجرای سریع دستوراتی را می دهد که به شما در مدیریت سایت شما از ابتدا تا استقرار تولید ، همه از خط فرمان کمک می کند. Jekyll از وبلاگ آگاه است و به دسته بندی ها ، پست ها و صفحه بندی هایی با طیف وسیعی از واردکنندگان در دسترس برای وارد کردن مطالب قبلی وبلاگ ، اولویت می دهد. اگر نیاز دارید که اغلب به صورت آفلاین کار کنید ، و ترجیح می دهید از ویرایشگرهای سبک برای فرم های وب جهت نگهداری محتوا استفاده کنید ، یا مایل به استفاده از کنترل نسخه برای ردیابی تغییرات در وب سایت خود هستید ، Jekyll می تواند آنچه را که برای تحقق اهداف خود نیاز دارید ، در اختیار شما قرار دهد.
در این آموزش ، ما یک سایت توسعه Jekyll را در Ubuntu 18.04 با محتوای تولید شده به صورت خودکار نصب خواهیم کرد. با نصب Jekyll ، می توانید یک سایت یا وبلاگ شخصی ایجاد کنید که در درجه اول با استفاده از فایل های علامت گذاری به عنوان و چند دستور Jekyll انجام می شود.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
• سرور مجازی Ubuntu 18.04 با یک کاربر غیر ریشه و دارای امتیازات sudo: می توانید در مورد نحوه تنظیم کاربر با این امتیازات در راهنمای ستاپ اولیه سرور مجازی برای اوبونتو 18.04 اطلاعات بیشتری کسب کنید.
پس از تکمیل این پیش نیاز ، آماده نصب Jekyll و متعلقات آن هستید.
مرحله 1 – نصب Jekyll
کار را با به روز کردن لیست بسته های خود شروع خواهیم کرد تا مطمئن شویم که جدیدترین اطلاعات را در مورد جدیدترین نسخه های بسته ها و متعلقات آنها داریم:
⦁ $ sudo apt update

در مرحله بعد ، بیایید make  و build-essential را نصب کنیم تا کتابخانه های Jekyll کامپایل شود ، و برای Ruby و کتابخانه های توسعه آن استفاده شود. ما در اینجا پرچم y را در نظر میگیریم که yes را تایید کنیم ، یعنی می خواهیم بسته ها را نصب کنیم و از تأیید اعلان خودداری کنیم.
⦁ $ sudo apt -y install make build-essential ruby ruby-dev

پس از اتمام این کار ، اجازه دهید دو خط به فایل .bashrc خود اضافه کنیم تا به مدیر بسته Ruby’s gem بگوییم که gems را در پوشه هوم کاربر ما قرار دهد. این کار از بروز مشکلات ناشی از نصب در سراسر سیستم جلوگیری می کند و در عین حال دستور jekyll  محلی را نیز به PATH کاربر اضافه می کند.
.bashrc را با یک ویرایشگر مورد نظر خود مانند nano باز کنید:
⦁ $ nano .bashrc

در انتهای فایل خطوط زیر را اضافه کنید:
.bashrc
# Ruby exports

export GEM_HOME=$HOME/gems
export PATH=$HOME/gems/bin:$PATH

فایل را ذخیره کنید و ببندید. برای فعال کردن خروجی ها ، دستور زیر را اجرا کنید:
⦁ $ source ~/.bashrc

پس از اتمام این کار ، از gem  برای نصب Jekyll خود و همچنین Bundler استفاده می کنیم که متعلقات gem  را مدیریت می کند. توجه داشته باشید که این کار ممکن است مدتی طول بکشد.
⦁ $ gem install jekyll bundler

در مرحله بعد ، مطمئن خواهیم شد که تنظیمات فایروال ما امکان ترافیک از طریق سرور مجازی وب توسعه Jekyll را فراهم می کند.
مرحله 2 – باز کردن فایروال
بیایید بررسی کنیم که آیا فایروال فعال است یا خیر. اگر فعال است ، اطمینان حاصل خواهیم کرد که ترافیک به سایت ما مجاز است ، بنابراین می توانیم سایت توسعه خود را در یک مرورگر وب مشاهده کنیم.
⦁ $ sudo ufw status

اگر با وضعیت غیرفعال مواجه شدید ، دستورات زیر را اجرا کنید.
ufw allow OpenSSH
sudo ufw enable

این کار باعث می شود فایروال شما در هنگام راه اندازی سیستم اجرا شود. ممکن است پیام های زیر را دریافت کنید (برای ادامه با ‘y ‘ تأیید کنید):
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

در مثال ما ، فقط SSH مجاز است:
Output
Status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

بسته به نحوه تنظیم فایروال تان ممکن است قوانین دیگری نیز در این زمینه داشته باشید یا اصلاً هیچ قانون فایروالی وجود نداشته باشد. از آنجا که فقط ترافیک SSH در این مورد مجاز است ، باید پورت 4000، پورت پیش فرض سرور مجازی توسعه Jekyll را باز کنیم:
⦁ $ sudo ufw allow 4000

اکنون قوانین فایروال ما باید موارد زیر را شامل شود:
Output
To Action From
— —— —-
OpenSSH ALLOW Anywhere
4000 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
4000 (v6) ALLOW Anywhere (v6)

اکنون با نصب نرم افزار و باز کردن پورت لازم ، آماده ایجاد سایت توسعه هستیم.
مرحله 3 – ایجاد یک سایت توسعه جدید
از دیرکتوری اصلی خود، از دستور Jekyll’s new برای ایجاد داربست برای سایتی در زیر مجموعه ای به نام www استفاده می کنیم:
⦁ $ cd ~

⦁ $ jekyll new www
دستور jekyll new برای نصب متعلقات لازم ، bundle install را شروع می کند ، سپس به صورت خودکار یک تم با نام Minima را نصب می کند. پس از نصب موفق ، باید خروجی مانند زیر را دریافت کنید:
Output
New jekyll site installed in /home/sammy/www.

دستور new  در Jekyll دیرکتوری ها و فایل های زیر را ایجاد می کند:

├── 404.html
├── about.markdown
├── _config.yml
├── Gemfile
├── Gemfile.lock
├── index.markdown
├── _posts
│ └── 2020-05-29-welcome-to-jekyll.markdown
└── _site

این فایل های وب سایت واقعی نیستند. بلکه فایلهای منبعی هستند که Jekyll برای ایجاد سایت استاتیک از آنها استفاده خواهد کرد. Jekyll به نامهای خاص ، الگوهای نامگذاری و ساختارهای دیرکتوری متکی است تا منابع مختلف محتوا را تجزیه کند و آنها را در یک سایت استاتیک جمع کند. استفاده از ساختار موجود و پیگیری کنوانسیون های نامگذاری Jekyll در هنگام افزودن پست ها و صفحات جدید بسیار مهم است.
نکته: tree یک دستور مفید برای بازرسی ساختار فایل ها و دیرکتوری ها از خط فرمان است. می توانید آن را با دستور زیر نصب کنید:
⦁ $ sudo apt install tree

برای استفاده از آن ، cd را در دیرکتوری مورد نظر خود قرار دهید و tree را تایپ کنید و یا مسیر رسیدن به نقطه شروع را با tree /home/sammy/www ارائه کنید.
مرحله 4 – راه اندازی وب سرور مجازی Jekyll
سرور مجازی وب سبک Jekyll به منظور پشتیبانی از توسعه سایت با نظارت بر فایل ها در دیرکتوری و بازگرداندن خودکار سایت استاتیک هر زمان که تغییر ایجاد شود ، طراحی شده است.
از آنجا که ما در حال کار بر روی یک سرور مجازی از راه دور هستیم ، برای جستجوی سایت از دستگاه محلی خود ، آدرس هاست را مشخص خواهیم کرد. اگر در حال کار روی یک دستگاه محلی هستید ، می توانید jekyll service را بدون تنظیمات هاست اجرا کنید و با http: // localhost: 4000 وصل شوید.
⦁ $ cd ~/www

⦁ $ jekyll serve –host=203.0.113.0

Output of jekyll server
Configuration file: /home/sammy/www/_config.yml
Source: /home/sammy/www
Destination: /home/sammy/www/_site
Incremental build: disabled. Enable with –incremental
Generating…
done in 0.645 seconds.
Auto-regeneration: enabled for ‘/home/sammy/www’
Server address: http://203.0.113.0:4000/
Server running… press ctrl-c to stop.

هنگامی که jekyll serve را وادار به شروع کردیم ، Jekyll پیکربندی و فایل های محتوا را در یک دیرکتوری جدید ، _site تجزیه و شروع به ارائه محتوای موجود در آن پوشه _siteمیکند.

├── 404.html
├── about.markdown
├── _config.yml
├── Gemfile
├── Gemfile.lock
├── index.markdown
├── _posts
│ └── 2020-05-29-welcome-to-jekyll.markdown
└── _site
├── 404.html
├── about
│ └── index.html
├── assets
│ ├── main.css
│ │ ├── main.css.map
│ └── minima-social-icons.svg
├── feed.xml
├── index.html
└── jekyll
└── update
└── 2020
└── 05
└── 29
└── welcome-to-jekyll.html

همچنین شروع به مشاهده تغییرات دیرکتوری فعلی ، www ، میکند. به محض ذخیره تغییر در یک پست یا صفحه ، سایت استاتیک به طور خودکار بازسازی می شود ، بنابراین مهم نیست که مستقیماً روی فایل های پوشه _site تغییری ایجاد نکنید.
اگر هنگام کار در سایت خود و در حین اجرای سرور مجازی توسعه در پیش زمینه ، این ترمینال را باز کنیم ، با اضافه کردن صفحات و پست ها و تغییر محتوا ، بازخورد فوری دریافت خواهیم کرد.
توجه: اگر در حال کار با یک سایت بزرگ هستید ، فعال کردن –incremental می تواند هر بار که تغییری به واسطه بازتولید فایل های تغییر یافته انجام میدهید، بازسازی را سرعت ببخشد اما ما برای این سایت کوچک به آن احتیاج نداریم. می توانید اطلاعات بیشتری در مورد این ویژگی آزمایشی در وب سایت Jekyll بدست آورید.
اکنون سایت در دسترس است. در یک مرورگر وب ، می توانیم از آن در آدرس سرور مجازی و پورت نمایش داده شده در خروجی حاصل از jekyll serve دیدن کنیم:

نتیجه
در این آموزش Jekyll را نصب کردیم و یک سایت توسعه با برخی از مطالب تولید شده به صورت خودکار ایجاد کردیم. می توانید با خواندن آموزش های دیگر ما در مورد این موضوع ، درباره Jekyll بیشتر بدانید:
• بررسی محتوای پیش فرض Jekyll
• نحوه کنترل URL ها و پیوندها در Jekyll

 

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

دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04

راه اندازی سایت توسعه Jekyll در اوبونتو 20.04

نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04

نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04

نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8

نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04

نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04

 

 

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

 

برچسب‌ها:

behnam gol mohamadi بازدید : 13 سه شنبه 17 تیر 1399 نظرات (0)

اگر به دنبال ایجاد یک وب سایت یا وبلاگ استاتیک (پایا) هستید ، Jekyll می تواند یک راه حل عالی باشد. Jekyll یک مولد سایت استاتیک منبع باز است که به زبان Ruby نوشته شده و امکان اجرای سریع دستوراتی را می دهد که به شما در مدیریت سایت شما از ابتدا تا استقرار تولید ، همه از خط فرمان کمک می کند. Jekyll از وبلاگ آگاه است و به دسته بندی ها ، پست ها و صفحه بندی هایی با طیف وسیعی از واردکنندگان در دسترس برای وارد کردن مطالب قبلی وبلاگ ، اولویت می دهد. اگر نیاز دارید که اغلب به صورت آفلاین کار کنید ، و ترجیح می دهید از ویرایشگرهای سبک برای فرم های وب جهت نگهداری محتوا استفاده کنید ، یا مایل به استفاده از کنترل نسخه برای ردیابی تغییرات در وب سایت خود هستید ، Jekyll می تواند آنچه را که برای تحقق اهداف خود نیاز دارید ، در اختیار شما قرار دهد.
در این آموزش ، ما یک سایت توسعه Jekyll را در Ubuntu 20.04 با محتوای تولید شده به صورت خودکار نصب خواهیم کرد. با نصب Jekyll ، می توانید یک سایت یا وبلاگ شخصی ایجاد کنید که در درجه اول با استفاده از فایل های علامت گذاری به عنوان و چند دستور Jekyll انجام می شود.
پیش نیازها
برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید:
• سرور مجازی Ubuntu 20.04 با یک کاربر غیر ریشه و دارای امتیازات sudo: می توانید در مورد نحوه تنظیم کاربر با این امتیازات در راهنمای ستاپ اولیه سرور مجازی برای اوبونتو 20.04 اطلاعات بیشتری کسب کنید.
پس از تکمیل این پیش نیاز ، آماده نصب Jekyll و متعلقات آن هستید.
مرحله 1 – نصب Jekyll
کار را با به روز کردن لیست بسته های خود شروع خواهیم کرد تا مطمئن شویم که جدیدترین اطلاعات را در مورد جدیدترین نسخه های بسته ها و متعلقات آنها داریم:
⦁ $ sudo apt update

در مرحله بعد ، بیایید make  و build-essential را نصب کنیم تا کتابخانه های Jekyll کامپایل شود ، و برای Ruby و کتابخانه های توسعه آن استفاده شود. ما در اینجا پرچم y را در نظر میگیریم که yes را تایید کنیم ، یعنی می خواهیم بسته ها را نصب کنیم و از تأیید اعلان خودداری کنیم.
⦁ $ sudo apt -y install make build-essential ruby ruby-dev

پس از اتمام این کار ، اجازه دهید دو خط به فایل .bashrc خود اضافه کنیم تا به مدیر بسته Ruby’s gem بگوییم که gems را در پوشه هوم کاربر ما قرار دهد. این کار از بروز مشکلات ناشی از نصب در سراسر سیستم جلوگیری می کند و در عین حال دستور jekyll  محلی را نیز به PATH کاربر اضافه می کند.
.bashrc را با یک ویرایشگر مورد نظر خود مانند nano باز کنید:
⦁ $ nano .bashrc

در انتهای فایل خطوط زیر را اضافه کنید:
.bashrc
# Ruby exports

export GEM_HOME=$HOME/gems
export PATH=$HOME/gems/bin:$PATH

فایل را ذخیره کنید و ببندید. برای فعال کردن خروجی ها ، دستور زیر را اجرا کنید:
⦁ $ source ~/.bashrc

پس از اتمام این کار ، از gem  برای نصب Jekyll خود و همچنین Bundler استفاده می کنیم که متعلقات gem  را مدیریت می کند. توجه داشته باشید که این کار ممکن است مدتی طول بکشد.
⦁ $ gem install jekyll bundler

در مرحله بعد ، مطمئن خواهیم شد که تنظیمات فایروال ما امکان ترافیک از طریق سرور مجازی وب توسعه Jekyll را فراهم می کند.
مرحله 2 – باز کردن فایروال
بیایید بررسی کنیم که آیا فایروال فعال است یا خیر. اگر چنین است ، اطمینان حاصل خواهیم کرد که ترافیک به سایت ما مجاز است ، بنابراین می توانیم سایت توسعه خود را در یک مرورگر وب مشاهده کنیم.
⦁ $ sudo ufw status

اگر با وضعیت غیرفعال مواجه شدید ، دستورات زیر را اجرا کنید.
ufw allow OpenSSH
sudo ufw enable

این کار باعث می شود فایروال شما در هنگام راه اندازی سیستم اجرا شود. ممکن است پیام های زیر را دریافت کنید (برای ادامه با ‘y ‘ تأیید کنید):
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

در مثال ما ، فقط SSH مجاز است:
Output
Status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)

بسته به نحوه تنظیم فایروال تان ممکن است قوانین دیگری نیز در این زمینه داشته باشید یا اصلاً هیچ قانون فایروالی وجود نداشته باشد. از آنجا که فقط ترافیک SSH در این مورد مجاز است ، باید پورت 4000، پورت پیش فرض سرور مجازی توسعه Jekyll را باز کنیم:
⦁ $ sudo ufw allow 4000

اکنون قوانین فایروال ما باید موارد زیر را شامل شود:
Output
To Action From
— —— —-
OpenSSH ALLOW Anywhere
4000 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
4000 (v6) ALLOW Anywhere (v6)

اکنون با نصب نرم افزار و باز کردن پورت لازم ، آماده ایجاد سایت توسعه هستیم.
مرحله 3 – ایجاد یک سایت توسعه جدید
از دیرکتوری اصلی خود، از دستور Jekyll’s new برای ایجاد داربست برای سایتی در زیر مجموعه ای به نام www استفاده می کنیم:
⦁ $ cd ~

⦁ $ jekyll new www
دستور jekyll new برای نصب متعلقات لازم ، bundle install را شروع می کند ، سپس به صورت خودکار موضوعی با نام Minima را نصب می کند. پس از نصب موفق ، باید خروجی مانند زیر را دریافت کنید:
Output
New jekyll site installed in /home/sammy/www.

دستور جدید Jekyll دیرکتوری ها و فایل های زیر را ایجاد می کند:

├── 404.html
├── about.markdown
├── _config.yml
├── Gemfile
├── Gemfile.lock
├── index.markdown
├── _posts
│ └── 2020-05-29-welcome-to-jekyll.markdown
└── _site

این فایل های وب سایت واقعی نیستند. بلکه فایلهای منبعی هستند که Jekyll برای ایجاد سایت استاتیک از آنها استفاده خواهد کرد. Jekyll به نامهای خاص ، الگوهای نامگذاری و ساختارهای دیرکتوری متکی است تا منابع مختلف محتوا را تجزیه کند و آنها را در یک سایت استاتیک جمع کند. استفاده از ساختار موجود و پیگیری کنوانسیون های نامگذاری Jekyll در هنگام افزودن پست ها و صفحات جدید بسیار مهم است.
نکته: tree یک دستور مفید برای بازرسی ساختار فایل ها و دیرکتوری ها از خط فرمان است. می توانید آن را با دستور زیر نصب کنید:
⦁ $ sudo apt install tree

برای استفاده از آن ، cd را در دیرکتوری مورد نظر خود قرار دهید و tree را تایپ کنید و یا مسیر رسیدن به نقطه شروع را با tree /home/sammy/www ارائه کنید.
مرحله 4 – راه اندازی وب سرور مجازی Jekyll
سرور مجازی وب سبک Jekyll به منظور پشتیبانی از توسعه سایت با نظارت بر فایل ها در دیرکتوری و بازگرداندن خودکار سایت استاتیک هر زمان که تغییر ایجاد شود ، طراحی شده است.
از آنجا که ما در حال کار بر روی یک سرور مجازی از راه دور هستیم ، برای جستجوی سایت از دستگاه محلی خود ، آدرس هاست را مشخص خواهیم کرد. اگر در حال کار روی یک دستگاه محلی هستید ، می توانید jekyll service را بدون تنظیمات هاست اجرا کنید و با http: // localhost: 4000 وصل شوید.
⦁ $ cd ~/www

⦁ $ jekyll serve –host=203.0.113.0

Output of jekyll server
Configuration file: /home/sammy/www/_config.yml
Source: /home/sammy/www
Destination: /home/sammy/www/_site
Incremental build: disabled. Enable with –incremental
Generating…
done in 0.645 seconds.
Auto-regeneration: enabled for ‘/home/sammy/www’
Server address: http://203.0.113.0:4000/
Server running… press ctrl-c to stop.

هنگامی که jekyll serve را وادار به شروع کردیم ، Jekyll پیکربندی و فایل های محتوا را در یک دیرکتوری جدید ، _site تجزیه و شروع به ارائه محتوای موجود در آن پوشه _siteمیکند.
: …
├── 404.html
├── about.markdown
├── _config.yml
├── Gemfile
├── Gemfile.lock
├── index.markdown
├── _posts
│ └── 2020-05-29-welcome-to-jekyll.markdown
└── _site
├── 404.html
├── about
│ └── index.html
├── assets
│ ├── main.css
│ │ ├── main.css.map
│ └── minima-social-icons.svg
├── feed.xml
├── index.html
└── jekyll
└── update
└── 2020
└── 05
└── 29
└── welcome-to-jekyll.html

همچنین شروع به مشاهده تغییرات دیرکتوری فعلی ، www ، میکند. به محض ذخیره تغییر در یک پست یا صفحه ، سایت استاتیک به طور خودکار بازسازی می شود ، بنابراین مهم نیست که مستقیماً روی فایل های پوشه _site تغییری ایجاد نکنید.
اگر هنگام کار در سایت خود و در حین اجرای سرور مجازی توسعه در پیش زمینه ، این ترمینال را باز کنیم ، با اضافه کردن صفحات و پست ها و تغییر محتوا ، بازخورد فوری دریافت خواهیم کرد.
توجه: اگر در حال کار با یک سایت بزرگ هستید ، فعال کردن –incremental می تواند هر بار که تغییری به واسطه بازتولید فایل های تغییر یافته انجام میدهید، بازسازی را سرعت ببخشد اما ما برای این سایت کوچک به آن احتیاج نداریم. می توانید اطلاعات بیشتری در مورد این ویژگی آزمایشی در وب سایت Jekyll بدست آورید.
اکنون سایت در دسترس است. در یک مرورگر وب ، می توانیم از آن در آدرس سرور مجازی و پورت نمایش داده شده در خروجی حاصل از jekyll serve دیدن کنیم:

نتیجه
در این آموزش Jekyll را نصب کردیم و یک سایت توسعه با برخی از مطالب تولید شده به صورت خودکار ایجاد کردیم. می توانید با خواندن آموزش های دیگر ما در مورد این موضوع ، درباره Jekyll بیشتر بدانید:
• بررسی محتوای پیش فرض Jekyll
• نحوه کنترل URL ها و پیوندها در Jekyll

 

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

دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04

راه اندازی سایت توسعه Jekyll در اوبونتو 20.04

نحوه راه اندازی سایت توسعه Jekyll در اوبونتو 18.04

نحوه نصب و استفاده از Docker Compose در اوبونتو 20.04

نحوه اجرای چند نسخه PHP بر روی یک سرور با استفاده از Apache و PHP-FPM در CentOS 8

نحوه نصب و استفاده از TimescaleDB در Ubuntu 20.04

نحوه نصب و راه اندازی Laravel با Docker Compose در اوبونتو 20.04

 

 

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

تعداد صفحات : 12

اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 116
  • کل نظرات : 0
  • افراد آنلاین : 2
  • تعداد اعضا : 0
  • آی پی امروز : 22
  • آی پی دیروز : 23
  • بازدید امروز : 47
  • باردید دیروز : 29
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 98
  • بازدید ماه : 179
  • بازدید سال : 2,437
  • بازدید کلی : 7,136