سفارش تبلیغ
صبا ویژن

نحوه نصب Django و تنظیم محیط توسعه در اوبونتو 16.04

Django یک چارچوب وب آزاد و منبع باز است که در پایتون نوشته شده است و از الگوی معماری نرم افزار نمای الگوی مدل (MTV) پیروی می کند. الگوی MTV الگوی  model–view–controller (MVC) در Django است. طبق گفته بنیاد نرم افزار Django ، این مدل تنها منبع قطعی داده های شما است ، view  داده هایی که از طریق یک عملکرد برگشتی Python به یک URL خاص به کاربر نشان داده می شوند ، توصیف می کند و template  چگونگی تولید Django HTML به صورت پویا میباشد.
اصول اساسی Django مقیاس پذیری ، قابلیت استفاده مجدد و توسعه سریع است. همچنین به دلیل پایداری چارچوب و کوپلینگ سست آن ، شناخته شده است و باعث می شود اجزای جداگانه از یکدیگر مستقل باشند. برنامه نویسی Don’t repeat yourself (DRY) بخشی جدایی ناپذیر از اصول Django است.
در این آموزش محیط توسعه Django را تنظیم خواهیم کرد. ما Python 3، pip3 ، Django و virtualenv را نصب خواهیم کرد تا ابزار لازم برای توسعه برنامه های وب با Django را در اختیار شما قرار دهیم.
پیش نیازها
یک حساب کاربری غیر ریشه با امتیازات sudo که بر روی یک سرور مجازی Debian یا Ubuntu Linux تنظیم شده باشد. با دنبال کردن و تکمیل ستاپ اولیه سرور مجازی برای Debian 8 یا مراحل 1-4 در ستاپ اولیه سرور مجازی برای آموزش اوبونتو 16.04 می توانید به این پیش نیازها برسید.
مرحله 1 – Python و pip را نصب کنید
برای نصب پایتون ابتدا باید مخزن محلی APT را به روز کنیم. در پنجره ترمینال خود ، فرمان زیر را وارد خواهیم کرد. توجه داشته باشید که پرچم -y به درخواستهای مربوط به فرآیند ارتقا پاسخهای “بله” می دهد. در صورت تمایل به روزرسانی برای توقف هر اعلان ، پرچم را حذف کنید.
? $ sudo apt-get update && sudo apt-get -y upgrade
?
هنگامی که از شما خواسته شد grub-pc را پیکربندی کنید ، می توانید ENTER را فشار دهید تا پیش فرض را بپذیرد ، یا مطابق دلخواه پیکربندی کند.
از طرف بنیاد نرم افزار Django استفاده از پایتون 3 توصیه می شود ، بنابراین پس از بروزرسانی همه چیز ، می توانیم پایتون 3 را با استفاده از دستور زیر نصب کنیم:
? $ sudo apt-get install python3
?
برای تأیید نصب موفق پایتون 3 ، یک بررسی نسخه را با دستور python3 اجرا کنید:
? $ python3 -V
?
خروجی حاصل شبیه به این است:
Output
python 3.5.2

اکنون که پایتون 3 را نصب کردیم ، برای نصب بسته هایی از PyPi ، مخزن بسته Python ، به pip نیز احتیاج خواهیم داشت.
? $ sudo apt-get install -y python3-pip
?
برای تأیید نصب موفقیت آمیز pip ، دستور زیر را اجرا کنید:
? $ pip3 -V
?
باید خروجی مشابه این را ببینید:
Output
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

اکنون که pip نصب کردیم ، این توانایی را داریم که به سرعت بسته های لازم دیگر را برای یک محیط پایتون نصب کنیم.
مرحله 2 – virtualenv را نصب کنید
virtualenv یک محیط مجازی است که می توانید نرم افزارها و بسته های Python را در یک فضای توسعه یافته نصب کنید ، که این نرم افزار و بسته های نصب شده را از بقیه محیط جهانی دستگاه شما جدا می کند. این جداسازی از تعامل بسته ها یا نرم افزار با یکدیگر جلوگیری می کند.
برای نصب virtualenv ، از دستور pip3 استفاده خواهیم کرد ، مانند زیر:
? $ pip3 install virtualenv
?
پس از نصب ، یک بررسی نسخه را اجرا کنید تا تأیید کنید که نصب با موفقیت انجام شده است:
? $ virtualenv –version
?
باید خروجی زیر یا مشابه آن را ببینیم:
Output
virtualenv 20.0.20 from /home/sammy/.local/lib/python3.5/site-packages/virtualenv/__init__.py

با موفقیت virtualenv را نصب کرده اید.
در این مرحله ، می توانیم برنامه وب Django و متعلقات نرم افزاری مرتبط با آن را از سایر بسته ها یا پروژه های Python در سیستم خود جدا کنیم.
مرحله 3 – Django را نصب کنید
سه راه برای نصب Django وجود دارد. ما از روش نصب pip این آموزش استفاده خواهیم کرد ، اما همه گزینه های موجود برای شما را ارجاع می دهیم.
• گزینه 1: نصب Django درون یک virtualenv
این روش زمانی ایده آل است که نیاز دارید نسخه Django جدا از محیط جهانی سرور مجازی باشد.
• گزینه 2: نصب Django از منبع
اگر جدیدترین نرم افزار را می خواهید یا چیزی جدیدتر از آنچه مخزن Ubuntu APT شما ارائه می دهد ، می توانید مستقیماً از منبع آن رانصب کنید. توجه داشته باشید که اگر می خواهید نسخه نرم افزار شما به روز باشد ، انتخاب این روش مستلزم توجه و نگهداری مداوم است.
• گزینه 3: نصب Django به صورت جهانی با pip
روشی که با آن همراه میشویم ، pip 3 است زیرا نصب Django را در سطح جهانی انجام خواهیم داد.
ما می خواهیم Django را با استفاده از pip در یک محیط مجازی نصب کنیم. برای راهنمایی بیشتر و اطلاع در مورد راه اندازی و استفاده از محیط های برنامه نویسی ، این آموزش مربوط به تنظیم یک محیط مجازی را بررسی کنید.
در دیرکتوری هوم سرور مجازی ، باید دایرکتوری ایجاد کنیم که شامل برنامه Django ما باشد. دستور زیر را اجرا کنید تا دایرکتوری به نام django-apps یا نام دیگری به انتخاب خود ایجاد کنید. سپس به داخل پوشه بروید.
? $ mkdir django-apps
?
? $ cd django-apps

درون دیرکتوری django-apps ، محیط مجازی خود را ایجاد کنید. بیایید آن را env بنامیم.
? $ virtualenv env
اکنون محیط مجازی را با دستور زیر فعال کنید:
? $ . env/bin/activate
?
پس از تغییر پیشوند به (env) مطلع میشوید که فعال شده است ، که بسته به اینکه در کدام دیرکتوری قرار دارید ، مشابه زیر خواهد بود:
(env) Sammy@ubuntu:$
در داخل محیط ، بسته Django را با استفاده از pip نصب کنید. نصب Django به ما امکان می دهد برنامه های Django را ایجاد و اجرا کنیم. برای کسب اطلاعات بیشتر در مورد Django ، سری آموزش های ما را در مورد توسعه Django را بخوانید
? (env) Sammy@ubuntu:$ pip install django
?
پس از نصب ، با اجرای بررسی نسخه ، نصب Django خود را تأیید کنید:
? (env) Sammy@ubuntu:$ django-admin –version
?
نتیجه خروجی به صورت زیر یا مشابه آن خواهد بود:
Output
2.2.12

با نصب Django بر روی سرور مجازی تان، می توانیم به سراغ ایجاد یک پروژه آزمایشی برویم تا مطمئن شویم که همه چیز به درستی کار می کند.
مرحله 4 – ایجاد یک پروژه تست Django
برای تست نصب Django ، یک برنامه وب اسکلتی ایجاد می کنیم.
تنظیم قوانین فایروال
در مرحله اول ، در صورت وجود ، باید پورت مورد استفاده را در فایروال سرور مجازی خود باز کنیم. اگر از UFW استفاده می کنید (همانطور که در راهنمای راه اندازی سرور مجازی اولیه توضیح داده شده است) ، می توانید پورت را با دستور زیر باز کنید:
? (env) Sammy@ubuntu:$ sudo ufw allow 8000
?
شروع پروژه
اکنون می توانیم با استفاده از django-admin ، ابزار خط فرمان برای کارهای مدیریتی در پایتون ، برنامه ای تولید کنیم. سپس می توانیم از دستور startproject برای ایجاد ساختار دایرکتوری پروژه برای وب سایت تستی خود استفاده کنیم.
در حالی که در دیرکتوری برنامه django هستید ، دستور زیر را اجرا کنید:
? (env) Sammy@ubuntu:$ django-admin startproject testsite
?
توجه: اجرای دستور django-admin startproject <projectname> ، نام دایرکتوری پروژه و بسته پروژه را <projectname> می نامد و پروژه را در دایرکتوری که در آن فرمان اجرا شده است ، ایجاد می کند. اگر پارامتر <destination> اختیاری ارائه شود ، Django از دیرکتوری مقصد ارائه شده به عنوان دایرکتوری پروژه استفاده می کند ، و management.py و بسته پروژه را درون آن ایجاد می کند.

حال می توانیم ببینیم که چه فایل های پروژه ای به تازگی ساخته شده اند. به فهرست راهنمای testite بروید و سپس محتویات آن دیرکتوری را فهرست کنید تا ببینید چه فایل هایی ایجاد شده اند:
? (env) Sammy@ubuntu:$ cd testsite
?
? (env) Sammy@ubuntu:$ ls
?
Output
manage.py testsite

خروجی را مشاهده خواهید کرد که نشان می دهد این دایرکتوری حاوی فایلی به نام manage.py و پوشه ای به نام testsite است. فایل manage.py شبیه django-admin است و بسته پروژه را در sys.path قرار می دهد. همچنین متغیر محیط DJANGO_SETTINGS_MODULE را تنظیم می کند تا به فایل تنظیمات پروژه شما نشان دهد.
با اجرای دستور less مانند زیر می توانید اسکریپت manage.py را در ترمینال خود مشاهده کنید:
? (env) Sammy@ubuntu:$ less manage.py
?
هنگامی که خواندن اسکریپت را تمام کردید ، برای خروج از فایل ، Q را فشار دهید.
اکنون برای مشاهده سایر فایل های ایجاد شده به دایرکتوری Testite بروید:
? (env) Sammy@ubuntu:$ cd testsite/
?
سپس دستور زیر را برای لیست کردن محتوای دیرکتوری اجرا کنید:
? (env) Sammy@ubuntu:$ ls
?
چهار فایل را مشاهده خواهید کرد:
Output
__init__.py settings.py urls.py wsgi.py

