Tumgik
vpsgol67-blog · 4 years
Text
نصب و پیکربندی Postfix در اوبونتو 20.04
Postfix یک عامل انتقال ایمیل (MTA) است ، که برای هدایت و دریافت ایمیل در سیستم لینوکس استفاده می شود. پیش بینی میشود حدود 25 درصد سرور مجازی های ایمیل عمومی در اینترنت Postfix را اجرا میکنند. در این راهنما ، نحوه نصب و پیکربندی Postfix را در سرور مجازی Ubuntu 20.04 یاد خواهید گرفت. سپس با نصب s-nail ، یک نماینده کاربر ایمیل (MUA) ، که به کلاینت ایمیل نیز شناخته میشود، آزمایش می کنید که آیا Postfix قادر است به درستی ایمیل را مسیریابی کند. توجه داشته باشید که هدف از این آموزش این است که به شما کمک کند تا فقط با برخی از قابلیت های معمول ایمیل، سریعا Postfix را راه اندازی و اجرا کنید. در پایان این راهنما یک سرور مجازی ایمیل تمام عیار ندارید ، اما برخی از مؤلفه های اساسی چنین ستاپی را برای کمک به شما در شروع کار خواهید داشت. پیش نیازها برای پیروی از این راهنما ، موارد زیر را لازم دارید: • سرور مجازی دارای Ubuntu 20.04 که به عنوان سرور مجازی ایمیل Postfix شما فعالیت می کند. این سرور مجازی باید دارای یک کاربر غیر ریشه با امتیازات sudo و فایروال تنظیم شده با UFW باشد. برای تنظیم این گزینه می توانید راهنمای ستاپ اولیه سرور مجازی Ubuntu 20.04 را دنبال کنید. • یک نام دامنه کاملاً واجد شرایط که به سرور مجازی Ubuntu 20.04 شما اشاره کند. توجه داشته باشید که اگر قصد دسترسی به ایمیل از یک مکان خارجی را دارید ، باید مطمئن شوید که یک رکورد MX دارید که به سرور مجازی ایمیل شما نیز اشاره کند. توجه داشته باشید که این آموزش با این فرض پیش میرود که شما هاستی را پیکربندی می کنید که دارای FQDN mail.example.com میباشد. در صورت لزوم ، حتماً example.com یا mail.example.com را تغییر دهید تا FQDN شما را منعکس کند. مرحله 1 – نصب Postfix Postfix در مخازن پیش فرض اوبونتو گنجانده شده است ، بنابراین می توانید آن را با APT نصب کنید. برای شروع ، حافظه نهان بسته محلی apt خود را به روز کنید: $ sudo apt update
سپس بسته ی postfix را با دستور زیر نصب کنید. توجه داشته باشید که در اینجا ما متغیر محیطی DEBIAN_PRIORITY=low را در این دستور نصب وارد میکنیم. این امر باعث می شود فرآیند نصب از شما بخواهد برخی گزینه های اضافی را پیکربندی کنید: $ sudo DEBIAN_PRIORITY=low apt install postfix
این فرآیند نصب یک سری اعلان های تعاملی را باز می کند. برای اهداف این آموزش ، از اطلاعات زیر برای پر کردن فرم های خود استفاده کنید: • نوع کلی پیکربندی ایمیل؟برای این، Internet Site را انتخاب کنید چرا که با تیازهای فراساختاری مطابقت دارد. • نام ایمیل سیستم: این دامنه اصلی است که برای ساختن یک آدرس ایمیل معتبر استفاده می شود هنگامی که فقط بخش حساب آدرس داده می شود. به عنوان مثال ، نام میزبان سرور مجازی شما mail.example.com است. به احتمال زیاد باید نام ایمیل سیستم را به صورت example.com قرار دهید تا با توجه به نام کاربری user1 ، Postfix از آدرس [email protected] استفاده کند. • گیرنده ایمیل 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
آدرسهایی را که مایلید ایمیل را برای آن بپذیرید ، لیست کنید و به دنبال آن فضای سفید و کاربر لینوکس را که دوست دارید ایمیل را به ان تحویل دهید. به عنوان مثال ، اگر می خواهید ایمیل را در آدرس [email protected] و [email protected] بپذیرید و دوست دارید آن ایمیل ها را به کاربر sammy Linux تحویل دهید ، می توانید فایل خود را مانند این تنظیم کنید: /etc/postfix/virtual [email protected] sammy [email protected] 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 [email protected] 2020-05-19 15:40 14/392 init برای نمایش پیام، ENTER را فشار دهید: Output [– Message 1 — 14 lines, 369 bytes –]: From [email protected] Tue May 19 15:40:48 2020 Date: Tue, 19 May 2020 15:40:48 +0000 To: [email protected] Subject: init Message-Id: <[email protected]> From: [email protected]
init
می توانید با تایپ h و سپس ENTER به لیست پیام ها برگردید : ? h
Output >R 1 [email protected] 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 تعریف کرده اید ، پر کنید. برای نشان دادن ، دستور زیر از [email protected] استفاده می کند همچنین ، حتما [email protected] را به یک آدرس ایمیل معتبر که به آن دسترسی دارید تغییر دهید: $ cat ~/test_message | s-nail -s ‘Test email subject line’ -r [email protected] [email protected]
سپس ، برای آدرس ایمیلی که پیام را برای آن ارسال کرده اید ، به صندوق ورودی بروید. پیام خود را تقریباً فوراً خواهید دید. توجه: اگر پیام در صندوق ورودی شما نیست ، ممکن است به پوشه Spam تحویل داده شده باشد. می توانید پیام های ارسالی خود را در کلاینت s-nail خود مشاهده کنید. دوباره کلاینت تعاملی را شروع کنید: $ s-nail
از کلاینت ایمیل ، پیام های ارسالی خود را با تایپ کردن این دستور مشاهده کنید: ? file +sent
خروجی مانند این را خواهید دید: Output +[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 [email protected] 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 ارزان –
برچسب‌ها:
FQDN
,
Postfix
0 notes
vpsgol67-blog · 4 years
Text
ارائه برنامه های Flask با Gunicorn و Nginx اوبونتو 20
در این راهنما یک برنامه Python را با استفاده از میکروفریم Flask در Ubuntu 20.04 ایجاد خواهید کرد. بخش عمده این مقاله در مورد نحوه تنظیم سرور برنامه Gunicorn و نحوه راه اندازی و پیکربندی برنامه Nginx برای عمل به عنوان یک پروکسی معکوس front-end خواهد بود. پیش نیازها قبل از شروع این راهنما ، باید این موارد را داشته باشید: ⦁ سروری با اوبونتو 20.04 و یک کاربر غیر ریشه با امتیازات sudo. برای راهنمایی ، مقاله ستاپ اولیه سرور ما را دنبال کنید. ⦁ Nginx نصب شده داشته باشید، مراحل 1 و 2 نحوه نصب Nginx در اوبونتو 20.04 را دنبال کنید. ⦁ نام دامنه پیکربندی شده برای اشاره به سرور شما. می توانید در Namecheap خریداری کنید یا یکی از آنها را به صورت رایگان در Freenom دریافت کنید. حتماً رکورهای DNS زیر را ایجاد کنید: o یک رکورد A با your_domain که به آدرس IP عمومی سرور شما اشاره می کند. o یک رکورد A با www.your_domain که به آدرس IP عمومی سرور شما اشاره کند. ⦁ آشنایی با مشخصات WSGI ، که سرور برنامه Gunicorn برای ارتباط با برنامه Flask از آن استفاده خواهد کرد . این بحث به تفصیل به تعاریف و مفاهیم می پردازد. مرحله 1 – نصب مولفه ها از مخازن اوبونتو اولین قدم ما نصب تمام بخش های مورد نیاز از مخازن اوبونتو خواهد بود. این موارد شامل pip ، مدیر بسته پایتون برای مدیریت مولفه های پایتون خواهد بود. همچنین فایل های توسعه پایتون لازم برای ساخت برخی مولفه های Gunicorn دریافت خواهیم کرد. ابتدا ، اجازه دهید ایندکس بسته محلی را به روز کنیم و بسته هایی را نصب کنیم که به ما امکان می دهد محیط Python خود را بسازیم. این موارد شامل python3-pip ، همراه با چند بسته دیگر و ابزار توسعه لازم برای یک محیط برنامه نویسی قوی است: ⦁ $ sudo apt update ⦁ ⦁ $ sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools
با قرارگیری این بسته ها در جای خود، به سمت ایجاد یک فضای مجازی برای پروژه خود برویم. مرحله 2 – ایجاد یک محیط مجازی پایتون در مرحله بعدی ، یک محیط مجازی تنظیم خواهیم کرد تا بتوانیم برنامه Flask خود را از سایر فایل های Python روی سیستم جدا کنیم. با نصب بسته python3-venv شروع کنید که ماژول venv را نصب خواهد کرد: ⦁ $ sudo apt install python3-venv ⦁ در مرحله بعد ، بیایید یک دایرکتوری والد برای پروژه Flask تهیه کنیم. بعد از ایجاد آن وارد پوشه شوید: ⦁ $ mkdir ~/myproject ⦁ ⦁ $ cd ~/myproject
یک محیط مجازی ایجاد کنید تا نیازمندی های پایتون پروژه Flask خود را با تایپ کردن دستور زیر ذخیره کنید: ⦁ $ python3 -m venv myprojectenv ⦁ با این کار یک کپی محلی از Python و pip در دیرکتوری به نام myprojectenv درون دیرکتوری پروژه شما کپی میشود. قبل از نصب برنامه ها در محیط مجازی ، باید آن را فعال کنید. این کار را با تایپ کردن دستور زیر انجام دهید: ⦁ $ source myprojectenv/bin/activate ⦁ اعلان شما تغییر می کند و نشان می دهد که اکنون در محیط مجازی کار می کنید. چیزی شبیه به (myprojectenv)user@host:~/myproject$ به نظر می رسد . مرحله 3 – تنظیم یک برنامه Flask اکنون که در محیط مجازی خود قرار دارید ، می توانید Flask و Gunicorn را نصب کرده و طراحی برنامه خود را شروع کنید. ابتدا بگذارید wheel  را با نمونه محلی pip نصب کنیم تا اطمینان حاصل شود که بسته های ما حتی در صورت از دست دادن بایگانی wheel ، نصب می شوند: ⦁ $ pip install wheel ⦁
توجه داشته باشید صرفنظر از اینکه از کدام نسخه Python استفاده می کنید ، هنگامی که محیط مجازی فعال می شود ، باید از دستور pip استفاده کنید (نه pip3) سپس ، اجازه دهید Flask و Gunicorn را نصب کنیم: ⦁ (myprojectenv) $ pip install gunicorn flask ⦁ ایجاد یک برنامه نمونه اکنون که Flask را در دسترس دارید ، می توانید یک برنامه ساده ایجاد کنید. Flask یک میکروفریم ورک است. و بسیاری از ابزارهایی که ممکن است چهارچوبهای کامل تری داشته باشند را شامل نمیشود، و عمدتاً به عنوان ماژول وجود دارد که می توانید برای شروع برنامه های وب از کمک بگیرید تا بتوانید به پروژه های خود وارد شوید. در حالی که ممکن است برنامه شما پیچیده تر باشد ، ما برنامه Flask خود را در یک فایل واحد با نام myproject.py ایجاد خواهیم کرد: ⦁ (myprojectenv) $ nano ~/myproject/myproject.py ⦁ کد برنامه در این فایل قرار دارد. Flask را وارد می کند و یک آبجکت Flask را معرفی می کند. شما می توانید از این ویژگی برای تعریف عملکردهایی استفاده کنید که باید هنگام درخواست یک مسیر خاص انجام شود: ~/myproject/myproject.py from flask import Flask app = Flask(__name__)
@app.route(“/”) def hello(): return “<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 ارزان –
برچسب‌ها:
Flask
,
Gunicorn
,
pip
,
برنامه Python
0 notes
vpsgol67-blog · 4 years
Text
ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04
Let’s Encrypt یک مجوز رسمی است که روشی آسان برای به دست آوردن و نصب مجوزهای رایگان TLS / SSL فراهم می کند ، در نتیجه HTTPS رمزگذاری شده را روی سرورهای وب فعال می کند. در واقع با ارائه یک کلاینت نرم افزاری ،یعنی Certbot ، که سعی در خودکارسازی اکثر مراحل لازم دارد ، فرایند را ساده می کند. در حال حاضر ، کل مراحل اخذ و نصب گواهینامه هم در Apache و هم در Nginx کاملا به صورت اتوماتیک انجام می شود. در این آموزش از Certbot برای دریافت گواهینامه رایگان SSL برای Nginx روی Ubuntu 20.04 استفاده می کنید و گواهی خود را برای تمدید خودکار تنظیم می کنید. در این آموزش به جای فایل پیکربندی پیش فرض از یک فایل میزبان مجازی Nginx جداگانه استفاده خواهد شد. توصیه می کنیم برای هر دامنه فایل های جدید میزبان مجازی Nginx ایجاد کنید زیرا این امر به جلوگیری از اشتباهات رایج کمک می کند و فایل های پیش فرض را به عنوان پیکربندی برگشت پذیر حفظ می کند. پیش نیازها برای دنبال کردن این آموزش ، به موارد زیر نیاز دارید: • یک سرور Ubuntu 20.04 که با دنبال کردن راهنمای ستاپ اولیه سرور برای Ubuntu 20.04 تنظیم شده و شامل یک کاربر غیر root با امتیازات sudo و فایروال باشد. • نام دامنه کاملاً ثبت شده. در این آموزش ، از example.comاستفاده می شود. می توانید نام دامنه را در Namecheap خریداری کنید ، یکی را به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید. • هر دو رکورد DNS زیر برای سرور شما تنظیم شده باشند. o یک رکورد A با example.com که به آدرس IP عمومی سرور شما اشاره کند. o یک رکورد A با www.example.com که به آدرس IP عمومی سرور شما اشاره کند. • Nginx که با دنبال کردن نحوه نصب Nginx در Ubuntu 20.04 نصب شده باشد. مطمئن شوید که یک فایل هاست مجازی برای دامنه خود تنظیم کرده اید. در این آموزش از /etc/nginx/sites-available/example.com به عنوان نمونه استفاده می شود. مرحله 1 – نصب Certbot اولین قدم برای استفاده از Let’s Encrypt جهت دریافت گواهینامه SSL ، نصب نرم افزار Certbot در سرور شماست. Certbot و افزونه Nginx آن را با apt نصب کنید.
$ sudo apt install certbot python3-certbot-nginx
Certbot اکنون آماده استفاده است اما برای اینکه SSL را به طور خودکار برای Nginx پیکربندی کند ، باید تأیید کنیم که Nginx به درستی پیکربندی شده است. مرحله 2 – تأیید پیکربندی Nginx Certbot باید بتواند بلوک سرور صحیح را در تنظیمات Nginx شما پیدا کند تا بتواند SSL را بطور خودکار پیکربندی کند. به طور خاص ، این کار را با جستجوی یک دستورالعمل server_name متناسب با دامنه مورد نظر برای دریافت گواهینامه ��نجام می دهد. اگر مرحله نصب بلوک سرور را در آموزش نصب Nginx دنبال کردید ، باید یک بلوک سرور برای دامنه خود در /etc/nginx/sites-available/example.com با دستور server_name که قبلاً به طور مناسب تنظیم شده است ، داشته باشید. برای بررسی ، فایل پیکربندی دامنه خود را با استفاده از nano یا ویرایشگر متن مورد علاقه خود باز کنید: $ sudo nano /etc/nginx/sites-available/example.com
خط server_name موجود را پیدا کنید. می بایست شبیه به این باشه: /etc/nginx/sites-available/example.com … server_name example.com www.example.com; …
اگر این گونه بود ، از ویرایشگر خود خارج شوید و به مرحله بعدی بروید. اگر اینطور نیست ، آن را به روز کنید تا مطابقت داشته باشد. سپس فایل را ذخیره کنید ، از ویرایشگر خود خارج شوید و ترکیب ویرایش های پیکربندی خود را تأیید کنید: $ sudo nginx -t
اگر خطایی رخ داد ، فایل بلوک سرور را مجدداً باز کنید و هرگونه خطای تایپی یا کاراکتر جاافتاده را بررسی کنید. پس از اینکه دستور فایل پیکربندی شما درست شد ، Nginx را مجدد لود کنید تا پیکربندی جدید لود شود: $ sudo systemctl reload nginx
Certbot اکنون می تواند بلوک سرور صحیح را پیدا کرده و به طور خودکار آن را به روز کند. در مرحله بعد ، بیایید ترافیک HTTPS فایروال را به روز کنیم. مرحله 3 – اجازه عبور HTTPS از طریق فایروال اگر فایروال ufw را فعال کرده باشید ، همانطور که توسط راهنماهای پیش نیاز توصیه شده است ، برای تنظیم ترافیک HTTPS ، باید تنظیماتی را انجام دهید. خوشبختانه ، Nginx چند پروفایل را از طریق نصب ufw ثبت میکند . با تایپ دستور زیر می توانید تنظیم فعلی را مشاهده کنید: $ sudo ufw status
احتمالا خروجی دستور اینگونه خواهد بود ، نشان می دهد که فقط ترافیک HTTP به سرور وب مجاز است: Output Status: active
To Action From — —— —- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
برای اجازه دادن به ترافیک HTTPS ، به پروفایل کامل Nginx دسترسی بدهید و اجازه پروفایل HTTP Nginx اضافی را حذف کنید: $ sudo ufw allow ‘Nginx Full’
$ sudo ufw delete allow ‘Nginx HTTP’
وضعیت شما اکنون باید به این شکل باشد: $ sudo ufw status
Output Status: active
To Action From — —— —- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)
سپس ، بیایید Certbot را اجرا کنیم و گواهینامه هایمان را دریافت کنیم. مرحله 4 – اخذ گواهینامه SSL Certbot روشهای مختلفی برای گرفتن گواهینامه های SSL از طریق افزونه ها ارائه می دهد. افزونه Nginx از تنظیم مجدد Nginx و بارگیری مجدد تنظیمات در صورت لزوم مراقبت خواهد کرد. برای استفاده از این افزونه ، دستور زیر را تایپ کنید: $ sudo certbot –Nginx -d example.com -d www.example.com
این کار Certbot را با افزونه –Nginx با استفاده از -d برای مشخص کردن نام هایی که معتبر آن هستند اجرا میکند. اگر اولین بار است که Certbot را اجرا میکنید ، از شما خواسته می شود که آدرس ایمیل را وارد کنید و با شرایط سرویس ها موافقت کنید. بعد از انجام این کار ، certbot با سرور Let’S Encrypt ارتباط برقرار می کند ، سپس برای تأیید اینکه دامنه مورد نظر خود را کنترل می کنید ، یک چالش اجرا کنید. اگر موفقیت آمیز باشد ، certbot از شما می پرسد که چگونه می خواهید تنظیمات HTTPS خود را پیکربندی کنید: Output Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 1: No redirect – Make no further changes to the webserver configuration. 2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you’re confident your site works on HTTPS. You can undo this change by editing your web server’s configuration. – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):
گزینه خود را انتخاب کنید و سپس ENTER بزنید. پیکربندی به طور خودکار به روز می شود ، و Nginx برای انتخاب تنظیمات جدید مجدد لود می شود. certbot با پیغامی همراه خواهد بود که به شما می گوید روند موفقیت آمیز بوده و گواهی نامه های شما در کجا ذخیره شده است: Output IMPORTANT NOTES: – Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2020-08-18. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the “certonly” option. To non-interactively renew *all* of your certificates, run “certbot renew” – If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
گواهینامه های شما دانلود ، نصب و لود می شوند. سعی کنید وب سایت خود را با استفاده از https: // مجدد لود کنید و به نشانگر امنیتی مرورگر خود توجه کنید. باید نشان دهد که سایت به طور صحیح ایمن است ، معمولاً با نماد قفل سبز نشانه داده میشود. اگر سرور خود را با استفاده از SSL Labs Server Test آزمایش کنید ، درجه A دریافت می کند. بیایید با آزمایش روند تجدید، کار را به پایان برسانیم. مرحله 5 – تأیید تمدید خودکار Certbot گواهی های Let’s Encrypt فقط برای نود روز اعتبار دارند. این امر برای ترغیب کاربران به اتوماسیون کردن فرایند تجدید گواهینامه میباشد. بسته certbot که نصب کردیم با اضافه کردن یک اسکریپت تجدید به /etc/cron.d از این امر مراقبت می کند. این اسکریپت روزانه دو بار اجرا می شود و به طور خودکار هر مدرکی را که کمتر از سی روز از انقضای آن مانده ، تمدید می کند. برای بررسی وضعیت تایمر، می توانید از systemctl استفاده کنید: $ sudo systemctl status certbot.timer
Output ● certbot.timer – Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled) Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left Triggers: ● certbot.service
برای آزمایش فرآیند تجدید، میتوانید یک اجرای خالی با certbot انجام دهید $ sudo certbot renew –dry-run
اگر خطایی نمی بینید ، همه تنظیمات انجام شده است. در صورت لزوم ، Certbot گواهی های شما را تمدید کرده و Nginx را مجدد لود می کند تا تغییرات را اعمال کند. اگر فرایند تمدید خودکار زمانی از کار بیفتد ، Let’s Encrypt پیامی را به ایمیلی که مشخص کرده اید ، ارسال می کند و به شما هشدار می دهید که گواهی شما رو به پایان است. نتیجه در این آموزش ، کلاینت lets Encrypt certbot را نصب کردید ، گواهینامه های SSL را برای دامنه خود دانلود کردید ، Nginx را برای استفاده از این گواهینامه ها پیکربندی کرده و تمدید خودکار گواهی نامه را فعال نمودید. اگر سؤال دیگری در مورد استفاده از Certbot دارید ، مراجعه به مطالب مربوطه آنها توصیه میشود.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه به 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 ارزان –
برچسب‌ها:
Certbot
,
Nginx
0 notes
vpsgol67-blog · 4 years
Text
تنظیم پلتفرم Cloud IDE کد سرور در اوبونتو 20
با حرکت ابزارهای گسترش دهنده به سمت cloud ، ایجاد و تطابق پذیری پلتفرم cloud IDE (محیط پیشرفت ادغام شده) در حال رشد است. Cloud IDE ها امکان همکاری زمان واقعی (real-time) بین تیم های توسعه دهنده را فراهم می کنند تا در یک محیط توسعه یکپارچه کار کنند و ناسازگاری ها را به حداقل می رساند اما تولید را افزایش میدهد. چون از طریق مرورگرهای وب قابل دسترسی اند ، Cloud IDE ها در هر نوع دستگاه مدرن موجود هستند. code-server یک کد مایکروسافت ویژوال استودیو است که روی یک سرور از راه دور اجرا می شود و مستقیماً از مرورگر شما قابل دسترسی است. ویژوال استودیو کد یک ویرایشگر کد مدرن با پشتیبانی Git ادغام شده، یک اشکال زدا برای کد، دارای تکمیل خودکار هوشمند و ویژگی های قابل سفارشی سازی و قابل بسط میباشد. بدان معنی که می توانید از دستگاه های مختلف با سیستم عامل های مختلف استفاده کنید و همیشه یک محیط توسعه مداوم داشته باشید. در این آموزش ، پلتفرم cloud IDE کد سرور را بر روی دستگاه Ubuntu 20.04 خود تنظیم کرده و آن را در دامنه قرار می دهید ، که با گواهی TLS در Let’s Encrypt ایمن شده است. در اخر، کد ویژوال استودیو را روی سرور Ubuntu 20.04 خود راه اندازی میکنید که در دامنه شما در دسترس است و با پسورد محافظت میشود. پیش نیازها ⦁ سروری که اوبونتو 20.04 را اجرا میکند با حداقل 2 گیگابایت رم ، دسترسی به ریشه و یک حساب sudo و غیر ریشه. می توانید این کار را با دنبال کردن راهنمای اولیه تنظیم سرور Ubuntu 20.04 انجام دهید. ⦁ Nginx که روی سرور شما نصب شده باشد. برای راهنمایی در مورد نحوه انجام این کار ، مراحل 1 تا 4 نحوه نصب Nginx را در اوبونتو 20.04 مطالعه کنید. ⦁ یک نام دامنه کاملا ثبت شده برای میزبانی کد سرور ، که به سرور شما اشاره میکند. در این آموزش از code-server.your-domain استفاده می شود. می توانید نام دامنه را در Namecheap خریداری کنید ، به صورت رایگان در Freenom دریافت کنید ، یا از ثبت دامنه مورد نظر خود استفاده کنید. مرحله 1 – نصب کد- سرور در این بخش کد-سرور را روی سرور خود تنظیم می کنید. این مستلزم دانلود آخرین نسخه و ایجاد سرویس سیستمی است که کد-سرور را همیشه در پس زمینه اجرا می کند. همچنین رویکرد ریستارت را برای سرویس تعیین خواهید کرد ، به این ترتیب کد-سرور پس از خرابی یا ریبوت احتمالی در دسترس خواهد بود. همه داده های مربوط به کد-سرور را در پوشه ای به نام ~ / code-server ذخیره می کنید. با اجرای دستور زیر آن را ایجاد کنید: ⦁ $ mkdir ~/code-server به آن پوشه بروید: ⦁ $ cd ~/code-server ⦁ باید به صفحه نسخه های کد-سرور Github بروید و آخرین لینوکس را انتخاب کنید (نام فایل شامل “linux” خواهد بود). در زمان نوشتن ، آخرین نسخه 3.3.1 بوده است. با اجرای دستور زیر آن را با استفاده از wget دانلود کنید: ⦁ $ wget https://github.com/cdr/code-server/releases/download/v3.3.1/code-server-3.3.1-linux-amd64.tar.gz ⦁ سپس با اجرای این دستور، آرشیو را باز کنید: ⦁ $ tar -xzvf code-server-3.3.1-linux-amd64.tar.gz ⦁ پوشه ای دقیقاً به نام فایل اصلی که دانلود کرده اید ، دریافت میکنید که شامل کد منبع کد-سرور است. آن را در / usr / lib / code-server کپی کنید تا با اجرای دستور زیر بتوانید به صورت گسترده به آن دسترسی پیدا کنید: ⦁ $ sudo cp -r code-server-3.3.1-linux-amd64 /usr/lib/code-server ⦁ سپس ، یک لینک نمادین را در / usr / bin / code-server ایجاد کنید ، که به عملکرد کد-سرور اشاره کند: ⦁ $ sudo ln -s /usr/lib/code-server/bin/code-server /usr/bin/code-server ⦁ در مرحله بعد ، یک پوشه برای کد-سرور ایجاد کنید ، که در آن داده های کاربر را ذخیره می کند: ⦁ $ sudo mkdir /var/lib/code-server ⦁ اکنون که کد-سرور را دانلود کرده اید و آن را در سراسر سیستم در دسترس قرار داده اید ، یک سرویس سیستمی ایجاد خواهید کرد تا کد-سرور را همیشه در پس زمینه اجرا کنید. پیکربندی سرویس را در فایلی به نام code-server.service ، در دیرکتوری / lib / systemd / system ذخیره خواهید کرد ، جایی که سیستم عامل سرویس های خود را ذخیره می کند. آن را با استفاده از ویرایشگر متن خود ایجاد کنید: ⦁ $ sudo nano /lib/systemd/system/code-server.service ⦁ خطوط زیر را اضافه کنید: /lib/systemd/system/code-server.service [Unit] Description=code-server After=nginx.service
[Service] Type=simple Environment=PASSWORD=your_password ExecStart=/usr/bin/code-server –bind-addr 127.0.0.1:8080 –user-data-dir /var/lib/code-server –auth password Restart=always
[Install] WantedBy=multi-user.target
در اینجا ابتدا شرح سرویس را مشخص می کنید. سپس ، اعلام می کنید که سرویس nginx قبل از این باید شروع شود. بعد از بخش [Unit] نوع سرویس را تعریف می کنید (simple بدان معنی است که فرایند باید به سادگی اجرا شود) و فرمانی را که اجرا می شود ارائه می دهد. همچنین مشخص می کنید که اجرای کد-سرور جهانی باید با چند آرگومان خاص برای کد-سرور آغاز شود. –bind-addr 127.0.0.1:8080 آن را به localhost  در پورت 8080 متصل می کند ، بنابراین فقط از داخل سرور شما قابل دسترسی است. –user-data-dir /var/lib/code-server دایرکتوری داده های کاربر خود را تنظیم می کند ، و –auth password مشخص می کند که باید بازدید کنندگان را با یک رمزعبور ، مشخص شده در متغیر محیط PASSWORD که در خط بالای آن مشخص شده است ، تأیید کند. به یاد داشته باشید که your_password را با رمز عبور دلخواه خود جایگزین کنید ، سپس فایل را ذخیره کنید و ببندید. خط بعدی به systemd می گوید تا کد-سرور را در تمام مواقع عدم کارکرد ریستارت کند (برای مثال ، هنگام خرابی یا قطع فرایند). بخش [Install] به سیستم دستور می دهد تا در صورت امکان ورود به سرور شما ، این سرویس را شروع کند. با اجرای دستور زیر سرویس کد-سرور را شروع کنید: ⦁ $ sudo systemctl start code-server ⦁ با مشاهده وضعیت آن بررسی کنید که درست شروع شده است: ⦁ $ sudo systemctl status code-server ⦁ خروجی مشابه این مشاهده خواهید کرد: Output ● code-server.service – code-server Loaded: loaded (/lib/systemd/system/code-server.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2020-05-20 13:03:40 UTC; 12s ago Main PID: 14985 (node) Tasks: 18 (limit: 2345) Memory: 26.1M CGroup: /system.slice/code-server.service ├─14985 /usr/lib/code-server/bin/../lib/node /usr/lib/code-server/bin/.. –bind-addr 127.0.0.1:8080 –user-data-dir /var/lib/code-server –auth> └─15010 /usr/lib/code-server/lib/node /usr/lib/code-server –bind-addr 127.0.0.1:8080 –user-data-dir /var/lib/code-server –auth password
May 20 13:03:40 code-server-update-2004 systemd[1]: Started code-server. May 20 13:03:40 code-server-update-2004 code-server[15010]: info Wrote default config file to ~/.config/code-server/config.yaml May 20 13:03:40 code-server-update-2004 code-server[15010]: info Using config file ~/.config/code-server/config.yaml May 20 13:03:40 code-server-update-2004 code-server[15010]: info Using user-data-dir /var/lib/code-server May 20 13:03:40 code-server-update-2004 code-server[15010]: info code-server 3.3.1 6f1309795e1cb930edba68cdc7c3dcaa01da0ab3 May 20 13:03:40 code-server-update-2004 code-server[15010]: info HTTP server listening on http://127.0.0.1:8080 May 20 13:03:40 code-server-update-2004 code-server[15010]: info – Using password from $PASSWORD May 20 13:03:40 code-server-update-2004 code-server[15010]: info – To disable use `–auth none` May 20 13:03:40 code-server-update-2004 code-server[15010]: info – Not serving HTTPS
برای شروع خودکار کد-سرور پس از راه اندازی مجدد سرور ، سرویس خود را با اجرای دستور زیر فعال کنید: ⦁ $ sudo systemctl enable code-server ⦁ در این مرحله ، کد-سرور را دانلود کرده و آن را در سطح جهانی در دسترس قرار داده اید. سپس ، یک سرویس سیستمی برای آن ایجاد کرده اید و آن را فعال کرده اید ، بنابراین کد-سرور از هر بوت سرور شروع می شود. سپس ، با پیکربندی Nginx به عنوان یک پراکسی معکوس بین بازدید کننده و کد-سرور آن را در معرض نمایش دامنه خود قرار می دهید. مرحله 2 – قرار گرفتن در معرض کد-سرور در دامنه شما در این بخش ، Nginx را به عنوان یک پروکسی معکوس برای کد-سرور پیکربندی می کنید. همانطور که در مرحله پیش نیاز Nginx آموخته اید ، فایل های پیکربندی سایت آن تحت /etc/nginx/sites-available ذخیره می شوند و بعداً باید برای فعال شدن با /etc/nginx/sites-enabled لینک شده باشند. پیکربندی را برای قرار دادن کد-سرور در دامنه خود در فایلی به نام code-server.conf ، تحت /etc/nginx/sites-available ذخیره می کنید. با ایجاد ویرایشگر خود را شروع به کار کنید: ⦁ $ sudo nano /etc/nginx/sites-available/code-server.conf ⦁ خطوط زیر را اضافه کنید: etc/nginx/sites-available/code-server.conf server { listen 80; listen [::]:80;
server_name code-server.your-domain;
location / { proxy_pass http://localhost:8080/; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_set_header Accept-Encoding gzip; } }
code-server.your-domain را با دامنه مورد نظر خود جایگزین کنید ، سپس فایل را ذخیره کنید و ببندید. در این فایل ، تعریف می کنید که Nginx باید به پورت HTTP 80 گوش کند. سپس ، یک server_name را تعیین می کنید که به Nginx می گوید برای کدام دامنه درخواست ها را بپذیرد و این پیکربندی خاص را اعمال کند. در بلوک بعدی ، برای مکان ریشه (/) ، مشخص می کنید که درخواست ها باید به کد-سرور در حال اجرا در localhost:8080 به جلو و عقب منتقل شوند. سه خط بعدی (که با proxy_set_header شروع میشود) به Nginx دستور می دهد تا برخی از هدرهای درخواست HTTP را که برای عملکرد صحیح WebSockets مورد نیاز هستند ، استفاده کند. برای فعال کردن این پیکربندی سایت ، باید با اجرای دستور زیر ، یک پوشه مربوط به آن را در پوشه / etc / nginx / sites-enabled ایجاد کنید: ⦁ $ sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/code-server.conf ⦁ برای آزمایش اعتبار پیکربندی ، دستور زیر را اجرا کنید: ⦁ $ sudo nginx -t ⦁ خروجی زیر را مشاهده خواهید کرد: Output nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
برای اینکه پیکربندی عملی شود ، باید Nginx را مجدداً راه اندازی کنید: ⦁ $ sudo systemctl restart nginx ⦁ اکنون نصب کد-سرور شما در دامنه تان قابل دسترسی است. در مرحله بعد ، با استفاده از یک گواهی نامه Let’s Encrypt TLS رایگان ، آن را ایمن خواهید کرد. مرحله 3 – امنیت بخشیدن به دامنه در این بخش دامنه خود را با استفاده از گواهی نامه Let’s Encrypt TLS که با استفاده از Certbot تهیه می نمایید را ایمن می کنید. برای نصب آخرین نسخه Certbot ، دستور زیر را اجرا کنید: ⦁ $ sudo apt install certbot python3-certbot-nginx ⦁ به عنوان بخشی از پیش شرط ها ، ufw (فایروال کامپایل نشده) را فعال کرده و آن را پیکربندی کرده اید تا امکان ترافیک HTTP رمزگذاری نشده را فراهم کند. برای دسترسی ایمن به سایت ، باید آن را پیکربندی کنید تا با اجرای دستور زیر ، ترافیک رمزگذاری شده را بپذیرد: ⦁ $ sudo ufw allow https ⦁ خروجی این چنین خواهد بود: Output Rule added Rule added (v6) به طور مشابه با Nginx ، لازم است آن را مجدد کنید لود تا پیکربندی آن به مرحله اجرا برسد: ⦁ $ sudo ufw reload ⦁ چنین خروجی نشان داده می شود: Output Firewall reloaded
سپس در مرورگر خود به دامنه مورد استفاده برای کد-سرور بروید. اعلان ورود به کد-سرور را مشاهده خواهید کرد.
کد-سرور از شما می خواهد رمز عبور خود را وارد کنید. پسوردی را که در مرحله قبل تعیین کردید وارد کنید و Enter IDE را فشار دهید. اکنون کد-سرور را وارد کرده و فوراً رابط کاربری گرافیکی آن را مشاهده می کنید.
اکنون که بررسی کرده اید که کد-سرور به درستی در دامنه شما قرار گرفته است ، باید مجوز TLS را رمزگذاری کنید تا با استفاده از Certbot ، آن را ایمن کنید. برای درخواست گواهی نامه برای دامنه خود ، دستور زیر را اجرا کنید: ⦁ $ sudo certbot –nginx -d code-server.your-domain ⦁ در این دستور ، شما certbot را برای درخواست گواهینامه ها برای دامنه خود اجرا می کنید – نام دامنه را با پارامتر -d وارد میکنید. پرچم –nginx به آن می گوید برای پشتیبانی از HTTPS ، پیکربندی سایت Nginx را به طور خودکار تغییر دهد. به یاد داشته باشید که دامنه code-server.your خود را با نام دامنه خود جایگزین کنید. اگر اولین بار است که Certbot را اجرا می کنید ، از شما خواسته می شود که یک آدرس ایمیل برای اخطارهای ضروری وارد کنید و شرایط خدمات EFF را بپذیرید. سپس Certbot درخواست Let’s Encrypt برای گواهی دامنه شما را میدهد. سپس از شما سؤال می کند که آیا مایلید همه ترافیک HTTP را به HTTPS هدایت کنید: Output Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 1: No redirect – Make no further changes to the webserver configuration. 2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you’re confident your site works on HTTPS. You can undo this change by editing your web server’s configuration. – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):
توصیه می شود برای به حداکثر رساندن امنیت گزینه دوم را انتخاب کنید. پس از وارد کردن انتخاب خود ، ENTER را فشار دهید. خروجی مشابه این خواهد بود: Output IMPORTANT NOTES: – Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/code-server.your-domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/code-server.your-domain/privkey.pem Your cert will expire on … To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the “certonly” option. To non-interactively renew *all* of your certificates, run “certbot renew” – Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. – If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
این بدان معنی است که Certbot موفق به تولید گواهینامه های TLS شده و آنها را در پیکربندی Nginx برای دامنه شما به کار می برد. اکنون می توانید دامنه کد سرور خود را در مرورگر خود مجدد لود کنید و یک پدلاک (قفل) در سمت چپ آدرس سایت مشاهده کنید ، این بدان معنی است که اتصال شما به درستی ایمن است. اکنون که کد-سرور را از طریق یک پروکسی معکوس Nginx در دامنه خود دارید ، آماده استفاده از واسط کاربری کد-سرور هستید. مرحله 4 – استفاده از رابط کد-سرور در این بخش از برخی از ویژگی های رابط کد-سرور استفاده خواهید کرد. از آنجا که کد-سرور ویژوال استودیو کد در حال اجرا در cloud است ، همان رابط کاربری نسخه دسکتاپ مستقل را دارد. در سمت چپ IDE ، یک ردیف عمودی از شش دکمه وجود دارد که بیشترین ویژگی های مورد استفاده را در یک صفحه جانبی که با عنوان Activity Bar شناخته می شود باز می کند.
این نوار قابل تنظیم است بنابراین می توانید این نماها را به ترتیب دیگری جابجا کنید یا آنها را از نوار حذف کنید. به طور پیش فرض ، اولین دکمه منوی کلی را به صورت کشویی باز می کند ، در حالی که نمای دوم پنل اکسپلورر را باز می کند که پیمایش درخت مانند از ساختار پروژه را فراهم می کند. می توانید پوشه ها و فایل های خود را در اینجا مدیریت کنید – ایجاد ، حذف ، جابجایی و تغییر نام آنها در صورت لزوم. نمای بعدی دسترسی به عملکرد جستجو و جایگزینی را فراهم می کند به دنبال این ، به ترتیب پیش فرض ، نمای شما از سیستم های کنترل منبع مانند Git قرار میگیرد. کد ویژوال استودیو همچنین از سایر ارائه دهندگان کنترل منبع پشتیبانی می کند و می توانید در این مستندات دستورالعمل های بیشتری را برای جریان کاری کنترل منبع با ویرایشگر بیابید.
گزینه اشکال زدایی در نوار فعالیت ، کلیه اقدامات معمول را برای اشکال زدایی در پنل ارائه می دهد. ویژوال استودیو کد با پشتیبانی داخلی برای اشکال زدایی زمان اجرای Node.js و هر زبانی که به Javascript تبدیل شود همراه است. برای سایر زبانها می توانید افزونه هایی را برای اشکال زدایی مورد نیاز نصب کنید. می توانید پیکربندی های اشکال زدایی را در فایل launch.jsonذخیره کنید.
نمای نهایی در نوار فعالیت ، منویی را برای دسترسی به افزونه های موجود در Marketplace فراهم می کند. قسمت اصلی GUI ویرایشگر شماست که می توانید آن ها را با استفاده از زبانه ها برای ویرایش کد خود جدا کنید. می توانید نمای ویرایش خود را به یک سیستم شبکه یا به فایل های جانبی تغییر دهید.
پس از ایجاد فایل جدید از طریق منوی File ، یک فایل خالی در یک تب جدید باز می شود و پس از ذخیره سازی ، نام فایل در صفحه جانبی Explorer قابل مشاهده خواهد بود. ایجاد پوشه ها را می توان با کلیک راست بر روی نوار کناری Explorer و کلیک بر روی New Folder انجام داد. می توانید پوشه ای را با کلیک بر روی نام آن و همچنین drag و drop فایل ها و پوشه ها به قسمتهای بالایی بسط دهید تا آنها را به یک مکان جدید منتقل کنید.
می توانید با وارد کردن CTRL + SHIFT + `، یا با کلیک کردن بر روی ترمینال در منوی کشویی بالای منو ، و انتخاب New Terminal ، به ترمینال دسترسی پیدا کنید. ترمینال در یک پنل پایین تر باز خواهد شد و دیرکتوری کار آن روی فضای کاری پروژه تنظیم می شود ، که شامل فایل ها و پوشه های نمایش داده شده در پنل سمت Explorer است. شما یک نمای کلی سطح بالا از رابط کد سرور را جستجو کرده اید و برخی از متداول ترین ویژگی ها را مشاهده کرده اید. نتیجه اکنون کد-سرور ، یک IDE همه کاره cloud را در اختیار دارید که بر روی سرور Ubuntu 20.04 شما نصب شده است ، در دامنه شما قرار گرفته و با استفاده از گواهی Let’s Encrypt ایمن شده است. هم اکنون می توانید بر روی پروژه ها بصورت جداگانه و همچنین در یک مجموعه همکاری تیمی کار کنید. اجرای IDE cloud منابع موجود در دستگاه محلی شما را آزاد می کند و به شما امکان می دهد منابع را در صورت لزوم مقیاس کنید. برای اطلاعات بیشتر در مورد ویژگی های دیگر و دستورالعمل های دقیق در مورد سایر مؤلفه های کد-سرور ، به مطالب کد ویژوال استودیو مراجعه کنید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه به 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 ارزان –
برچسب‌ها:
cloud
,
Cloud IDE
0 notes
vpsgol67-blog · 4 years
Text
کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04
اکثر گواهی های Let’s Encrypt با استفاده از اعتبار HTTP صادر می شوند که امکان نصب آسان گواهینامه ها در یک سرور مجازی واحد را نیز می دهد. با این حال ، اعتبار سنجی HTTP همیشه برای صدور گواهی ها برای استفاده در وب سایت های دارای بار بالانس شده مناسب نیست و همچنین نمی توان از آن برای صدور گواهی های wildcard استفاده کرد. اعتبار سنجی DNS اجازه می دهد تا درخواست های صدور گواهی با استفاده از سوابق DNS تأیید شود ، نه اینکه با ارائه محتوا از طریق HTTP انجام شود. این بدان معناست که می توان گواهی هایی را به طور همزمان برای خوشه ای از سرور مجازی های وب در حال اجرا در ورای متعادل کننده بار ، یا برای سیستمی که به طور مستقیم از طریق اینترنت قابل دسترسی نیست ، صادر کرد. گواهینامه های Wildcard نیز با استفاده از اعتبار سنجی DNS پشتیبانی می شوند. از ابزار acme-dns-certbot برای اتصال Certbot به سرور مجازی DNS شخص ثالث استفاده می شود که در آن می توانید سوابق اعتبار سنجی گواهینامه را هنگام درخواست مجوز به طور خودکار از طریق API تنظیم کنید. مزیت این امر این است که شما نیازی به ادغام Certbot به طور مستقیم با حساب ارائه دهنده DNS خود ندارید ، و همچنین نیازی به دسترسی نامحدود به تنظیمات کامل DNS نیست ، که به امنیت بیشتر منجر میشود. نواحی DNG مشخص شده به منظور تغییر مسیر جستجوی سوابق تأیید گواهی برای سرویس DNS شخص ثالث مورد استفاده قرار می گیرند ، بنابراین پس از اتمام ستاپ اولیه ، می توانید بدون نیاز به انجام هرگونه اعتبارسنجی دستی ، به همان تعداد گواهینامه درخواست کنید. یکی دیگر از مزیت های مهم acme-dns-certbot این است که می توان از آن برای صدور گواهینامه برای سرور مجازی های جداگانه ای استفاده کرد که ممکن است در ورای بالانسر قرار داشته باشند ، یا در غیر این صورت مستقیماً از طریق HTTP قابل دسترسی نباشند. اعتبار سنجی گواهی HTTP معمول در این موارد قابل استفاده نیست ، مگر اینکه فایل های اعتبار سنجی را روی هر سرور مجازی تنظیم کنید. همچنین اگر می خواهید گواهینامه ای برای سرور مجازی هایی که از طریق اینترنت قابل دسترسی نیستند ، مانند سیستم داخلی یا محیط مرحله سازی ، صادر کنید ، ابزار Acme-dns-certbot مفید خواهد بود. در این آموزش ، از قلاب acme-dns-certbot برای Certbot برای صدور گواهی رمزگذاری رمزگذاری با استفاده از اعتبار سنجی DNS استفاده می کنید. پیش نیازها برای تکمیل این آموزش ، به موارد زیر نیاز دارید: • سرور مجازی Ubuntu 18.04 که با دنبال کردن راه اندازی اولیه سرور مجازی با اوبونتو 18.04 تنظیم شده باشد ، و شامل یک کاربر غیر ریشه sudo باشد. • نام دامنه ای که می توانید برای آن گواهی TLS دریافت کنید ، از جمله امکان اضافه کردن سوابق DNS. در این مثال خاص ، ما از your-domain و subdomain.your-domain و همچنین *.your-domain برای یک گواهی wildcard استفاده خواهیم کرد. با این وجود در صورت لزوم می توان آن را برای دامنه ها، زیر دامنه ها یا wildcard های دیگر تنظیم کرد. پس از آماده شدن ، به عنوان کاربر غیر ریشه خود وارد سرور مجازی شوید. مرحله 1 – نصب Certbot در این مرحله Certbot را نصب خواهید کرد ، این برنامه برای صدور و مدیریت گواهی های Let’s Encrypt استفاده می شود. Certbot در مخازن رسمی اوبونتو Apt موجود است ، اما در عوض توصیه می شود از مخزن نگهداری شده توسط توسعه دهندگان Certbot استفاده کنید ، زیرا همیشه به روزترین نسخه نرم افزار را دارد. با اضافه کرد�� مخزن Certbot شروع کنید: ⦁ $ sudo apt-add-repository ppa:certbot/certbot ⦁ برای قبول اعلان و افزودن مخزن جدید به سیستم خود ، باید ENTER را فشار دهید. سپس ، بسته Certbot را نصب کنید: ⦁ $ sudo apt install certbot ⦁ پس از اتمام نصب ، می توانید بررسی کنید که Certbot با موفقیت نصب شده است: ⦁ $ certbot –version ⦁ خروجی چیزی شبیه به این خواهد بود: Output certbot 0.31.0
در این مرحله Certbot را نصب کردید. در مرحله بعد قلاب acme-dns-certbot را دانلود و نصب خواهید کرد. مرحله 2 – نصب acme-dns-certbot اکنون که برنامه پایه Certbot نصب شده است ، می توانید Acme-dns-certbot را دانلود و نصب کنید ، که این امکان را به Certbot می دهد که در حالت اعتبار سنجی DNS کار کند. با دانلود نسخه ای از اسکریپت شروع کنید: ⦁ $ wget https://github.com/joohoi/acme-dns-certbot-joohoi/raw/master/acme-dns-auth.py ⦁ پس از اتمام دانلود ، اسکریپت را به صورت قابل اجرا علامت گذاری کنید: ⦁ $ chmod +x acme-dns-auth.py ⦁ سپس ، با استفاده از ویرایشگر متن مورد علاقه خود ، فایل را ویرایش کرده و خط اول را تنظیم کنید تا مجبور شود از پایتون 3 استفاده کند: ⦁ $ nano acme-dns-auth.py ⦁ یک عدد 3 به انتهای خط اول اضافه کنید: acme-dns-certbot.py #!/usr/bin/env python3 . . . این کار به این منظور انجام میشود که اطمینان حاصل شود اسكریپت به جای پایتون نسخه 2 ، از جدیدترین نسخه پشتیبانی شده پایتون 3 استفاده می كند . پس از تکمیل ، فایل را ذخیره کنید و ببندید. سرانجام ، اسکریپت را در دیرکتوری Let’s Encrypt قرار دهید تا Certbot بتواند آن را لود کند: ⦁ $ sudo mv acme-dns-auth.py /etc/letsencrypt/ ⦁ در این مرحله قلاب acme-dns-certbot را دانلود و نصب کردید. در مرحله بعد ، می توانید مراحل تنظیم را شروع کرده و به سمت صدور اولین گواهی خود بروید. مرحله 3 – تنظیم acme-dns-certbot برای شروع استفاده از acme-dns-certbot ، باید یک مجموعه مراحل اولیه تنظیم را انجام دهید و حداقل یک گواهی صادر کنید. با اجرای Certbot شروع کنید تا مجبور شود با استفاده از اعتبار DNS صدور گواهی صادر کند. با این کار اسکریپت acme-dns-certbot اجرا می شود و روند تنظیم اولیه را شروع می کند: ⦁ $ sudo certbot certonly –manual –manual-auth-hook /etc/letsencrypt/acme-dns-auth.py –preferred-challenges dns –debug-challenges -d \*.your-domain -d your-domain ⦁ شما برای غیرفعال کردن همه ویژگی های خودکار ادغام Certbot از آرگومان – manual استفاده می کنید. در این حالت به جای نصب خودکار آن بر روی یک سرویس ، فقط یک گواهی خام صادر می کنید. Certbot را برای استفاده از قلاب acme-dns-certbot از طریق آرگومان –manual-auth-hookپیکربندی می کنید . شما ارگومان –preferred-challenges را اجرا می کنید تا Certbot به اعتبار DNS ارجحیت دهد. همچنین باید قبل از تلاش برای صدور گواهی ، به Certbot بگویید که مکث کند ، که این کار را با آرگومان –debug-challenges انجام می دهد. این امر به شما امکان می دهد تا رکوردهای DNS CNAME مورد نیاز Acme-dns-certbot را تنظیم کنید ، که بعداً در این مرحله تحت پوشش قرار می گیرد. بدون آرگومان –debug-challenges ، Certbot متوقف نمی شود ، بنابراین دیگر وقتی برای تغییر DNS نخواهید داشت. به یاد داشته باشید که هر یک از نامهای دامنه مورد نظر را با استفاده از آرگومانهای -d جایگزین کنید. اگر می خواهید یک مجوز Wildcard صادر کنید ، حتما از ستاره (*) با یک بک اسلش (\) فاصله ایجاد کنید. پس از پیروی از مراحل استاندارد Certbot ، در نهایت پیامی شبیه به پیام زیر به شما نشان داده میشود: Output … Output from acme-dns-auth.py: Please add the following CNAME record to your main DNS zone: _acme-challenge.your-domain CNAME a15ce5b2-f170-4c91-97bf-09a5764a88f6.auth.acme-dns.io.
Waiting for verification… …
باید رکورد مورد نیاز DNS CNAME را به پیکربندی DNS برای دامنه خود اضافه کنید. این امر کنترل زیر دامنه _acme-challenge را به سرویس ACME DNS واگذار می کند ، که به Acme-dns-certbot اجازه می دهد تا سوابق DNS مورد نیاز را برای تأیید درخواست گواهی تنظیم کند. اگر از vpsgol به عنوان ارائه دهنده DNS خود استفاده می کنید ، می توانید رکورد DNS را در کنترل پنل خود تنظیم کنید:
توصیه می شود TTL (time-to-live) را روی حدود 300 ثانیه تنظیم کنید تا اطمینان حاصل شود که هرگونه تغییر در رکورد به سرعت منتشر می شود. پس از تنظیم کورد DNS ، مجدداً به Certbot برگردید و ENTER را بزنید تا درخواست گواهی را تأیید کنید و مراحل صدور را انجام دهید. این کار چند ثانیه طول می کشد ، و سپس می توانید پیامی را مشاهده کنید که گواهی صادر شده است: Output … Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your-domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your-domain/privkey.pem …
شما برای اولین بار acme-dns-certbot را اجرا کرده اید ، کرودهای DNS لازم را تنظیم کرده و یک گواهی را با موفقیت صادر کرده اید. در مرحله بعد تمدید خودکار گواهی خود را انجام می دهید. مرحله 4 – استفاده از acme-dns-certbot در این مرحله آخر ، از Acme-dns-certbot برای صدور گواهینامه های بیشتر و تمدید گواهینامه های موجود استفاده خواهید کرد. در مرحله اول ، اکنون که حداقل یک گواهی را با استفاده از acme-dns-certbot صادر کرده اید ، می توانید بدون نیاز به اضافه کردن یک رکورد DNS CNAME ، همچنان به صدور گواهینامه برای همین نامهای DNS ادامه دهید. با این حال ، اگر مایل به اخذ گواهی برای یک زیر دامنه متفاوت یا نام دامنه کاملاً جدید هستید ، از شما خواسته می شود یک رکورد CNAME دیگر اضافه کنید. به عنوان مثال ، شما می توانید یک مجوز wildcard مستقل دیگری بدون تأیید صحت مجدد صادر کنید: ⦁ $ sudo certbot certonly –manual –manual-auth-hook /etc/letsencrypt/acme-dns-auth.py –preferred-challenges dns –debug-challenges -d \*.your-domain ⦁ با این حال ، اگر می خواهید برای صدور گواهینامه برای یک زیر دامنه تلاش کنید ، از شما خواسته می شود یک رکورد CNAME برای زیر دامنه اضافه کنید: ⦁ $ sudo certbot certonly –manual –manual-auth-hook /etc/letsencrypt/acme-dns-auth.py –preferred-challenges dns –debug-challenges -d subdomain.your-domain ⦁ با این کار خروجی شبیه به ستاپ اولیه ای که در مرحله 3 انجام دادید نشان داده می شود: Output … Please add the following CNAME record to your main DNS zone: _acme-challenge.subdomain.your-domain CNAME 8450fb54-8e01-4bfe-961a-424befd05088.auth.acme-dns.io.
Waiting for verification… …
اکنون که می توانید از Acme-dns-certbot برای صدور گواهینامه ها استفاده کنید ، خوب است که فرآیند تجدید را نیز در نظر بگیرید. پس از پایان اعتبار گواهینامه های شما ، Certbot می تواند به طور خودکار آنها را برای شما تمدید کند: ⦁ $ sudo certbot renew ⦁ فرایند تجدید می تواند بدون تعامل با کاربر ، کار را انجام دهد ، و تمام گزینه های پیکربندی را که در هنگام راه اندازی اولیه مشخص کرده اید ، به خاطر خواهد آورد. برای آزمایش اینکه این تمدید برقرار است، بدون نیاز به انتظار تا تاریخ انقضای بعدی ، می توانید یک dry run انجام دهید. این کار روند تجدید را بدون ایجاد هیچگونه تغییر واقعی در پیکربندی تان ، شبیه سازی می کند. شما می توانید با استفاده از دستور تمدید استاندارد یک dry run را شروع کنید ، اما با آرگومان –dry-run : ⦁ $ sudo certbot renew –dry-run ⦁ این چیزی شبیه به خروجی زیر را خواهد داشت ، که اطمینان می دهد که روند تمدید به درستی کار می کند: Output … Cert not due for renewal, but simulating renewal for dry run Plugins selected: Authenticator manual, Installer None Renewing an existing certificate Performing the following challenges: dns-01 challenge for your-domain dns-01 challenge for your-domain Waiting for verification… Cleaning up challenges …
در این مرحله آخر ، مجوز دیگری صادر کردید و سپس فرایند تمدید خودکار را در داخل Certbot آزمایش کردید. نتیجه در این مقاله به منظور صدور گواهینامه ها با استفاده از اعتبار DNS ، Certbot را با Acme-dns-certbot تنظیم کرده اید. این کار امکان استفاده از گواهینامه های wildcard و همچنین مدیریت دارایی های زیادی از سرور مجازی های وب مجزا را که ممکن است در ورای یک بالانسر بار قرار داشته باشند ، ممکن می کند. برای بروزرسانی های اسکریپت ، مراقب مخزن acme-dns-certbot باشید ، زیرا همیشه اجرای آخرین نسخه پشتیبانی شده توصیه می شود. اگر علاقه مند به کسب اطلاعات بیشتر در مورد acme-dns-certbot هستید ، میتوانید مستندات مربوط به پروژه acme-dns را که عنصر سمت سرور مجازی Acme-dns-certbot است ، مرور کنید: acme-dns on GitHub نرم افزار acme-dns همچنین می تواند هاست خود باشد که اگر در محیط های با امنیت بالا یا پیچیده کار می کنید ، می تواند مفید واقع شود. از طرف دیگر ، می توانید با بررسی بخش مربوط به مطالب رسمی RFC که شامل نحوه کار روند می باشد ، جزئیات فنی اعتبارسنجی ACME DNS را جستجو کنید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهید
نحوه ایجاد نماها (Views) برای توسعه وب Django
نصب Mount NFS در اوبونتو 20.04
نحوه توسعه برنامه ها در Kubernetes با Okteto
نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04
نحوه تنظیم Jupyter Notebook با پایتون در Ubuntu 20.04
نصب Jitsi Meet در Debian 10
نصب و پیکربندی Nextcloud در اوبونتو 20.04
نصب و پیکربندی Ansible در اوبونتو 20.04
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
ارائه برنامه های Flask با Gunicorn و Nginx اوبونتو 20
ایمن کردن Nginx با Let’s Encrypt در Ubuntu 20.04
تنظیم پلتفرم Cloud IDE کد سرور در اوبونتو 20
کسب یک گواهی اعتبار سنجی DNS با Acme-dns-certbot در اوبونتو 18.04
نصب و ایمن سازی Grafana در اوبونتو 20.04
نحوه نصب Git در Ubuntu 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
DNS
,
HTTP
,
wildcard
0 notes
vpsgol67-blog · 4 years
Text
نصب و ایمن سازی Grafana در اوبونتو 20.04
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 ارزان –
برچسب‌ها:Elasticsearch, Grafana, Graphite, InfluxDB, Nginx, Prometheus
0 notes
vpsgol67-blog · 4 years
Text
نحوه نصب Git در Ubuntu 20.04
سیستم های کنترل نسخه بخشی ضروری از توسعه نرم افزاری مدرن هستند. نسخه سازی به شما امکان می دهد تا نرم افزار خود را در سطح منبع دنبال کنید. می توانید تغییرات را ردیابی کنید ، به مراحل قبلی برگردید و انشعاب ایجاد کنید تا نسخه های متفاوتی از فایل ها و دیرکتوری ها ایجاد کنید. بسیاری از فایل های پروژه ها در یک مخزن 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 “[email protected]
ما می توانیم تمام موارد پیکربندی تنظیم شده را با تایپ دستور زیر نمایش دهیم: $ git config –list
Output user.name=Your Name [email protected]
اطلاعاتی که وارد می کنید در پرونده پیکربندی Git شما ذخیره می شود ، که می توانید به صورت اختیاری با ویرایشگر متن مورد نظر خود مانند این ویرایش کنید (ما از nano استفاده خواهیم کرد): $ nano ~/.gitconfig
~/.gitconfig contents [user] name = Your Name email = [email protected]
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 ارزان –
برچسب‌ها:
Git
,
GitLab
0 notes
vpsgol67-blog · 4 years
Text
دسترسی از راه دور به برنامه GUI با Docker در اوبونتو 18.04
حتی با محبوبیت روزافزون خدمات ابری ، نیاز به اجرای برنامه های بومی هنوز وجود دارد. با استفاده از 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/[email protected] && \ 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/[email protected] && \ 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 استفاده کنید.
برچسب‌ها:
Docker
,
nodaemon
,
supervisord
,
TigerVNC
0 notes
vpsgol67-blog · 4 years
Text
راه اندازی سایت توسعه Jekyll در اوبونتو 20.04
اگر به دنبال ایجاد یک وب سایت یا وبلاگ استاتیک (پایا) هستید ، 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
0 notes
vpsgol67-blog · 4 years
Text
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
در این راهنما یک برنامه Python را با استفاده از میکروفریم Flask در Ubuntu 18.04 ایجاد خواهید کرد. بخش عمده این مقاله در مورد نحوه تنظیم سرور مجازی برنامه uWSGI و نحوه راه اندازی و پیکربندی برنامه Nginx برای عمل به عنوان یک پروکسی معکوس front-end خواهد بود. پیش نیازها قبل از شروع این راهنما ، باید این موارد را داشته باشید: ⦁ سرور مجازی با اوبونتو 18.04 و یک کاربر غیر ریشه با امتیازات sudo. برای راهنمایی ، مقاله ستاپ اولیه سرور مجازی ما را دنبال کنید. ⦁ Nginx نصب شده داشته باشید، مراحل 1 و 2 نحوه نصب Nginx در اوبونتو 18.04 را دنبال کنید. ⦁ نام دامنه پیکربندی شده برای اشاره به سرور مجازی شما. می توانید یکی از آنها را در Namecheap خریداری کنید یا یکی از آنها را به صورت رایگان در Freenom دریافت کنید. با دنبال کردن مستندات مربوط به دامنه ها و DNS می توانید یاد بگیرید که چگونه دامنه ها را به vpsgol نشان دهید. حتماً سوابق DNS زیر را ایجاد کنید: o یک رکورد A با your_domain که به آدرس IP عمومی سرور مجازی شما اشاره می کند. o یک رکورد A با www.your_domain که به آدرس IP عمومی سرور مجازی شما اشاره کند. ⦁ آشنایی با uWSGI ، سرور مجازی برنامه ما و مشخصات WSGI. این بحث به تفصیل به تعاریف و مفاهیم می پردازد. مرحله 1 – نصب مولفه ها از مخازن اوبونتو اولین قدم ما نصب تمام بخش ها مورد نیاز از مخازن اوبونتو خواهد بود. pip ، مدیر بسته پایتون را برای مدیریت اجزای پایتون خود نصب خواهیم کرد. همچنین فایل های توسعه پایتون لازم برای ساخت uWSGI را دریافت خواهیم کرد. ابتدا ، اجازه دهید ایندکس بسته محلی را به روز کنیم و بسته هایی را نصب کنیم که به ما امکان می دهد محیط Python خود را بسازیم. این موارد شامل python3-pip ، همراه با چند بسته دیگر و ابزار توسعه لازم برای یک محیط برنامه نویسی قوی است: ⦁ $ sudo apt update ⦁ ⦁ $ sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools
با استفاده از این بسته ها ، به سمت ایجاد یک فضای مجازی برای پروژه خود برویم. مرحله 2 – ایجاد یک محیط مجازی پایتون در مرحله بعدی ، یک محیط مجازی تنظیم خواهیم کرد تا بتوانیم برنامه Flask خود را از سایر فایل های Python روی سیستم جدا کنیم. با نصب بسته python3-venv که ماژول venv را نصب خواهد کرد شروع کنید: ⦁ $ sudo apt install python3-venv ⦁ در مرحله بعد ، بیایید یک دایرکتوری والد برای پروژه Flask تهیه کنیم. بعد از ایجاد آن وارد پوشه شوید: ⦁ $ mkdir ~/myproject ⦁ ⦁ $ cd ~/myproject
یک محیط مجازی ایجاد کنید تا نیازمندی های پایتون پروژه Flask خود را با تایپ کردن دستور زیر ذخیره کنید: ⦁ $ python3.6 -m venv myprojectenv ⦁ با این کار یک کپی محلی از Python و pip در دیرکتوری به نام myprojectenv درون دیرکتوری پروژه شما کپی میشود. قبل از نصب برنامه ها در محیط مجازی ، باید آن را فعال کنید. این کار را با تایپ کردن دستور زیر انجام دهید: ⦁ $ source myprojectenv/bin/activate ⦁ اعلان شما تغییر می کند و نشان می دهد که اکنون در محیط مجازی کار می کنید. چیزی شبیه به (myprojectenv)user@host:~/myproject$ به نظر می رسد . مرحله 3 – تنظیم یک برنامه Flask اکنون که در محیط مجازی خود قرار دارید ، می توانید Flask و uWSGI را نصب کرده و طراحی برنامه خود را شروع کنید. ابتدا بگذارید wheel  را با نمونه محلی pip نصب کنیم تا اطمینان حاصل شود که بسته های ما حتی در صورت از دست دادن بایگانی wheel ، نصب می شوند: ⦁ $ pip install wheel ⦁
توجه داشته باشید صرفنظر از اینکه از کدام نسخه Python استفاده می کنید ، هنگامی که محیط مجازی فعال می شود ، باید از دستور pip استفاده کنید (نه pip3) سپس ، اجازه دهید Flask و uWSGI را نصب کنیم: ⦁ (myprojectenv) $ pip install uwsgi flask ⦁ ایجاد یک برنامه نمونه اکنون که Flask را در دسترس دارید ، می توانید یک برنامه ساده ایجاد کنید. Flask یک میکرو فریم ورک است. و بسیاری از ابزارهایی که ممکن است چهارچوبهای کامل تری داشته باشند را شامل نمیشود، و عمدتاً به عنوان ماژول وجود دارد که می توانید برای شروع برنامه های وب از کمک بگیرید تا بتوانید به پروژه های خود وارد شوید. در حالی که ممکن است برنامه شما پیچیده تر باشد ، ما برنامه Flask خود را در یک فایل واحد با نام myproject.py ایجاد خواهیم کرد: ⦁ (myprojectenv) $ nano ~/myproject/myproject.py ⦁ کد برنامه در این فایل قرار دارد. Flask را وارد می کند و یک آبجکت Flask را معرفی می کند. شما می توانید از این ویژگی برای تعریف کارکردهایی استفاده کنید که باید هنگام درخواست یک مسیر خاص انجام شود: ~/myproject/myproject.py from flask import Flask app = Flask(__name__)
@app.route(“/”) def hello(): return “<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 ارزان –
برچسب‌ها:
Flask
,
Nginx
,
Python
,
uWSGIدر این راهنما یک برنامه 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 appif __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:appmaster = true processes = 5هنگام آزمایش ، uWSGI را در پورت شبکه قرار داده اید. با این حال ، می توانید از Nginx برای رسیدگی به اتصالات واقعی کلاینت استفاده کنید ، که سپس درخواست ها را به uWSGI منتقل می کند. از آنجا که این مولفه ها در همان رایانه کار می کنند ، سوکت یونیکس ترجیح داده می شود زیرا سریع تر و ایمن تر است. بیایید سوکت را myproject.sock بنامیم و در این دیرکتوری قرار دهیم. بیایید مجوزهای موجود در سوکت را نیز تغییر دهیم. بعداً به گروه Nginx مالکیت پروسه uWSGI را می دهیم ، بنابراین باید اطمینان حاصل کنیم که مالک گروه سوکت می تواند اطلاعاتی را از آن بخواند و برای آن بنویسد. ما همچنین با اضافه کردن گزینه vacuum ، سوکت را تمیز کنیم: ~/myproject/myproject.ini [uwsgi] module = wsgi:appmaster = true processes = 5socket = myproject.sock chmod-socket = 660 vacuum = trueآخرین کاری که انجام خواهیم داد اینست که گزینه die-on-term  را تنظیم کنیم. این می تواند اطمینان حاصل کند که سیستم init و uWSGI پیش فرض های یکسانی در مورد معنی هر سیگنال فرآیند دارند. تنظیم این دو مؤلفه سیستم ، رفتار مورد انتظار را اجرا می کند: ~/myproject/myproject.ini [uwsgi] module = wsgi:appmaster = true processes = 5socket = myproject.sock chmod-socket = 660 vacuum = truedie-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 ارزان – برچسب‌ها:Flask, Nginx, Python, uWSGI
1 note · View note