بیایید ببینیم هر یک از این فایل ها چگونه اند:
? __init__.py به عنوان نقطه ورود پروژه Python شما عمل می کند.
? settings.py تنظیمات نصب Django شما را توصیف می کند و به Django اطلاع می دهد که کدام تنظیمات در دسترس است.
? urls.py حاوی لیست urlpatterns است ، که URL ها را به نمای آنها مسیریابی و نگاشت می کند.
? wsgi.py شامل پیکربندی مربوط به رابط گیت وب سرور مجازی است. رابط گیت وب سرور مجازی (WSGI) استاندارد پلتفرم پایتون برای استقرار سرور مجازی ها و برنامه های وب است.
توجه: اگرچه یک فایل پیش فرض ایجاد شده است ، اما شما هنوز هم می توانید wsgi.py را در هر زمان متناسب با نیازهای استقرار خود تغییر دهید.

وب سایت خود را شروع و مشاهده کنید
اکنون می توانیم سرور مجازی را راه اندازی کنیم و با اجرای دستور runserver ، وب سایت را بر روی هاست و پورت تعیین شده مشاهده کنیم.
باید آدرس IP سرور مجازی شما را به لیست ALLOWED_HOSTS در فایل settings.py واقع در ~ / test_django_app / Testite / Testite / اضافه کنیم.
همانطور که در مقاله های Django گفته شد ، متغیر ALLOWED_HOSTS شامل “لیستی از رشته های نماینده هاست / دامنه هایی است که این سایت Django می تواند ارائه کند. این یک اقدام امنیتی برای جلوگیری از حملات هدر هاست HTTP است ، که حتی در بسیاری از تنظیمات سرور مجازی وب به ظاهر بی خطر امکان پذیر است. ”
برای افزودن آدرس IP می توانید از ویرایشگر متن مورد علاقه خود استفاده کنید. به عنوان مثال ، اگر از nano استفاده می کنید ، دستور زیر را به سادگی اجرا کنید:
? (env) Sammy@ubuntu:$ nano ~/django-apps/testsite/testsite/settings.py
?

پس از اجرای فرمان ، بهتر است به بخش مجاز هاست ها بروید و آدرس IP سرور مجازی خود را درون براکت ها با یک یا دو کاما اضافه کنید.
settings.py
“””
Django settings for testsite project.

Generated by ‘django-admin startproject’ using Django 2.0.

“””

# SECURITY WARNING: don’t run with debug turned on in production!
DEBUG = True

# Edit the line below with your server IP address
ALLOWED_HOSTS = [‘your-server-ip’]

می توانید با نگه داشتن کلیدهای CTRL + x و سپس فشار دادن کلید y ، تغییرات را ذخیره کنید و از nano خارج شوید.
با انجام این کار ، حتماً به دایرکتوری که management.py در آن قرار دارد بروید:
? (env) Sammy@ubuntu:$ cd ~/django-apps/testsite/
?
اکنون در دستور زیر your-server-ip را با IP سرور مجازی خود جایگزین کنید:
? (env) Sammy@ubuntu:$ python manage.py runserver your-server-ip:8000
?
در آخر ، می توانید به لینک زیر بروید تا ببینید وب سایت اسکلتی شما چگونه است ، دوباره متن هایلایت شده را با IP واقعی سرور مجازی خود جایگزین کنید:
http://your-server-ip:8000/
پس از لود صفحه ، یک صفحه وب دریافت خواهید کرد که مشابه زیر است:

این تأیید می کند که Django به درستی نصب شده است و پروژه آزمایش ما به درستی کار می کند.
هنگامی که آزمایش برنامه تان به پایان رسید ، می توانید CTRL + C را فشار دهید تا دستور Runnerver متوقف شود. با این کار به محیط برنامه نویسی خود باز خواهید گشت.
هنگامی که آماده ترک محیط Python خود هستید ، می توانید دستور غیرفعال کردن را اجرا کنید:
? (env) Sammy@ubuntu:$ deactivate
?
غیرفعال کردن محیط برنامه نویسی، شما را به سمت فرمان نهایی ترمینال باز می گرداند.
نتیجه
در این آموزش شما با موفقیت آخرین نسخه پایتون 3 که از طریق مخزن Ubuntu APT در دسترس شماست ، به روزرسانی کرده اید. همچنین pip 3 ، virtualenv و django را نصب کردید.
اکنون ابزارهای مورد نیاز برای شروع ساخت برنامه های وب Django را در اختیار دارید.

 

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

نصب و پیکربندی Ansible در اوبونتو 18.04 – نصب MySQL در اوبونتو 18.04

نظارت بر سلامت سرور با Checkmk در اوبونتو – اجرای چند نسخه PHP بر روی یک سرور

نصب Nginx، MySQL، PHP در CentOS 7 –  نصب و پیکربندی Elasticsearch در اوبونتو 18.04

راه اندازی سرور اولیه با اوبونتو 20.04 – تنظیم کلیدهای SSH در Ubuntu 20.04

نصب و استفاده از PostgreSQL در اوبونتو 20.0 – نحوه نصب MySQL در اوبونتو 20.04

نصب Python 3 روی سرور Ubuntu 18.04 –  نحوه نصب Python 3 روی سرور Ubuntu 20.04

نصب Linux،Apache،MySQL،PHP LAMP در اوبونتو 20.04 –  نصب وب سرور Apache در CentOS 8

نحوه نصب Drupal با Docker Compose –  نحوه نصب Nginx در اوبونتو 20.04

7 مورد از اقدامات امنیتی برای محافظت از سرورهای شما –  نحوه نصب و ایمن سازی Redis در اوبونتو 20.04

نحوه نصب و ایمن سازی Redis در اوبونتو 18.04 – اضافه کردن فضای Swap در اوبونتو 20.04

چگونه می توان فایروال را با UFW در اوبونتو 20.04 تنظیم کرد – نظارت بر اطلاعیه و مسیر BGP با BGPalerter اوبونتو 18.04

نصب و ایمن سازی phpMyAdmin در اوبونتو 20.04  –  نصب و استفاده از Composer در اوبونتو 20.04

ریست کردن رمز ورود ریشه MySQL یا MariaDB –  استفاده از نوع داده MySQL BLOB برای ذخیره تصاویر

نصب Nginx در اوبونتو 18.04 – نصب توزیع Anaconda پایتون در اوبونتو 20.04

نحوه نصب جاوا با Apt در اوبونتو 18.04 –  نحوه نصب Django و تنظیم محیط توسعه در اوبونتو 16.04

نصب جنگو و تنظیم محیط توسعه در اوبونتو 20.04 – نحوه ایجاد سرور Minecraft در اوبونتو 18.04

نحوه راه اندازی یک پروژه Node با Typescript –  نحوه نصب و پیکربندی VNC در اوبونتو 18.04

ایجاد یک برنامه Django و اتصال آن به یک بانک اطلاعاتی – نصب و پیکربندی VNC در اوبونتو 20.04

نصب MariaDB در اوبونتو 20.04  –  فعال سازی و اتصال رابط کاربری Django

تنظیم پلتفرم Cloud IDE کد سرور را در اوبونتو 18.04 – پیکربندی Apache HTTP با رویداد MPM و PHP-FPM

 

 

کلمات کلیدی خرید سرور

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

 

 

 

 

برچسب‌ها:


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

 

آخرین نسخه پشتیبانی بلند مدت سیستم عامل اوبونتو ، Ubuntu 20.04 Focal Fossa در 23 آوریل 2020 منتشر شد. در این راهنما نحوه به روزرسانی سیستم اوبونتو با نسخه 18.04 یا بعد از آن به اوبونتو 20.04 توضیح داده خواهد شد.
هشدار: مانند هرگونه به روزرسانی دیگر بین نسخه های اصلی یک سیستم عامل ، این فرایند با خطر ذاتی شکست ، از دست رفتن داده ها یا پیکربندی ناقص نرم افزارها را به همراه دارد. پشتیبان گیری جامع و آزمایش گسترده به شدت توصیه می شود.
برای جلوگیری از این مشکلات ، توصیه می کنیم به جای به روزرسانی در محل ، به یک سرور مجازی تازه اوبونتو 20.04 منتقل شوید. ممکن است شما هنوز هم نیاز به بررسی تفاوت در پیکربندی نرم افزار هنگام به روزرسانی داشته باشید ، اما به احتمال زیاد سیستم اصلی دارای ثبات بیشتری خواهد بود. برای یادگیری نحوه جابه جایی بین سرور مجازی ها می توانید مجموعه مقالات ما را دنبال کنید.
پیش نیازها
این راهنما فرض می کند که شما یک سیستم اوبونتو 18.04 یا بالاتر دارید که با یک کاربر غیر ریشه sudo فعال شده است.
مشکلات احتمالی
اگرچه بسیاری از سیستم ها بدون بروز حادثه قابل نصب هستند ، اما انتقال به نسخه جدید با نصب توزیع از ابتدا ، پیکربندی سرویس ها با آزمایش دقیق در طول مسیر ، و جابه جایی برنامه یا داده های کاربر به عنوان یک مرحله جداگانه ، ایمن تر و قابل پیش بینی تر است.
شما هرگز نباید یک سیستم تولید را بدون آزمایش کردن تمام نرم افزارها و خدمات مستقر شده خود در برابر به روزرسانی در یک محیط مرحله بندی ، ارتقا دهید. به خاطر داشته باشید که کتابخانه ها ، زبان ها و سرویس های سیستم ممکن است تغییر قابل ملاحظه ای داشته باشند. قبل از بروزرسانی ، مطالب انتشار Focal Fossa را بخوانید.
مرحله 1 – تهیه نسخه پشتیبان از سیستم خود
قبل از تلاش برای بروزرسانی اساسی در هر سیستمی ، باید اطمینان حاصل کنید که اگر این نسخه به روزرسانی نادرست باشد ، اطلاعات شما از دست نخواهد رفت. بهترین راه برای دستیابی به این امر تهیه نسخه پشتیبان از کل سیستم فایل شما است. در صورت عدم امکان این کار ، از دایرکتوری هوم کاربرو ، هر فایل پیکربندی سفارشی و داده های ذخیره شده توسط سرویس هایی مانند پایگاه داده های رابطه ای کپی تهیه کنید.
برای مشاهده روش های بکاپ گیری که روی بیشتر سیستم های اوبونتو کار خواهند کرد ، به نحوه انتخاب رویکرد بکاپ گیری موثر برای VPS خود مراجعه کنید.
مرحله 2 – به روزرسانی بسته های نصب شده فعلی
قبل از شروع به روزرسانی نسخه ، ایمن ترین کار به روز رسانی به جدیدترین نسخه های کلیه بسته ها برای نسخه فعلی است. با به روزرسانی لیست بسته شروع کنید:
? $ sudo apt update
?
سپس ، بسته های نصب شده را به آخرین نسخه های موجود خود ارتقا دهید:
? $ sudo apt upgrade
?
لیستی از به روزرسانی ها به شما نشان داده می شود و از شما خواسته می شود ادامه دهید. با yes پاسخ دهید و Enter را فشار دهید.
این روند ممکن است مدتی طول بکشد. پس از اتمام کار ، از دستور dist-upgrade با apt-get استفاده کنید ، که هر گونه به روزرسانی دیگر که شامل تغییر متعلقات است ،یا اضافه کردن و حذف بسته های جدید در صورت لزوم را انجام میدهد. مجموعه ای از به روز رسانی ها را شامل می شود که ممکن است با مرحله apt upgrade قبلی به عقب برگشته باشد:
? $ sudo apt dist-upgrade
?
در صورت درخواست ادامه ، دوباره با y پاسخ دهید و منتظر بمانید که به روزرسانی به پایان برسد.
اکنون که نصب به روز رسانی اوبونتو را دارید ، می توانید برای ارتقاء به نسخه 20.04 از do-release-upgrade استفاده کنید.
مرحله 3 – به روزرسانی با ابزار do-release-upgrade اوبونتو
به طور معمول ، نسخه های اوبونتو با تغییر در /etc/apt/sources.list Apt – که مشخص کننده مخازن بسته است – و با استفاده از apt-get dist-upgrade که خود به روزرسانی را انجام میدهد، قابل ارتقا هستند. اگرچه هنوز هم ممکن است این روند همچنان کار کند ، اوبونتو ابزاری به نام do-release-upgrade را فراهم می کند تا این ارتقا ایمن تر و آسان تر شود.
do-release-upgrade وجود نسخه جدید ، به روزرسانی لیست منابع و سایر کارها را بررسی می کند ، و مسیر ارتقاء رسمی توصیه شده برای به روزرسانی سرور مجازی است که باید از طریق یک اتصال از راه دور انجام شود.
با اجرای o-release-upgrade بدون هیچ آپشنی شروع کنید:
? $ sudo do-release-upgrade
?
اگر نسخه جدید اوبونتو به طور رسمی منتشر نشده است ، ممکن است خروجی زیر را دریافت کنید:
Output
Checking for a new Ubuntu release
No new release found

توجه داشته باشید که در سرور مجازی اوبونتو ، نسخه جدید LTS تا انتشر نسخه اول خود ، در این مورد 20.04.1 برای do-release-upgrade در دسترس نیست. معمولاً چند ماه پس از تاریخ انتشار اولیه بیرون می آید.
اگر نسخه موجود را نمی بینید ، گزینه -d را برای ارتقا به نسخه توسعه اضافه کنید:
? $ sudo do-release-upgrade -d
?
اگر از طریق SSH به سیستم خود متصل هستید ، از شما سؤال می شود که آیا می خواهید ادامه دهید. در مورد ماشینهای مجازی یا سرور مجازی های مدیریت شده باید به خاطر داشته باشید که از دست دادن اتصال SSH یک خطر محسوب می شود ، به خصوص اگر وسیله دیگری برای اتصال از راه دور به کنسول سیستم ندارید (مثلاً یک ویژگی کنسول مبتنی بر وب).
در مورد سایر سیستمهای تحت کنترل خود ، به یاد داشته باشید که ایمن ترین کار این است که اجرای به روزرسانی های اصلی سیستم عامل را تنها زمانی انجام دهید که دسترسی فیزیکی مستقیم به دستگاه دارید.
در اعلان ظاهر شده، y را تایپ کرده و Enter را فشار دهید تا ادامه یابد:
Output
Reading cache

Checking package manager

Continue running under SSH?

This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.

If you continue, an additional ssh daemon will be started at port
‘1022’.
Do you want to continue?

Continue [yN]

در مرحله بعد ، به شما اطلاع داده می شود که do-release-upgrade ، نمونه جدیدی از sshd را در پورت 1022 شروع می کند:
Output
Starting additional sshd

To make recovery in case of failure easier, an additional sshd will
be started on port ‘1022’. If anything goes wrong with the running
ssh you can still connect to the additional one.
If you run a firewall, you may need to temporarily open this port. As
this is potentially dangerous it’s not done automatically. You can
open the port with e.g.:
‘iptables -I INPUT -p tcp –dport 1022 -j ACCEPT’

To continue please press [ENTER]

Enter را فشار دهید. در مرحله بعد ، ممکن است هشدار داده شود که ورودی آینه پیدا نشده است. Y را وارد کنید:
Output
Updating repository information

No valid mirror found

While scanning your repository information no mirror entry for the
upgrade was found. This can happen if you run an internal mirror or
if the mirror information is out of date.

Do you want to rewrite your ‘sources.list’ file anyway? If you choose
‘Yes’ here it will update all ‘bionic’ to ‘focal’ entries.
If you select ‘No’ the upgrade will cancel.

Continue [yN]

پس از دانلود لیستهای بسته جدید و محاسبه تغییرات ، از شما سؤال می شود که آیا می خواهید به روزرسانی را شروع کنید. دوباره ، y را وارد کنید تا ادامه دهید:
Output
Do you want to start the upgrade?

18 installed packages are no longer supported by Canonical. You can
still get support from the community.

3 packages are going to be removed. 142 new packages are going to be
installed. 452 packages are going to be upgraded.

You have to download a total of 338 M. This download will take about
42 minutes with a 1Mbit DSL connection and about 13 hours with a 56k
modem.

Fetching and installing the upgrade can take several hours. Once the
download has finished, the process cannot be canceled.

Continue [yN] Details [d]

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

در این حالت ، بهتر است بله را پاسخ دهید. در موارد دیگر ، ممکن است از شما سؤال شود که آیا می خواهید یک فایل پیکربندی را که تغییر داده اید جایگزین کنید. این اغلب یک فراخوان داوری است و به احتمال زیاد به دانش در مورد نرم افزار خاصی نیاز دارد که خارج از محدوده این آموزش است.
پس از پایان نصب بسته های جدید ، از شما سؤال می شود که آیا حاضر هستید بسته های منسوخ را حذف کنید. در سیستم استوک بدون پیکربندی سفارشی ، وارد کردن y در اینجا باید ایمن تر باشد. در سیستمی که به شدت اصلاح کرده اید ، بهتر است d را وارد کنید و لیست بسته های حذف شده را بررسی کنید ، شاید شامل مواردی باشد که لازم است بعدا مجدد نصب کنید.
Output
Remove obsolete packages?

53 packages are going to be removed.

Continue [yN] Details [d]

سرانجام ، با فرض اینکه همه چیز خوب پیش رفته است ، مطلع خواهید شد که به روزرسانی کامل شده است و باید ریستارت کنید. y را وارد کنید تا ادامه یابد:
Output
System upgrade is complete.

Restart required

To finish the upgrade, a restart is required.
If you select ‘y’ the system will be restarted.

Continue [yN]
در یک بخش SSH ، احتمالاً چیزی شبیه به موارد زیر را مشاهده خواهید کرد:
Output
Connection to 203.0.113.241 closed by remote host.
Connection to 203.0.113.241 closed.

ممکن است لازم باشد برای خروج از اعلان محلی خود ، یک کلید را در اینجا فشار دهید ، زیرا بخش SSH شما در انتهای سرور مجازی خاتمه یافته است.
لحظه ای صبر کنید تا سرور مجازی شما دوباره راه اندازی شود ، سپس دوباره وصل شوید. هنگام ورود به سیستم ، باید با پیامی که تأیید می کند اکنون در Focal Fossa هستید ، مورد استقبال قرار بگیرید:
Output
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-29-generic x86_64)

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

 

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

 

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

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

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

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

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

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

نصب Jitsi Meet در Debian 10

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

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

 

کلمات کلیدی خرید سرور

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

 

برچسب‌ها:


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

اگر مجموعه توسعه ما Django را دنبال کرده باشید ، با موفقیت یک برنامه Django ایجاد کرده اید که به کاربران دارای امتیازات ادمین اجازه می دهد تا از طریق داشبورد UI ادمین Django ، نظرات و پست های خود را اضافه کنند. همچنین با اهرم کردن MySQL و مدل های راه حل نگاشت مربوط به آبجکت، تداوم داده ها را تنظیم کرده اید.
در این آموزش ، نماهای Django را ایجاد خواهیم کرد که برنامه وب ما را قادر می سازد به درستی درخواست های وب را انجام داده و پاسخ های وب مورد نیاز را برگرداند. همانطور که در مطالب Django تعریف شده است ، یک پاسخ وب می تواند محتوای HTML یک صفحه وب ، یک تغییر مسیر یا یک خطای HTTP باشد (به عنوان مثال 404). کد توابع view تا زمانی که در مسیر Python شما باشد از لحاظ فنی می تواند در هر نقطه از پروژه شما قرار بگیرد. با این حال ، برخی از کنوانسیون های معروف برای نامگذاری و قرار دادن فایل وجود دارند که این توابع view در آنها موجودند ، و ما این روشها را دنبال خواهیم کرد.
پس از اتمام مراحل این آموزش ، وبلاگ Django شما یک پست جدید را به آدرس اینترنتی IP-یا-domain / post شما وارد می کند.
پیش نیازها
این آموزش بخشی از مجموعه توسعه Django است و ادامه آن سری میباشد.
اگر این مجموعه را دنبال نکرده اید ، فرضیات زیر را مطرح می کنیم:
• باید نسخه 3 یا بالاتر Django را نصب کرده باشید.
• برنامه Django خود را به یک پایگاه داده وصل کرده اید. ما از MySQL استفاده می کنیم ، و می توانید با دنبال کردن قسمت دوم مقاله Django ،تحت عنوان “نحوه ایجاد یک برنامه Django و اتصال آن به یک بانک اطلاعاتی” ، به این اتصال دست یابید.
• شما با یک سیستم عامل مستقر در یونیکس کار می کنید ، ترجیحاً با سرور مجازی ابری اوبونتو 20.04 زیرا این سیستمی است که ما روی آن آزمایش کرده ایم. اگر می خواهید Django را در محیطی مشابه تنظیم کنید ، لطفاً به آموزش “نحوه نصب Django و ایجاد یک محیط توسعه در اوبونتو 20.04” مراجعه کنید.
• رابط کاربری ادمین Django خود را تنظیم کرده اید. شما می توانید این کار را با پیروی از آموزش ادمین Django انجام دهید.
از آنجا که این راهنما در وهله اول با نماهای Django سروکار دارد ، حتی اگر ستاپ کمی متفاوتی دارید، می توانید آن را دنبال کنید.
مرحله 1 – ایجاد توابع view
در درون ترمینال خود ، ابتدا باید وارد دایرکتوری مربوطه شوید و محیط مجازی Python خود را فعال کنید. اگر همراه این مجموعه بوده باشید ، می توانید دستورات زیر را وارد کنید. مهم است که همیشه در هنگام تهیه برنامه خود از یک محیط برنامه نویسی پایتون استفاده کنید تا اطمینان حاصل شود که کد شما درج شده است و شما با ستاپ درست کار می کنید.
? $ cd ~/my_blog_app
?
? $ . env/bin/activate
اکنون که محیط مجازی شما فعال شده است ، بیایید به دیرکتوری blogsite  برویم و در آنجا یک فایل پایتون را باز خواهیم کرد و اولین تابع view خود را ایجاد می کنیم.
? (env) Sammy@ubuntu:$ cd ~/my_blog_app/blog/blogsite
?
برای مشاهده ویرایش ، با استفاده از nano یا ویرایشگر متن مورد نظر خود ، فایل views.py را باز کنید.
? (env) Sammy@ubuntu:$ nano views.py
?
با باز کردن فایل ، باید کدی مشابه با این را پر کنید:
/my_blog_app/blog/blogsite/views.py
from django.shortcuts import render

# Create your views here.

عبارت ورود را که تابع render () را از کتابخانه django.shortcuts وارد می کند، نگه خواهیم داشت. تابع  render()به ما امکان می دهد تا یک الگو و یک متن را با هم ترکیب کنیم تا بتوانیم آبجکت HttpResponse مناسب را برگردانیم. این را به خاطر بسپارید زیرا با هر نمایی که می نویسیم ، مسئولیت نمونه سازی ، پر کردن و بازگرداندن HttpResponse را بر عهده داریم.
در مرحله اول ما اولین نمای خود را اضافه خواهیم کرد که از کاربران با صفحه ایندکس استقبال می کند. تابع HttpResponse () را از کتابخانه http  در Django وارد میکنیم. با استفاده از آن تابع ، متن را ارسال می کنیم تا هنگام درخواست صفحه وب نمایش داده شود.
~/my_blog_app/blog/blogsite/views.py
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
return HttpResponse(‘Hello, welcome to the index page.’)

پس از آن ، یک تابع دیگر اضافه خواهیم کرد که پست شخصی را که می خواهیم بعداً در آموزش ایجاد کنیم ، نمایش می دهد.
~/my_blog_app/blog/blogsite/views.py

def individual_post(request):
return HttpResponse(‘Hi, this is where an individual post will be.’)

فایل نهایی views.py اکنون به شرح زیر خواهد بود.
~/my_blog_app/blog/blogsite/views.py
from django.http import HttpResponse
from django.shortcuts import render

def index(request):
return HttpResponse(‘Hello, welcome to the index page.’)

def individual_post(request):
return HttpResponse(‘Hi, this is where an individual post will be.’)

پس از پایان ویرایش فایل ، حتما آن را ذخیره کنید و خارج شوید. در nano ، می توانید CTRL و X ، سپسY ، و ENTER را فشار دهید.
در حال حاضر ، هیچ URL مشخص شده ای که این توابع به آن اشاره کند وجود ندارد ، بنابراین باید آن را به فایل urlpatterns خود در فایل پیکربندی URL اضافه کنیم. با افزودن نماها، اجازه خواهیم داد که از طریق این فایل پیکربندی به نگاشت URLها به آنها بپردازیم تا بتوانیم صفحاتی را که ایجاد کرده ایم مشاهده کنیم.
مرحله 2 – URL را به نماها نگاشت کنید
با Django ، می توانیم URL های خود را طراحی کنیم تا با برنامه خود استفاده کنیم. این کار در پایتون خالص با استفاده از فایلی که معمولاً به URLconf  یا فایل “پیکربندی URL” شناخته می شود انجام می گردد.
برای نمایش صفحه وب ، Django ابتدا باید ماژول URLconf را برای استفاده تعیین کند ، سپس به دنبال urlpatterns ، یک ساختار داده لیستی است که شامل همه الگوهای URL میباشد. سپس Django از هر الگوی URL عبور می کند تا اینکه اولین موردی را پیدا کند که مطابقت داشته باشد. پس از یافتن یک انطباق ، Django نمای مرتبط را پیدا می کند ، و آن تابع نما داده های مربوط به الگوی URL و یک آبجکت HttpRequest را دریافت می کند. اگر در هر مرحله در طول این فرآیند خرابی وجود داشته باشد ، به جای آن ، یک نمای خطا نشان داده می شود.
در این بخش ، ما با دو فایل urls.py مختلف در دو دیرکتوری مختلف برنامه خود کار خواهیم کرد.
در حالی که در دیرکتوری ~ / my_blog_app / blog / blogsite هستید، فایل urls.py – که به عنوان فایل URLconf شما نیز شناخته شده است – را برای ویرایش باز کنید. ما در اینجا از nano برای ویرایش فایل استفاده خواهیم کرد.

? (env) Sammy@ubuntu:$ nano urls.py
?

با لیست urlpatterns فایل را به گونه ای تغییر دهید که مشابه فایل زیر باشد.
~/my_blog_app/blog/blogsite/urls.py
from django.urls import path
from . import views

urlpatterns = [
path(”, views.index, name=’index’),
path(‘post/’, views.individual_post, name=’individual_post’)
]

پس از اتمام خطوط بالا را اضافه کنید، فایل را ذخیره کرده و ببندید.
پس از به روزرسانی فایل URLconf دیرکتوری blogsite ، آن را در URLconf دیرکتوری blog قرار خواهیم داد وگرنه قابل تشخصی نیست. ما باید این کار را انجام دهیم زیرا در فایل تنظیمات ما به عنوان ROOT_URLCONF تنظیم شده است. این بدان معناست که Django در حال جستجوی urlpatterns در آدرس URL دیرکتوری blog است.
برای درج blogsite URLconf در blog URLconf ، باید به آن دیرکتوری برویم.
? (env) Sammy@ubuntu:$ cd ~/my_blog_app/blog/blog
?
پس از رفتن به آنجا ، می توانید فایل URLconf را با nano یا ویرایشگر متن دیگر مورد نظر خود باز کنید.
? (env) Sammy@ubuntu:$ nano urls.py
?
در این فایل خطوط زیر را اضافه خواهیم کرد تا فایل /blogsite/urls.py را که با آنها کار کرده ایم درج شود ، که در خط دوم نشان داده شده است.
~/my_blog_app/blog/blog/urls.py
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
path(‘admin/’, admin.site.urls),
path(”, include(‘blogsite.urls’))
]

فایل را ذخیره کنید و ببندید.
اکنون برای رفتن به URL هایی که ایجاد کرده ایم می خواهیم مرورگر وب را باز کنیم و تأیید کنیم که آنها متنی را که ما به نماها اضافه کرده ایم را نمایش می دهند. برای دسترسی به فایل manage.py که برنامه Django را ارائه میدهد ، باید به پوشه والد برویم.
? (env) Sammy@ubuntu:$ cd ..
?
دستور زیر را صادر کنید. در زیر می توانید 0.0.0.0 را با آدرس IP خود جایگزین کنید.
? (env) Sammy@ubuntu:$ python manage.py runserver 0.0.0.0:8000
?
در مرورگر وب خود ، به آدرس IP خود ، پورت 8000 بروید:
your-server-ip:8000
یک صفحه وب مشابه زیر دریافت خواهید کرد:

در مرحله بعد ، به URL زیر بروید:
your-server-ip:8000/post/
از اینجا باید صفحه وب زیر نمایش داده شود:

اکنون تأیید کردیم که دو فایل urls.py کار می کنند و داده ها دقیقاً آنچه را که انتظار داریم را نشان می دهد. اکنون بیایید برخی از داده های واقعی را وارد وبلاگ خود کنیم.
مرحله 3 – ایجاد یک پست وبلاگ
اکنون که اصول کارکرد الگوها و نماهای URL را میدانید ، بیایید یک پست وبلاگ اضافه کنیم و به جای متنی که در فایل های پایتون رمزگذاری کرده ایم ، در صفحه وب نمایش داده شود.
پست را از طریق صفحه ادمینی که قبلاً تنظیم کرده ایم ایجاد خواهیم کرد. با استفاده از سرور مجازی خود در برنامه Django ، از یک مرورگر وب استفاده کنید تا به صفحه وبلاگ نویسی ادمین به آدرس زیر بروید:
your-server-ip:8000/admin/blogsite/

در آنجا ، روی پیوند + Add واقع در ردیف Posts کلیک کنید تا پر کردن دیتابیس با یک پست وبلاگ نمونه را شروع کنید

با کلیک روی لینک ، فرم ورودی مانند این را دریافت خواهید کرد:

هر گاه می خواهید پستی اضافه کنید ، برای این کار به این صفحه می روید. از طرف دیگر ، می توانید پست ها را با لینک تغییر ویرایش کنید.
در فرم موجود ، می توانید قسمتهای زیر را ویرایش کنید:
فیلد محتوا
عنوان عنوان پست مورد نظر را اینجا اضافه کنید. به عنوان مثال My First Blog Post
کد شماره صفحه به قسمتی از URL اشاره دارد که المان آدرس وب معتبر را با کلیدواژه های قابل خواندن معرفی میکند. عموما از عنوان صفحه گرفته میشود. بنابراین در این حالت میتوانیم از my-first-blog-post استفاده کنیم
محتوا بدنه پست وبلاگ شماست. برای مثال ما فقط Hello, World! را اضافه میکنیم، اما شما میتوانید هر متن طولانی وارد کنید.
نویسنده در این فیلد نام و نام کاربری مربوطه را اضافه کنید. ما از sammy استفاده میکنیم

فرم پست وبلاگ را همانطور که می بینید برای اهداف تست خود پر کنید.

هنگامی که داده های مثال را به صفحه اضافه کردید ، روی دکمه SAVE کلیک کنید. صفحه تأیید زیر را دریافت خواهید کرد:

تبریک می گویم! شما اولین پست وبلاگ خود را ایجاد کرده اید!
در مرحله بعد ، بررسی می کنیم که آیا یک ردیف به پایگاه داده MySQL اضافه کرده است و شامل داده هایی که تازه وارد رابط کاربری سرور مجازی کرده ایم میباشد.
مرحله 4 – نمایش داده های بانک اطلاعاتی
در این مرحله ، باید به MySQL برویم ، بنابراین فرآیند فعلی سرور مجازی را از طریق ترمینال با تایپ کردن CTRL + C متوقف کنید ، سپس مفسر MySQL خود را باز کنید. کاربر ما برای پایگاه داده برنامه Django ، djangouser میباشد ، اما حتما از کاربر مناسب برای پروژه خود استفاده کنید.
? (env) sammy@ubuntu:$ mysql -u djangouser
?
وقتی وارد MySQL شدید ، به پایگاه داده blog_data (یا پایگاه داده ای که برای پروژه شما صحیح است) بروید:
? Mysql> use blog_data;
?
سپس محتوای جدول blogsite_post را نمایش دهید.
? Mysql> select * from blogsite_post;
?
خروجی مشابه زیر را دریافت خواهید کرد که باید اطلاعات اضافه شده شما به رابط کاربری ادمین را نشان دهد.
Output
+—-+——————–+——————–+—————+—————————-+——–+
| id | title | slug | content | created_on | author |
+—-+——————–+——————–+—————+—————————-+——–+
| 1 | My First Blog Post | my-first-blog-post | Hello, World! | 2020-05-14 00:30:03.186564 | Sammy |
+—-+——————–+——————–+—————+—————————-+——–+
1 row in set (0.00 sec)

همانطور که در خروجی نشان داده شده است ، یک ردیف داده برای پستی که اضافه کرده ایم وجود دارد. اکنون بیایید این داده ها را به تابع view برای پست ها ارجاع دهیم. برای خروج از مفسر MySQL از CTRL + D استفاده کنید.
به برنامه فایل views.py در داخل برنامه blogsite  خود بروید.
? (env) sammy@ubuntu:$ cd ~/my_blog_app/blog/blogsite
?
اکنون فایل را باز کنید تا بتوانیم داده های جدید خود را وارد کنیم.
? (env) sammy@ubuntu:$ nano views.py
?
فایل را ویرایش کنید تا همانند فایل زیر باشد.
~/my_blog_app/blog/blogsite
from django.shortcuts import render
from django.http import HttpResponse
from .models import Post

def index(request):
return HttpResponse(‘Hello, welcome to the index page.’)

def individual_post(request):
recent_post = Post.objects.get(id__exact=1)
return HttpResponse(recent_post.title + ‘: ‘ + recent_post.content)

در کد بالا ، عبارت ورودی دیگری را برای پست اضافه کردیم. رشته نقل قول شده را نیز از HttpResponse حذف کردیم و آن را با داده های پست وبلاگ خود جایگزین کردیم. برای ارجاع داده ها برای یک آبجکت خاص ، از شناسه پست وبلاگ در ارتباط با آبجکت مورد نظر که میخواهیم نمایش دهیم استفاده می کنیم و آن شناسه را در متغیری به نام recent_post ذخیره می کنیم. سپس می توانیم با اضافه کردن فیلد با جداکننده دوره ، فیلد های خاصی از آن آبجکت را بدست آوریم.
پس از ذخیره کردن و بستن فایل ، برای اجرای برنامه Django به مکان فایل management.py بروید.
? (env) sammy@ubuntu:$ cd ~/my_blog_app/blog
?
? (env) sammy@ubuntu:$ python manage.py runserver 0.0.0.0:8000

از یک مرورگر وب ، به آدرس زیر بروید:
your-server-ip:8000/post/

در اینجا ، ما تغییراتی را که ایجاد کرده ایم خواهیم دید. صفحه مشابه این خواهد بود ، متنی را که به پست اضافه کردید نشان داده می شود.

پس از پایان یافتن صفحه ، CTRL + C را در ترمینال فشار دهید تا روند کار متوقف شود.
برای غیرفعال کردن محیط برنامه نویسی خود ، می توانید دستور deactivate را تایپ کرده و سپس از سرور مجازی خارج شوید.
نتیجه
در این آموزش نماها را ایجاد کردیم، الگوهای URL را نگاشت کردیم ، و متن را در صفحه وب از پایگاه داده پست وبلاگ خود نمایش دادیم.
آموزش بعدی نحوه استفاده از HTML برای ایجاد قالب های Django و نحوه زیباسازی را پوشش میدهد. تاکنون این مجموعه مدلهای Django و نماهای Django را پوشش داده است. قالب ها آخرین قسمت مهم و بنیادی برای پایه و اساس برنامه Django شما هستند.

 

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

 

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

 

کلمات کلیدی خرید سرور

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

 

برچسب‌ها:


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

NFS یا Network File System یک پروتکل سیستم فایل توزیع شده است که به شما امکان می دهد دایرکتوری های از راه دور را روی سرور مجازی خود سوار کنید. همچنین این امکان را به شما می دهد فضای ذخیره سازی را در یک مکان دیگر مدیریت کنید و از طرف چندین کلاینت روی آن فضا بنویسید. NFS روشی نسبتاً استاندارد و کارآمد برای دسترسی به سیستمهای از راه دور از طریق شبکه را فراهم می کند و در شرایطی کار می کند که به طور منظم به منابع مشترک دسترسی پیدا کند.
در این راهنما ، چگونگی نصب نرم افزار مورد نیاز برای عملکرد NFS را در اوبونتو 20.04 ، پیکربندی دو مانیتور NFS روی یک سرور مجازی و کلاینت ، بررسی خواهیم کرد و به اشتراک گذاری از راه دور می پردازیم.
پیش نیازها
ما در این آموزش از دو سرور مجازی استفاده خواهیم کرد که یک قسمت از سیستم فایل آن را با دیگری به اشتراک می گذارد. برای دنبال کردن این راهنما، به موارد زیر نیاز خواهید داشت:
• دو سرور مجازی Ubuntu 20.04. هر یک از آنها باید یک کاربر غیر ریشه با امتیازات sudo ، فایروال تنظیم شده با UFW و شبکه های خصوصی داشته باشد.
o برای کمک به راه اندازی کاربر غیر ریشه با امتیازات sudo و فایروال ، راه اندازی سرور مجازی اولیه ما را با راهنمای اوبونتو 20.04 دنبال کنید.
در طول این آموزش ، ما به سرور مجازی هایی که دایرکتوری های آن را به عنوان هاست و سرور مجازی که این دایرکتوری ها را به عنوان کلاینت سوار می کند ، اشاره می کنیم. برای هر دو باید آدرس IP را بدانید. در صورت وجود حتما از آدرس شبکه خصوصی استفاده کنید.
در طول این آموزش به آدرسهای IP توسط متغیرهایی host_ip و client_ip ارجاع خواهیم داد. لطفاً در صورت لزوم جایگزین کنید.
مرحله 1 – دانلود و نصب مولفه ها
با نصب مولفه های لازم در هر سرور مجازی شروع خواهیم کرد.
روی هاست
روی سرور مجازی میزبان ، بسته nfs-kernel-server را نصب کنید ، که به شما امکان می دهد دایرکتوری های خود را به اشتراک بگذارید. از آنجایی که این اولین عملی است که در این بخش با apt انجام می دهید ، قبل از نصب ، دیرکتوری بسته محلی خود را ریفرش کنید:
Host:$ sudo apt update

Host:$ sudo apt install nfs-kernel-server
پس از نصب این بسته ها ، به سرور مجازی کلاینت بروید.
روی کلاینت
در سرور مجازی کلاینت ، باید پکیجی به نام nfs-common نصب کنیم ، که عملکرد NFS را بدون در اختیار گذاشتن اجزای سرور مجازی فراهم می کند. قبل از نصب ، دوباره دیرکتوری بسته محلی را ریفرش کنید تا اطمینان حاصل کنید که اطلاعات به روز دارید:
Client:$ sudo apt update

Client:$ sudo apt install nfs-common

اکنون که هر دو سرور مجازی بسته های لازم را دارند ، می توانیم پیکربندی آنها را شروع کنیم.
مرحله 2 – ایجاد دایرکتوری Share روی هاست
می خواهیم دو دایرکتوری جداگانه را با تنظیمات مختلف پیکربندی به اشتراک بگذاریم ، تا دو روش اصلی که NFS mounts میتواند با توجه به دسترسی ابرکاربر پیکربندی شود را نشان دهیم .
ابرکاربرها می توانند در هر مکانی در سیستم خود فعال باشند. با این حال ، دایرکتوری های نصب شده NFS جزئی از سیستمی نیستند که روی آن نصب شده اند ، بنابراین به طور پیش فرض ، سرور مجازی NFS از انجام عملیاتی که نیاز به امتیازات فوق کاربری دارند امتناع می ورزد. این محدودیت پیش فرض بدین معنی است که ابرکاربرها روی کلاینت نمی توانند به عنوان ریشه فایل هایی را بنویسند ، مالکیت را واگذار کنند یا سایر وظایف فوق کاربری را در قسمت NFS انجام دهند.
با این وجود ، گاهی اوقات ، کاربران قابل اعتماد در سیستم کلاینت وجود دارند که باید این اقدامات را در سیستم فایل نصب شده انجام دهند اما نیازی به دسترسی ابرکاربر به هاست ندارند. شما می توانید سرور مجازی NFS را تنظیم کنید تا این کار را انجام دهد ، اگرچه این یک عنصر خطر را ایجاد می کند ، زیرا چنین کاربری می تواند دسترسی ریشه ای به کل سیستم هاست را بدست آورد.
مثال 1: صادر کردن یک MOUNT با هدف عمومی
در مثال اول ، یک NFS mount عمومی ایجاد خواهیم کرد که از رفتار پیش فرض NFS استفاده کند تا ارتباط با هاست را برای کاربری با امتیازات اصلی در دستگاه کلاینت که از این امتیازات ابرکاربری کلاینت استفاده میکند، مشکل نماید. ممکن است از چیزی شبیه به این برای ذخیره فایلهایی که با استفاده از یک سیستم مدیریت محتوا بارگذاری شده اند و یا برای ایجاد فضایی برای کاربران که به راحتی فایل های پروزه را به اشتراک بگذارند ، استفاده کنید.
ابتدا دیرکتوری اشتراک را تهیه کنید:
Host:$ sudo mkdir /var/nfs/general -p

از آنجا که ما آن را با sudo ایجاد می کنیم ، این دیرکتوری متعلق به کاربر ریشه میزبان است:
Host:$ ls -la /var/nfs/general

Output
drwxr-xr-x 2 root root 4096 May 14 18:36 .

NFS هر عملیات ریشه ای بر روی کلاینت را به عنوان یک اقدام امنیتی به اعتبارات nobody:nogroup  ترجمه میکند. بنابراین ، ما باید مطابق با آن اعتبارات، مالکیت دایرکتوری را تغییر دهیم.
Host:$ sudo chown nobody:nogroup /var/nfs/general

اکنون آماده صادر کردن این دیرکتوری هستید.
مثال 2: صادر کردن دیرکتوری هوم
در مثال دوم ، هدف این است که دایرکتوری های هوم کاربر ذخیره شده روی هاست در سرور مجازی های کلاینت در دسترس باشد ، در حالی که به ادمین های معتبر آن سرور مجازی های کلاینت امکان دسترسی برای مدیریت راحت کاربران را بدهد.
برای انجام این کار ، دایرکتوری /home را صادر خواهیم کرد. از آنجا که در حال حاضر وجود دارد ، نیازی به ایجاد آن نداریم. مجوزها را نیز تغییر نمی دهیم. اگر این کار را انجام دادیم ، می تواند برای هر کسی که دارای دیرکتوری هوم در دستگاه میزبان است ، منجر به طیف وسیعی از مشکلات شود.
مرحله 3 – پیکربندی NFS Exports در سرور مجازی میزبان
در مرحله بعدی ، برای تنظیم اشتراک گذاری این منابع ، وارد فایل پیکربندی NFS خواهیم شد.
در دستگاه میزبان ، فایل / etc / eksport را در ویرایشگر متن خود با امتیازات اصلی باز کنید:
Host:$ sudo nano /etc/exports

فایل حاوی کامنت هایی است که ساختار کلی هر خط پیکربندی را نشان میدهد. ترکیب آن به شرح زیر است:
/etc/exports
directory_to_share client(share_option1,…,share_optionN)

ما باید برای هر دایرکتوری که قصد داریم به اشتراک بگذاریم خطی ایجاد کنیم. حتما مکان نگهدارنده client_ip که در اینجا نشان داده شده است را به آدرس IP واقعی خود تغییر دهید:
/etc/exports
/var/nfs/general client_ip(rw,sync,no_subtree_check)
/home client_ip(rw,sync,no_root_squash,no_subtree_check)

در اینجا ، ما به جز no_root_squash از گزینه های تنظیمات مشابه برای هر دو دیرکتوری استفاده می کنیم. بیایید نگاهی بیندازیم که معنی هر یک از این گزینه ها چیست:
rw: این گزینه به رایانه کلاینت امکان دسترسی و خواندن volume را می دهد.
sync: این گزینه NFS را مجبور به نوشتن تغییراتی در دیسک قبل از پاسخ دادن می کند. منجر به محیط پایدارتر و مداوم تر میشود زیرا پاسخ ، بیانگر وضعیت واقعی والیوم از راه دور است. اما سرعت عملکردهای فایل را نیز کاهش می دهد.
no_subtree_check: این گزینه مانع از بررسی زیرشاخه می شود ، که فرآیندی است که در آن میزبان باید بررسی کند که آیا فایل برای هر درخواست همچنان در درخت صادر شده موجود است یا خیر. با تغییر نام فایل هنگام تغییر کلاینت ، این مسئله می تواند مشکلات بسیاری ایجاد کند. تقریباً در همه موارد ، بهتر است چک کردن زیرشاخه را غیرفعال کنید.
no_root_squash: به طور پیش فرض ، NFS درخواست های یک کاربر ریشه از راه دور را به یک کاربر بدون امتیاز در سرور مجازی ترجمه می کند. این به عنوان ویژگی امنیتی در نظر گرفته شده بود تا از دسترسی یک حساب کاربری ریشه روی کلاینت برای استفاده از سیستم فایل میزبان به عنوان ریشه جلوگیری کند. no_root_squash این رفتار را برای برخی از اشتراکات غیرفعال می کند.
پس از اتمام انجام تغییرات ، فایل را ذخیره کنید و ببندید. سپس ، برای اینکه اشتراکات را در اختیار کلاینتانی که پیکربندی کرده اید قرار دهید ، سرور مجازی NFS را با دستور زیر مجدداً راه اندازی کنید:
host:$ sudo systemctl restart nfs-kernel-server

با این حال ، قبل از استفاده واقعی از اشتراکات جدید ، باید اطمینان داشته باشید که طبق قوانین فایروال ترافیک به سمت فایل اشتراکی مجاز باشد.
مرحله 4 – تنظیم فایروال روی هاست
ابتدا ، اجازه دهید وضعیت فایروال را بررسی کنیم تا ببینیم آیا فعال شده است یا خیر ، و اگر چنین است ، ببینیم چه چیزی در حال حاضر مجاز است:
host:$ sudo ufw status

Output
Status: active

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

روی سیستم ما فقط ترافیک SSH مجاز است ، بنابراین برای ترافیک NFS باید قاعده ای اضافه کنیم.
در بسیاری از برنامه ها ، می توانید از sudo ufw app listاستفاده کرده و آنها را با نام فعال کنید ، اما nfs یکی از این موارد نیست. با این حال ، از آنجا که ufw همچنین /etc/servicesرا برای پورت و پروتکل یک سرویس بررسی می کند ، ما هنوز می توانیم dNFS را با نام اضافه کنیم. بهترین روش فعال کردن محدود کننده ترین قانون است که هنوز ترافیکی را که می خواهید مجاز کنید را ممکن میسازد ، بنابراین به جای اینکه ترافیک را از هر کجا امکان پذیر کنید ، به صورت خاص عمل خواهیم کرد.
برای باز کردن پورت 2049 روی هاست از دستور زیر استفاده کنید ، حتماً آدرس IP کلاینت خود را جایگزین کنید:
host:$ sudo ufw allow from client_ip to any port nfs

می توانید تغییر را با تایپ دستور زیر تأیید کنید:
host:$ sudo ufw status

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

To Action From
— —— —-
OpenSSH ALLOW Anywhere
2049 ALLOW 203.0.113.24
OpenSSH (v6) ALLOW Anywhere (v6)

این خروجی تأیید می کند که UFW فقط امکان عبور NFS در پورت 2049 از دستگاه کلاینت ما را فراهم می کند.
مرحله 5 – ایجاد Mount Points و نصب دیرکتوری ها بر روی کلاینت
اکنون که سرور مجازی هاست پیکربندی شده است و اشتراکات خود را ارائه می دهد ، کلاینت خود را آماده خواهیم کرد.
برای اینکه اشتراک گذاری ها از راه دور در دسترس کلاینت قرار گیرد ، باید دایرکتوری ها را روی میزبان نصب کنیم که می خواهیم آنها را به اشتراک بگذاریم تا دایرکتوری های خالی روی کلاینت قرار بگیرد.
توجه: اگر فایلها و دایرکتوری هایی در قسمت استقرار شما وجود داشته باشند ، به محض سوار کردن اشتراک NFS ، مخفی می شوند. برای جلوگیری از از بین رفتن فایل های مهم ، اطمینان حاصل کنید که اگر در پوشه ای که از قبل وجود دارد مستقر میکنید ، دایرکتوری خالی باشد.

ما دو دیرکتوری برای سوار کردن فایل های خود ایجاد خواهیم کرد:
Client:$ sudo mkdir -p /nfs/general

Client:$ sudo mkdir -p /nfs/home

اکنون که یک مکان برای قرار دادن اشتراک گذاری ها از راه دور داریم و فایروال را باز کرده ایم ، می توانیم با استفاده از آدرس IP سرور مجازی میزبان خود ، اشتراکات را سوار کنیم:
Client:$ sudo mount host_ip:/var/nfs/general /nfs/general

Client:$ sudo mount host_ip:/home /nfs/home
این دستورات اشتراک گذاری ها را از رایانه میزبان روی دستگاه کلاینت نصب می کنند. می توانید چند بار بررسی کنید که آنها با موفقیت نصب شده اند. می توانید این کار را با یک فرمان mount یا findmnt بررسی کنید ، اما df -h خروجی خواناتری را ارائه می دهد:
Client:$ df -h

Output
Filesystem Size Used Avail Use% Mounted on
udev 474M 0 474M 0% /dev
tmpfs 99M 936K 98M 1% /run
/dev/vda1 25G 1.8G 23G 8% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/vda15 105M 3.9M 101M 4% /boot/efi
tmpfs 99M 0 99M 0% /run/user/1000
10.132.212.247:/var/nfs/general 25G 1.8G 23G 8% /nfs/general
10.132.212.247:/home 25G 1.8G 23G 8% /nfs/home

هر دو اشتراک گذاری که مستقر کردیم در پایین ظاهر می شود. از آنجا که از همان سیستم فایل سوار شده اند ، همان استفاده از دیسک را نشان می دهند. برای دیدن میزان فضای استفاده شده تحت هر نقطه نصب ، از دستور میزان استفاده دیسک یعنی du  و مسیر سوار کردن استفاده کنید. پرچم -s به جای نمایش استفاده برای هر فایل ، خلاصه ای از استفاده را ارائه می دهد. –h خروجی خواناتری را برای انسان چاپ می کند.
مثلا:
Client:$ du -sh /nfs/home

Output
36K /nfs/home

این به ما نشان می دهد که محتویات کل دایرکتوری هوم فقط از 36k فضای موجود استفاده می کند.
مرحله 6 – آزمایش دسترسی NFS
در مرحله بعد ، اجازه دهید با نوشتن چیزی برای هرکدام از آنها ، دسترسی به اشتراکات را آزمایش کنیم.
مثال 1: اشتراک گذاری هدف کلی
ابتدا یک فایل آزمایشی را در قسمت / var / nfs / general بنویسید:
Client:$ sudo touch /nfs/general/general.test

سپس ، مالکیت آن را بررسی کنید:
Client:$ ls -l /nfs/general/general.test

Output
-rw-r–r– 1 nobody nogroup 0 Aug 1 13:31 /nfs/general/general.test

از آنجا که ما این والیوم را بدون تغییر رفتار پیش فرض NFS نصب کردیم و فایل را به عنوان کاربر اصلی کلاینت از طریق دستور sudo ایجاد کردیم، مالکیت فایل به طور پیش فرض برای nobody:nogroupمیباشد. ابرکاربرهای کلاینت قادر به انجام اقدامات ادمین معمولی مانند تغییر صاحب یک فایل یا ایجاد یک دیرکتوری جدید برای گروهی از کاربران ، در این اشتراک NFS نخواهند بود.
مثال 2: اشتراک دیرکتوری هوم
برای مقایسه مجوزهای اشتراک با هدف کلی با اشتراک دیرکتوری هوم ، یک فایل را در / nfs / home به همین روش ایجاد کنید:
Client:$ sudo touch /nfs/home/home.test

سپس به مالکیت فایل نگاه کنید:
Client:$ ls -l /nfs/home/home.test

Output
-rw-r–r– 1 root root 0 Aug 1 13:32 /nfs/home/home.test

ما با استفاده از دستور sudo ، home.test را به عنوان root ساختیم ، دقیقاً به همان روشی که فایل general.test را ایجاد کردیم. اما ، در این حالت متعلق به root است زیرا وقتی گزینه no_root_squash را در این نصب مشخص کردیم ، از رفتار پیش فرض استفاده می کنیم. این امر اجازه می دهد تا کاربران اصلی ما در دستگاه کلاینت به عنوان ریشه عمل کنند و اجرای حساب های کاربری را بسیار راحت تر می کند. در عین حال ، این بدان معنی است که ما نباید به این کاربران دسترسی اصلی را به هاست بدهیم.
مرحله 7 – نصب دیرکتوری های از راه دور NFS در بوت
ما می توانیم اشتراک گذاری های NFS راه دور را با اضافه کردن آنها به فایل / etc / fstab روی کلاینت بطور خودکار در بوت نصب کنیم.
این فایل را با امتیازات ریشه در ویرایشگر متن خود باز کنید:
Client:$ sudo nano /etc/fstab

در پایین فایل ، برای هر یک از اشتراکات یک خط اضافه کنید. مانند این ظاهر خواهند شد:
/etc/fstab
. . .
host_ip:/var/nfs/general /nfs/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home /nfs/home nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

توجه: می توانید اطلاعات بیشتری در مورد گزینه هایی که در اینجا مشخص می کنیم در صفحه Man NFS پیدا کنید. با اجرای دستور زیر می توانید به آن دسترسی پیدا کنید:
$ man nfs

کلاینت به طور خودکار پارتیشن های از راه دور را در بوت سوار می کند ، اگرچه ممکن است برای برقراری اتصال و در دسترس بودن اشتراک گذاری ، مدتی طول بکشد.
مرحله 8 – Unmount (پیاده) کردن اشتراک گذاری از راه دور NFS
اگر دیگر نمی خواهید که دایرکتوری از راه دور روی سیستم شما نصب باشد ، می توانید با بیرون رفتن از ساختار دیرکتوری اشتراک گذاری و پیاده کردن آن ، آن را Unmount کنید:
Client:$ cd ~

Client:$ sudo umount /nfs/home

Client:$ sudo umount /nfs/general

توجه داشته باشید که این فرمان همانطور که انتظار دارید umount  است و نه unmount .
با این کار اشتراک گذاری از راه دور حذف می شود و فقط فضای محلی شما قابل دسترسی خواهد بود:
Client:$ df -h

Output
Filesystem Size Used Avail Use% Mounted on
udev 474M 0 474M 0% /dev
tmpfs 99M 936K 98M 1% /run
/dev/vda1 25G 1.8G 23G 8% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/vda15 105M 3.9M 101M 4% /boot/efi
tmpfs 99M 0 99M 0% /run/user/1000

اگر همچنین می خواهید از استقرار مجدد آنها در ریبوت بعدی جلوگیری کنید ، / etc / fstab را ویرایش کرده و با قرار دادن یک کاراکتر # در ابتدای خط ، خط را حذف کرده یا آن را باطل کنید. همچنین می توانید با از بین بردن گزینه auto  مانع نصب خودکار شوید ، که به شما امکان می دهد هچنان آن را به صورت دستی سوار کنید.
نتیجه
در این آموزش ، ما یک میزبان NFS ایجاد کردیم و با ایجاد دو نصب مختلف NFS ، که با یک کلاینت NFS به اشتراک گذاشتیم ، برخی رفتارهای کلیدی NFS را نشان دادیم.
اگر به دنبال اجرای NFS در تولید هستید ، مهم است که توجه داشته باشید که این پروتکل رمزگذاری نشده است. در مواردی که از طریق شبکه خصوصی به اشتراک می گذارید ، ممکن است مشکلی نداشته باشد. اما در موارد دیگر ، یک VPN یا نوع دیگری از تونل رمزگذاری شده برای محافظت از اطلاعات شما ضروری خواهد بود.

 

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

 

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

 

کلمات کلیدی خرید سرور

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

 

برچسب‌ها:


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

Okteto CLI یک پروژه منبع باز است که تجربه توسعه محلی را برای برنامه های در حال اجرا در Kubernetes فراهم می کند. با استفاده از آن می توانید کد خود را بر روی IDE محلی خود بنویسید و به محض ذخیره یک فایل ، تغییرات را می توان به خوشه Kubernetes خود وارد کرد و برنامه شما فوراً بروزرسانی خواهد شد. کل این فرآیند بدون نیاز به ساخت تصاویر Docker یا اعمال مانیفست های Kubernetes اتفاق می افتد ، که می تواند زمان قابل توجهی طول بکشد.
در این آموزش ، شما از Okteto برای بهبود بهره وری در هنگام تهیه یک برنامه بومی Kubernetes استفاده خواهید کرد. ابتدا ، یک خوشه Kubernetes ایجاد می کنید و از آن برای اجرای یک برنامه استاندارد “Hello World” استفاده می کنید. سپس از Okteto برای توسعه و به روز کردن خودکار برنامه خود بدون نیاز به نصب محلی استفاده خواهید کرد.
پیش نیازها
قبل از شروع این آموزش ، موارد زیر را نیاز خواهید داشت:
? خوشه Kubernetes 1.12+ . در این آموزش ، از یک خوشه vpsgol Kubernetes با سه گره استفاده می شود ، اما شما می توانید با استفاده از یک روش دیگر ، خوشه ایجاد کنید.
? kubectl و doctl برای برقراری ارتباط با خوشه شما نصب و تنظیم شده باشند.
? یک حساب کاربری Docker Hub
? Docker در حال اجرا بر روی دستگاه محلی شما.
مرحله 1 – ایجاد برنامه Hello World
برنامه “hello world” یک سنت قدیمی در توسعه وب است. در این حالت ، یک سرویس وب ساده است که به هر درخواست با ” hello world” پاسخ می دهد. اکنون که خوشه Kubernetes خود را ایجاد کرده اید ، اجازه دهید یک برنامه “Hello World” را در Golang و مانیفیستی که برای استقرار آن در Kubernetes استفاده خواهید کرد ، ایجاد کنیم.
اولین به دایرکتوری هوم خود سوییچ کنید:
? $ cd ~
?
اکنون یک دایرکتوری جدید به نام hello_world تهیه کرده و به داخل آن بروید:
? $ mkdir hello_world
?
? $ cd hello_world

با IDE یا ویرایشگر متن مورد علاقه خود ، فایل جدیدی را با نام main.go ایجاد و باز کنید:
? $ nano main.go
?
main.go یک وب سرور مجازی Golang خواهد بود که پیام hello world را به شما باز می گرداند !. بنابراین ، اجازه دهید از کد زیر استفاده کنیم:
main.go
package main

import (
“fmt”
“net/http”
)

func main() {
fmt.Println(“Starting hello-world server…”)
http.HandleFunc(“/”, helloServer)
if err := http.ListenAndServe(“:8080”, nil); err != nil {
panic(err)
}
}

func helloServer(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, “Hello world!”)
}

کد main.go موارد زیر را انجام می دهد:
? اولین عبارت در یک فایل منبع Go باید نام بسته باشد. دستورات اجرایی همیشه باید از package main استفاده کنند.
? بخش ورودی نشان می دهد کد بسته به چه مواردی بستگی دارد. در این حالت از fmt برای دستکاری رشته و net / http برای سرور مجازی HTTP استفاده می کند.
? تابع main نقطه ورود به باینری شماست. از روش http.HandleFunc برای پیکربندی سرور مجازی جهت فراخوانی helloServer در هنگام دریافت درخواست به مسیر / استفاده می شود. http.ListenAndServe یک سرور مجازی HTTP را شروع می کند که در تمام رابط های شبکه به پورت 8080 گوش می دهد.
? عملکرد helloServer شامل منطق کنترل کننده درخواست شما است. در این حالت ، hello world! را به عنوان پاسخ به درخواست خواهد نوشت.
شما باید یک تصویر Docker ایجاد کرده و آن را به سمت رجیستری Docker خود هدایت کنید تا Kubernetes بتواند آن را دریافت و سپس برنامه را اجرا کند.
یک فایل جدید با نام Dockerfile را با IDE یا ویرایشگر متن مورد علاقه خود باز کنید:
? $ nano Dockerfile
?

Dockerfile شامل دستورات لازم برای ساخت کانتینر Docker برنامه شما می باشد. اجازه دهید از کد زیر استفاده کنیم:
Dockerfile
FROM golang:alpine as builder
RUN apk –update –no-cache add bash
WORKDIR /app
ADD . .
RUN go build -o app

FROM alpine as prod
WORKDIR /app
COPY –from=builder /app/app /app/app
EXPOSE 8080
CMD [“./app”]
Copy

Dockerfile شامل دو مرحله است builder و  prod:
• مرحله builder  شامل ابزارهای ساخت Go است. که مسئول کپی کردن فایل ها و ساخت باینری Go است.
• مرحله prod تصویر نهایی است. فقط شامل یک سیستم تهی و باینری برنامه خواهد بود.
این یک تمرین خوب میباشد. کانتینر تولید شما را کوچکتر و ایمن تر می کند زیرا تنها شامل برنامه شما و دقیقاً آنچه برای اجرای آن لازم است می باشد.
تصویر کانتینر را بسازید (نام_DockerHub_usus را با نام کاربری داکر هاب خود جایگزین کنید):
? $ docker build -t your_DockerHub_username/hello-world:latest
?
اکنون آن را به Docker Hub وارد کنید:
? $ docker push your_DockerHub_username/hello-world:latest
?
سپس ، یک پوشه جدید برای مانیفست Kubernetes ایجاد کنید:
? $ mkdir k8s
?
وقتی از مانیفست Kubernetes استفاده می کنید ، به Kubernetes می گویید که چگونه برنامه شما اجرا می شود. این بار ، یک شیء استقرار ایجاد می کنید. بنابراین ، یک فایل جدید deployment.yaml را با IDE یا ویرایشگر متن مورد علاقه خود ایجاد کنید:
? $ nano k8s/deployment.yaml
?
مطالب زیر یک شیء استقرار Kubernetes را شرح می دهد که تصویر داکر okteto/hello-world:latest را اجرا میکند. این محتوا را به فایل جدید خود اضافه کنید ، اما در مورد شما okteto ذکر شده بعد از برچسب image را با your_DockerHub_username جایگزین کنید:
~/hello_world/k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
selector:
matchLabels:
app: hello-world
replicas: 1
template:
metadata:
labels:
app: hello-world
spec:
containers:
– name: hello-world
image: your_DockerHub_username/hello-world:latest
ports:
– containerPort: 8080

مانیفست استقرار دارای سه بخش اصلی است:
? metadata  نام استقرار شما را مشخص می کند.
? replicas  مشخص می کند که چند نسخه از آن را می خواهید اجرا کنید.
? template  به Kubernetes می گوید که چه چیزی را مستقر کند و چه برچسب هایی را اضافه نماید. در این حالت ، یک کانتینر واحد ، با تصویر okteto/hello-world:latest ، که به پورت 8080 گوش میدهد، و با برچسب app: hello-world همراه است. توجه داشته باشید که این برچسب همان مورد استفاده در بخش selector  است.
اکنون به راهی برای دسترسی به برنامه خود نیاز دارید. می توانید با ایجاد یک شیء سرویس ، برنامه ای را در Kubernetes قرار دهید. بیایید با استفاده از مانیفست این کار را انجام دهیم. با IDE یا ویرایشگر متن مورد علاقه خود فایل جدیدی به نام service.yaml ایجاد کنید:
? nano k8s/service.yaml
?
محتوای زیر سرویس هایی را نشان می دهد که شیء استقرار hello world را در معرض دید شما قرار می دهد:
k8s/service.yaml
apiVersion: v1
kind: Service
metadata:
name: hello-world
spec:
type: LoadBalancer
ports:
– protocol: TCP
port: 80
targetPort: 8080
name: http
selector:
app: hello-world

مانیفست سرویس چهار بخش اصلی دارد:
? metadata  به Kubernetes می گوید که چگونه سرویس خود را نامگذاری کنند.
? type  به Kubernetes می گوید چگونه می خواهید سرویس خود را در معرض دید قرار دهید.
? برچسب ports  به Kubernetes می گوید که کدام پورت را می خواهید در معرض دید قرار دهید ، و چگونه می توانید آنها را برای استقرار خود نگاشت کنید. در این حالت ، پورت 80 را به صورت خارجی در معرض دید قرار می دهید و آن را به پورت 8080 در محل استقرار خود هدایت می کنید.
? selector  به Kubernetes می گوید که چگونه ترافیک را هدایت کند. در این حالت ، هر پوسته با برچسب app: hello-world ترافیک دریافت می کند.
اکنون شما همه چیز را برای استقرار برنامه “hello world” خود در Kubernetes دارید. در ادامه کار استقرار را انجام خواهیم داد.
مرحله 2 – استفاده از برنامه Hello World شما
در این مرحله برنامه “Hello World” خود را در Kubernetes مستقر می کنید ، سپس تأیید می کنید که درست کار می کند.
با استقرار برنامه خود در Kubernetes کار را شروع کنید:
? $ kubectl apply -f k8s
?
خروجی زیر را مشاهده خواهید کرد:
Output
deployment.apps “hello-world” created
service “hello-world” created

بعد از گذشت حدود یک دقیقه یا بیشتر ، می توانید IP برنامه خود را بازیابی کنید. برای بررسی سرویس خود از این دستور kubectl استفاده کنید:
? $ kubectl get service hello-world
?
خروجی مانند این را مشاهده خواهید کرد که اشیاء سرویس Kubernetes را لیست میکند. به IP برنامه خود در ستون EXTERNAL-IP توجه کنید:
Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-world ClusterIP your_cluster_ip your_external_ip 8080/TCP 37s

مرورگر خود را باز کنید و به برنامه your_external_ip که برای برنامه “Hello World” ذکر شده است بروید. قبل از ادامه مرحله بعدی تأیید کنید که برنامه شما در حال اجرا است.

تا این لحظه ، شما یک مسیر نسبتاً سنتی را برای توسعه برنامه ها با Kubernetes دنبال کرده اید. در ادامه ، هر زمان که می خواهید کد را در برنامه خود تغییر دهید ، باید یک تصویر جدید Docker بسازید و وارد کنید و سپس آن تصویر را از Kubernetes بیرون بکشید. این روند می تواند مدتی طول بکشد. Okteto برای ساده تر ساختن این حلقه درونی طراحی شده است. بیایید به Okteto CLI نگاهی بیندازیم و ببینیم چگونه می تواند کمک کند.
مرحله 3 – نصب Okteto CLI
اکنون با نصب Okteto CLI ، بهره وری توسعه Kubernetes را بهبود می بخشید. رابط خط فرمان Okteto یک پروژه منبع باز است که به شما امکان می دهد تغییرات کد برنامه را با برنامه های Kubernetes همزمان کنید. شما می توانید با استفاده از IDE ، اشکال زداگر یا کامپایلرهای مورد علاقه خود استفاده کنید بدون اینکه برای تست برنامه خود مجبور به تعهد ، ساخت ، ارائه یا استقرار مجدد کانتینرها باشید – همانطور که در مراحل قبلی انجام دادید.
برای نصب Okteto CLI در دستگاه macOS یا Linux ، دستور زیر را اجرا کنید:
? $ curl https://get.okteto.com -sSfL | sh
?
بیایید نگاهی دقیق تر به این دستور بیاندازیم:
? از دستور curl برای انتقال داده به سرور مجازی استفاده می شود.
? پرچم -s هر خروجی را سرکوب می کند.
? پرچم -S خطاها را نشان می دهد.
? پرچم -f باعث عدم موفقیت درخواست در HTTP می شود.
? پرچم -L باعث می شود درخواست از تغییر مسیر پیروی کند.
? عملگر | این خروجی را به دستور sh پایپ می کند ، که آخرین باینری okteto را در دستگاه محلی شما دانلود و نصب می کند.
اگر ویندوز را اجرا می کنید ، می توانید فایل را بطور متناوب از طریق مرورگر وب خود دانلود کرده و به صورت دستی آن را به PATH $ خود اضافه کنید.
پس از نصب Okteto CLI ، آماده هستید تا برنامه “hello world” را در حالت توسعه قرار دهید.
مرحله 4 – قرار دادن برنامه Hello world در حالت توسعه
Okteto CLI به منظور جابجایی برنامه در حال اجرا بر روی خوشه Kubernetes با کد موجود در دستگاه شما طراحی شده است. برای این کار ، Okteto از اطلاعات ارائه شده از یک فایل مانیفست Okteto استفاده می کند. این فایل شیء استقرار Kubernetes را که با کد محلی شما تعویض می شود ، اعلام می کند.
با IDE یا ویرایشگر متن مورد علاقه خود فایل جدیدی به نام okteto.yaml ایجاد کنید:
? $ nano okteto.yaml
?
بیایید یک مانیفست پایه بنویسیم که در آن می توانید نام شیء استقرار ، تصویر پایه Docker برای استفاده و یک پوسته را تعریف کنید. بعداً به این اطلاعات برمی گردیم. از فایل محتوای نمونه زیر استفاده کنید:
okteto.yaml
name: hello-world
image: okteto/golang:1
workdir: /app
command: [“bash”]

با اجرای دستور زیر آماده شوید تا برنامه خود را در حالت توسعه قرار دهید:
? $ okteto up
?
Output
? Development environment activated
? Files synchronized
Namespace: default
Name: hello-world

Welcome to your development environment. Happy coding!
default:hello-world /app>

دستور okteto up برنامه “hello world” را در یک محیط توسعه عوض می کند ، این بدان معنی است که:
? کانتینر برنامه Hello World با تصویرداکر okteto/golang:1 به روز می شود. این تصویر شامل ابزارهای لازم برای ساخت ، آزمایش ، اشکال زدایی و اجرای برنامه “Hello World” است.
? یک سرویس همگام سازی فایل ایجاد شده است تا تغییرات شما بین سیستم فایل محلی و غلاف برنامه تان را به روز نگه دارد.
? یک پوسته از راه دور در محیط توسعه شما شروع می شود. اکنون می توانید برنامه خود را بگونه ای که در دستگاه محلی خود هستید ، بسازید ، آزمایش و اجرا کنید.
? هر پردازشی که در پوسته از راه دور اجرا می کنید ، همان ترافیک ورودی ، همان متغیرهای محیط ، والیوم یا رمزها را به عنوان غلافهای اصلی برنامه “Hello World” دریافت خواهد کرد. این به نوبه خود ، یک محیط توسعه کاملاً واقع بینانه و شبیه تولید را به شما می دهد.
در همان کنسول ، اکنون برنامه را طبق معمول اجرا کنید (بدون ساختن و ارائه تصویر Docker) ، مانند این:
? Okteto> go run main.go
?
Output
Starting hello-world server…

اولین باری که برنامه را اجرا می کنید ، Go متعلقات شما را دانلود و برنامه را کامپایل می کند. صبر کنید تا این فرآیند کامل شود و با باز کردن مرورگر و ریفرش صفحه برنامه خود ، دقیقاً مانند گذشته ، برنامه خود را تست کنید.
اکنون آماده هستید تا توسعه را مستقیماً روی Kubernetes شروع کنید.
مرحله 5 – توسعه مستقیم روی Kubernetes
بیایید شروع به ایجاد تغییراتی در برنامه “hello world” کنیم و سپس ببینیم که چگونه در Kubernetes بازتاب می یابند.
فایل main.go را با IDE یا ویرایشگر متن مورد علاقه خود باز کنید. به عنوان مثال ، یک کنسول جداگانه باز کنید و دستور زیر را اجرا کنید:
? $ nano main.go
?
سپس ، پیام پاسخ خود را به Hello world from vpsgol! تغییر دهید!:
main.go
package main

import (
“fmt”
“net/http”
)

func main() {
fmt.Println(“Starting hello-world server…”)
http.HandleFunc(“/”, helloServer)
if err := http.ListenAndServe(“:8080”, nil); err != nil {
panic(err)
}
}

func helloServer(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, “Hello world from vpsgol!”)
}

اینجاست که گردش کار شما تغییر می کند. Okteto به جای ساختن تصاویر و استفاده مجدد از کانتینر برای به روزرسانی برنامه “hello world” ، تغییرات شما را در محیط توسعه خود در Kubernetes همگام سازی می کند.
از کنسولی که فرمان okteto up را اجرا کردید ، با فشار دادن CTRL + C، اجرای go run main.go را لغو کنید. اکنون برنامه را دوباره اجرا کنید:
? Okteto> default:hello-world /app> go run main.go
?
Output
Starting hello-world server…

به مرورگر برگردید و صفحه برنامه “Hello World” خود را مجدد لود کنید.

تغییرات کد شما بلافاصله و همه بدون نیاز به تعهد ، ایجاد یا ارائه در Kubernetes اعمال شد .
نتیجه
Okteto با کلیک روی یک دکمه ، خوشه Kubernetes را به یک پلت فرم توسعه کاملاً برجسته تبدیل می کند. در این آموزش شما Okteto CLI را نصب و پیکربندی کرده اید تا کدهای خود را مستقیماً بر روی Kubernetes تغییر دهید تا بتوانید کد را سریعاً تایپ کنید. اکنون می توانید به مخزن نمونه Okteto بروید تا نحوه استفاده از Okteto با زبان های مختلف برنامه نویسی و اشکال زدایی را ببینید.
همچنین ، اگر یک خوشه Kubernetes را با تیم خود به اشتراک می گذارید ، میتوانید به هر یک از اعضا یک فضای نام Kubernetes ارائه دهید که به گونه ای پیکربندی شده که از سایر توسعه دهندگان که بر روی همان خوشه کار میکنند، جدا باشد. این قابلیت عالی توسط اپلیکیشن Okteto در بازار Kubernetes vpsgol نیز ارائه شده است.

 

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

 

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

 

کلمات کلیدی خرید سرور

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

 

برچسب‌ها: