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

 

برچسب‌ها:Focal Fossa

نحوه ايجاد نماها (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 ارزان

 

برچسب‌ها:Django

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

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

 

برچسب‌ها:Network File SystemNFS

نحوه توسعه برنامه ها در 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 ارزان

 

برچسب‌ها:GolangKubernetesOkteto CLI

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

Laravel يك چارچوب منبع باز PHP است كه مجموعه اي از ابزارها و منابع را براي ساخت برنامه هاي كاربردي مدرن PHP فراهم مي كند. محبوبيت Laravel به واسطه اكوسيستم كامل ويژگي هاي داخلي اش ، در چند سال گذشته به سرعت در حال رشد است و بسياري از توسعه دهندگان آن را به عنوان چارچوب انتخاب خود براي يك فرايند توسعه كارآمد پذيرفته اند.
در اين راهنما ، يك برنامه جديد Laravel را روي يك سرور مجازي Ubuntu 20.04 نصب و پيكربندي مي كنيد ، از Composer براي دانلود و مديريت متعلقات چارچوب استفاده ميكنيد. پس از پايان كار ، يك برنامه آزمايشي كاربردي Laravel داريد كه محتوا را از يك پايگاه داده MySQL بيرون مي كشد.
پيش نيازها
براي تكميل اين راهنما ، ابتدا لازم است كارهاي زير را در سرور مجازي Ubuntu 20.04 خود انجام دهيد:
⦁ يك كاربر Sudo ايجاد كنيد و ufw را فعال كنيد. براي انجام اين كار ، مي توانيد راهنماي راه اندازي اوليه سرور مجازي در اوبونتو 20.04 را دنبال كنيد.
⦁ يك پشته LEMP با MySQL 8 نصب كنيد. اگر هنوز اين كار را انجام نداده ايد ، مي توانيد مراحل 1 تا 3 راهنماي ما درباره نحوه نصب Nginx ، MySQL و PHP را در اوبونتو 20.04 دنبال كنيد.
⦁ composer را نصب كنيد. براي نصب Laravel و متعلقات آن از Composer استفاده خواهيم كرد. مي توانيد Composer را با پيروي از راهنماي ما در مورد نحوه نصب Composer در اوبونتو 20.04 نصب كنيد.
مرحله 1 – نصب ماژول هاي PHP مورد نياز
قبل از نصب Laravel ، بايد چند ماژول PHP را كه مورد نياز چارچوب است ، نصب كنيد. ما براي نصب ماژول هاي php-mbstring ، php-xml و php-bcmath از PHP استفاده مي كنيم. اين پسوندهاي PHP پشتيباني بيشتري را براي مقابله با رمزگذاري كاراكترها ، XML و رياضيات دقيق ارائه مي دهند.
اگر اولين بار است كه از apt در اين بخش استفاده مي كنيد ، ابتدا بايد دستور update را براي به روزرساني حافظه نهان مدير بسته اجرا كنيد:
⦁ $ sudo apt update

اكنون مي توانيد بسته هاي مورد نياز را با اين دستور نصب كنيد:
⦁ $ sudo apt install php-mbstring php-xml php-bcmath

اكنون سيستم شما آماده اجراي نصب Laravel از طريق Composer است ، اما قبل از انجام اين كار ، به يك بانك اطلاعاتي براي برنامه خود نياز داريد.
مرحله 2 – ايجاد يك بانك اطلاعاتي براي برنامه
براي نشان دادن نصب و به كارگيري ساده Laravel ، يك برنامه ليست سفر ايجاد مي كنيم تا ليستي از مكانهايي را كه كاربر مي خواهد به آن سفر كند و ليستي از مكانهايي كه قبلاً بازديد كرده است ، نشان دهيم. اين كار مي تواند در يك جدول places ساده با يك فيلد براي مكان هايي كه نام را قرار ميدهيم و يك فيلد ديگر براي ذخيره آنها به عنوان بازديد شده يا بازديد نشده ذخيره شود ، كه ما آن را بازديد شده ميناميم. علاوه بر اين ، ما يك فيلد id براي شناسايي منحصر به فرد هر ورودي وارد خواهيم كرد.
براي اتصال به بانك اطلاعاتي از برنامه Laravel ، يك كاربر اختصاصي MySQL ايجاد خواهيم كرد و به اين كاربر امتيازات كاملي نسبت به بانك اطلاعاتي travellist اعطا مي كنيم.
در زمان نوشتن اين مقاله، باينري MySQL PHP يعني mysqlnd  از caching_sha2_authentication، روش تاييد هويت پيش فرض براي MySQL 8 پشتيابي نميكند. لازم است كاربر ديتابيس را با روش احراز هويت mysql_native_password تنظيم كنيم تا بتوانيم از PHP به پايگاه داده MySQL متصل شويم.
براي شروع كار ، با دستور زير به عنوان كاربر اصلي پايگاه داده به كنسول MySQL وارد شويد:
⦁ $ sudo mysql

براي ايجاد يك پايگاه داده جديد ، دستور زير را از كنسول MySQL خود اجرا كنيد:
⦁ Mysql> CREATE DATABASE travellist;

اكنون مي توانيد يك كاربر جديد ايجاد كنيد و در پايگاه داده سفارشي كه اخيراً ايجاد كرده ايد ، به آنها امتياز بدهيد. در اين مثال ، ما يك كاربر با نام Travelist_user و رمز عبور password ايجاد مي كنيم ، اگرچه بايد آن را با يك رمز عبور ايمن به انتخاب خود عوض كنيد:
⦁ Mysql> CREATE USER ‘travellist_user’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;

اكنون بايد به اين كاربر روي ديتابيس travellist مجوز اعطا كنيم:
⦁ Mysql> GRANT ALL ON travellist.* TO ‘travellist_user’@’%’;

اين كار به كاربر Travelist_user امتيازات كامل نسبت به پايگاه داده Travellist مي دهد ، ضمن اينكه از ايجاد يا تغيير ساير پايگاه هاي داده ديگر روي سرور مجازي شما جلوگيري مي كند.
پس از اين ، از پوسته MySQL خارج شويد:
⦁ Mysql> exit

اكنون مي توانيد با ورود دوباره به كنسول MySQL ، اين بار با استفاده از اعتبارات كاربر سفارشي ، آزمايش كنيد كه آيا كاربر جديد داراي مجوزهاي مناسب است:
⦁ $ mysql -u travellist_user -p

در اين دستور ، به پرچم -p دقت كنيد ، كه پسورد استفاده شده هنگام ايجاد كاربر travel_userرا از شما ميخواهد. پس از ورود به كنسول MySQL ، تأييد كنيد كه به بانك اطلاعاتي Travellist دسترسي داريد:
⦁ Mysql> SHOW DATABASES;

خروجي زير را به شما مي دهد:
Output
+——————–+
| Database |
+——————–+
| information_schema |
| travellist |
+——————–+
2 rows in set (0.01 sec)

در مرحله بعدي ، يك جدول با نام places در بانك اطلاعاتي Travellist ايجاد كنيد. از كنسول MySQL عبارت زير را اجرا كنيد:
⦁ Mysql> CREATE TABLE travellist.places (

⦁ Mysql> id INT AUTO_INCREMENT,

⦁ Mysql> name VARCHAR(255),

⦁ Mysql> visited BOOLEAN,

⦁ Mysql> PRIMARY KEY(id)

⦁ Mysql> );

اكنون ، جدول places را با داده هاي نمونه اي پر كنيد:
⦁ Mysql> INSERT INTO travellist.places (name, visited)

⦁ Mysql>VALUES (“Tokyo”, false),

⦁ Mysql> (“Budapest”, true),

⦁ Mysql> (“Nairobi”, false),

⦁ Mysql> (“Berlin”, true),

⦁ Mysql> (“Lisbon”, true),

⦁ Mysql> (“Denver”, false),

⦁ Mysql> (“Moscow”, false),

⦁ Mysql> (“Olso”, false),

⦁ Mysql> (“Rio”, true),

⦁ Mysql> (“Cincinnati”, false),

⦁ Mysql> (“Helsinki”, false);


براي اينكه تأييد كنيد داده ها با موفقيت در جدول شما ذخيره شده اند ، اين دستور اجرا كنيد:
⦁ Mysql> SELECT * FROM travellist.places;

خروجي مشابه اين را مشاهده خواهيد كرد:
Output
+—-+———–+———+
| id | name | visited |
+—-+———–+———+
| 1 | Tokyo | 0 |
| 2 | Budapest | 1 |
| 3 | Nairobi | 0 |
| 4 | Berlin | 1 |
| 5 | Lisbon | 1 |
| 6 | Denver | 0 |
| 7 | Moscow | 0 |
| 8 | Oslo | 0 |
| 9 | Rio | 1 |
| 10 | Cincinnati| 0 |
| 11 | Helsinki | 0 |
+—-+———–+———+
11 rows in set (0.00 sec)

پس از تأييد اينكه داده هاي معتبري در جدول آزمون خود داريد ، مي توانيد از كنسول MySQL خارج شويد:
⦁ Mysql> exit

اكنون براي ايجاد برنامه و پيكربندي آن براي اتصال به پايگاه داده جديد آماده هستيد.
مرحله 3 – ايجاد يك برنامه جديد Laravel
اكنون با استفاده از دستور composer create-project، يك برنامه جديد Laravel ايجاد خواهيد كرد. اين دستور Composer معمولاً براي راه اندازي برنامه هاي جديد بر اساس چارچوب هاي موجود و سيستم هاي مديريت محتوا استفاده مي شود.
در طول اين راهنما ، از Travellist به عنوان يك برنامه نمونه استفاده خواهيم كرد ، اما ميتوانيد اين را به چيز ديگري تغيير دهيد. برنامه travellist ليستي از مكانهاي دريافتي از يك سرور مجازي محلي MySQL را نشان مي دهد ، كه قصد دارد پيكربندي اساسي Laravel را توصيف كند و تأييد كند كه شما قادر به اتصال به پايگاه داده هستيد.
ابتدا به ديركتوري هوم كاربر خود برويد:
⦁ $ cd ~

دستور زير يك ديركتوري جديد Travellist را كه شامل يك برنامه مختصر Laravel است بر اساس تنظيمات پيش فرض ايجاد مي كند:
⦁ $ composer create-project –prefer-dist laravel/laravel travellist

خروجي مشابه اين را مشاهده خواهيد كرد:
… Output
Installing laravel/laravel (v5.8.17)
– Installing laravel/laravel (v5.8.17): Downloading (100%)
Created project in travellist
> @php -r “file_exists(‘.env’) || copy(‘.env.example’, ‘.env’);”
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 80 installs, 0 updates, 0 removals
– Installing symfony/polyfill-ctype (v1.11.0): Downloading (100%)
– Installing phpoption/phpoption (1.5.0): Downloading (100%)
– Installing vlucas/phpdotenv (v3.4.0): Downloading (100%)
– Installing symfony/css-selector (v4.3.2): Downloading (100%)

پس از اتمام نصب ، به ديركتوري برنامه دسترسي پيدا كنيد و دستور artisan Laravel را اجرا كنيد تا تأييد كنيد كه همه مؤلفه ها با موفقيت نصب شده اند:
⦁ $ cd travellist

⦁ $ php artisan
خروجي مشابه اين را مشاهده خواهيد كرد:
Output
Laravel Framework 7.11.0

Usage:
command [options] [arguments]

Options:
-h, –help Display this help message
-q, –quiet Do not output any message
-V, –version Display this application version
–ansi Force ANSI output
–no-ansi Disable ANSI output
-n, –no-interaction Do not ask any interactive question
–env[=ENV] The environment the command should run under
-v|vv|vvv, –verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

اين خروجي تأييد مي كند كه فايل هاي برنامه در دسترس هستند و ابزارهاي خط فرمان Laravel همانطور كه انتظار مي رود كار مي كنند. با اين حال ، هنوز نياز به پيكربندي برنامه براي تنظيم پايگاه داده و چند جزئيات ديگر داريم.
مرحله 4 – پيكربندي Laravel
فايل هاي پيكربندي Laravel در پوشه اي به نام config ، در ديركتوري اصلي برنامه قرار دارند. علاوه بر اين ، وقتي Laravel را با Composer نصب مي كنيد ، يك فايل محيط ايجاد مي كند. اين فايل شامل تنظيمات خاص براي محيط فعلي است كه برنامه در آن اجرا مي شود و بر مقادير تعيين شده در فايل هاي پيكربندي منظم واقع در ديركتوري پيكربندي تقدم مي يابد. هر نصب بر روي يك محيط جديد نياز به يك فايل متناسب با محيط دارد تا مواردي از قبيل تنظيمات اتصال بانك اطلاعاتي ، گزينه هاي اشكال زدايي ، URL برنامه را در ميان موارد ديگر كه ممكن است بسته به محيطي كه برنامه اجرا ميشود متفاوت باشد، تعريف كند.
هشدار: فايل پيكربندي محيط شامل اطلاعات حساس در مورد سرور مجازي، از جمله اطلاعات پايگاه داده و كليدهاي امنيتي است. به همين دليل ، شما هرگز نبايد اين فايل را به صورت عمومي به اشتراك بگذاريد.
اكنون براي سفارشي كردن گزينه هاي پيكربندي محيط برنامه فعلي ، فايل .env را ويرايش خواهيم كرد.
فايل .env را با استفاده از ويرايشگر خط فرمان خود انتخاب كنيد. در اينجا ما از nano استفاده خواهيم كرد:
⦁ $ nano .env

حتي اگر متغيرهاي پيكربندي زيادي در اين فايل وجود داشته باشد ، لازم نيست اكنون همه آنها را تنظيم كنيد. ليست زير شامل نماي كلي از متغيرهايي است كه نياز به توجه فوري دارند:
⦁ APP_NAME: نام برنامه ، كه براي اعلان ها و پيام ها استفاده مي شود.
⦁ APP_ENV: محيط برنامه فعلي.
⦁ APP_KEY: براي توليد salts  و hashes استفاده ميشود، اين كليد منحصر به فرد هنگام نصب Laravel از طريق Composer به طور خودكار ايجاد مي شود ، بنابراين نيازي به تغيير آن نيست.
⦁ APP_DEBUG: اين كه آيا اطلاعات اشكال زدايي را در سمت كلاينت نشان دهد يا خير.
⦁ APP_URL: URL پايه براي برنامه ، كه براي توليد لينك هاي برنامه كاربردي استفاده مي شود.
⦁ DB_DATABASE: نام بانك اطلاعاتي
⦁ DB_USERNAME: نام كاربري براي اتصال به بانك اطلاعاتي.
⦁ DB_PASSWORD: رمز عبور براي اتصال به پايگاه داده.
به طور پيش فرض ، اين مقادير براي يك محيط توسعه محلي كه از Homestead استفاده مي كند ، (يك جعبه بسته بندي شده Vagrant ارائه شده توسط Laravel ) تنظيم شده است. ما اين مقادير را تغيير خواهيم داد تا منعكس كننده تنظيمات محيط فعلي برنامه مثال ما باشد.
در صورت نصب Laravel در يك محيط توسعه يا آزمايش ، مي توانيد گزينه APP_DEBUG را فعال كنيد زيرا اين كار هنگام آزمايش برنامه از يك مرورگر ، اطلاعات اشكال زدايي مهم را به شما مي دهد. متغير APP_ENV بايد در اين حالت روي development  يا testing  تنظيم شود.
در صورت نصب Laravel در يك محيط توليد ، بايد گزينه APP_DEBUG را غيرفعال كنيد ، زيرا اطلاعات حساس كاربر نهايي را درباره برنامه شما نشان مي دهد. APP_ENV در اين حالت بايد روي production تنظيم شود.
فايل هاي .env زير برنامه نمونه ما را براي development  تنظيم مي كند:
توجه: متغير APP_KEY حاوي يك كليد منحصر به فرد است كه هنگام نصب Laravel از طريق Composer به صورت خودكار ايجاد شد. نيازي نيست اين مقدار را تغيير دهيد. اگر مي خواهيد يك كليد ايمن جديد توليد كنيد ، مي توانيد از فرمان php artisan key:generate استفاده كنيد.
/var/www/travellist/.env
APP_NAME=TravelList
APP_ENV=development
APP_KEY=APPLICATION_UNIQUE_KEY_DONT_COPY
APP_DEBUG=true
APP_URL=http://domain_or_IP

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=travellist
DB_USERNAME=travellist_user
DB_PASSWORD=password


متغيرهاي خود را بر اين اساس تنظيم كنيد. وقتي ويرايش به پايان رسيد ، فايل را ذخيره كنيد و ببنديد تا تغييرات خود را حفظ كنيد. اگر از nano استفاده مي كنيد ، مي توانيد اين كار را با CTRL + X انجام دهيد ، سپس Y و Enter انجام دهيد.
برنامه Laravel شما اكنون تنظيم شده است ، اما ما هنوز بايد سرور مجازي وب را پيكربندي كنيم تا بتوانيم از يك مرورگر به آن دسترسي پيدا كنيم. در مرحله بعدي ، Nginx را براي ارائه برنامه Laravel شما پيكربندي مي كنيم.
مرحله 5 – راه اندازي Nginx
Laravel را در يك پوشه محلي در ديركتوري اصلي كاربر از راه دور شما نصب كرده ايم ، و اگرچه اين كار براي محيط هاي محلي توسعه مناسب است ، يك سرويس توصيه شده براي سرور مجازي هاي وب نيست كه براي اينترنت عمومي باز باشد. پوشه برنامه را به / var / www كه مكان معمول برنامه هاي وب است كه در Nginx در حال اجرا هستند منتقل مي كنيم.
ابتدا ، از دستور mv براي انتقال پوشه برنامه با تمام محتويات آن به / var / www / travellist استفاده كنيد:
⦁ $ sudo mv ~/travellist /var/www/travellist

حال بايد به كاربر سرور مجازي وب به پوشه هاي storage  و cache  دسترسي دهيم ، يعني جايي كه Laravel فايل هاي توليد شده توسط برنامه را ذخيره مي كند:
⦁ $ sudo chown -R www-data.www-data /var/www/travellist/storage

⦁ $ sudo chown -R www-data.www-data /var/www/travellist/bootstrap/cache

اكنون فايل هاي برنامه به ترتيب هستند ، اما براي ارائه محتوا هنوز بايد پيكربندي Nginx را انجام دهيم. براي اين كار ، يك فايل پيكربندي هاست مجازي جديد را در /etc/nginx/sites-available ايجاد خواهيم كرد:
⦁ $ sudo nano /etc/nginx/sites-available/travellist

فايل پيكربندي زير شامل تنظيمات پيشنهادي براي برنامه هاي Laravel در Nginx است:
/etc/nginx/sites-available/travellist
server {
listen 80;
server_name server_domain_or_IP;
root /var/www/travellist/public;

add_header X-Frame-Options “SAMEORIGIN”;
add_header X-XSS-Protection “1; mode=block”;
add_header X-Content-Type-Options “nosniff”;

index index.html index.htm index.php;

charset utf-8;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }

error_page 404 /index.php;

location ~ .php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /.(?!well-known).* {
deny all;
}
}

اين محتوا را در فايل / etc / nginx / sites-available / travellist خود كپي كنيد و در صورت لزوم مقادير هايلايت شده را تنظيم كنيد تا با پيكربندي شما مطابقت داشته باشد. پس از پايان ويرايش ، فايل را ذخيره كنيد و ببنديد.
براي فعال كردن فايل پيكربندي ميزبان مجازي جديد ، پيوندي نمادين به travellist در sites-enabled بدهيد:
⦁ $ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/

توجه: اگر فايل ميزبان مجازي ديگري داريد كه قبلاً براي همان server_name استفاده شده در ميزبان مجازي travellist پيكربندي شده است ، ممكن است نياز به غيرفعال كردن تنظيمات قديمي با حذف پيوند نمادين مربوطه در داخل /etc/nginx/sites-enabled/ داشته باشيد.
براي تأييد اينكه پيكربندي شامل هيچ خطاي نحوي نيست ، مي توانيد از اين دستور استفاده كنيد:
⦁ $ 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

اكنون به مرورگر خود برويد و با استفاده از نام دامنه يا آدرس IP سرور مجازي ، مطابق با دستور server_name در فايل تنظيمات خود ، به مرورگر خود برويد و به برنامه دسترسي پيدا كنيد:
http://server_domain_or_IP
صفحه اي مانند اين را مشاهده خواهيد كرد:

اين صفحه تأييد مي كند كه سرور مجازي Nginx شما به درستي پيكربندي شده است تا Laravel را ارائه كند. از اين مرحله ، مي توانيد برنامه خود را روي اسكلت ارائه شده توسط نصب پيش فرض شروع كنيد.
در مرحله بعدي ، مسير اصلي برنامه را براي جستجوي داده ها در پايگاه داده با استفاده از نماي DB Laravel اصلاح خواهيم كرد.
مرحله 6 – شخصي سازي صفحه اصلي
با فرض اينكه شما تاكنون تمامي مراحل اين راهنما را رعايت كرده ايد ، بايد يك برنامه كاربردي Laravel و يك جدول بانك اطلاعاتي به نام palces داشته باشيد كه حاوي برخي از داده هاي نمونه است.
اكنون مسير اصلي برنامه را براي جستجوي پايگاه داده ويرايش مي كنيم و محتويات را به نماي برنامه باز مي گردانيم.
فايل مسير اصلي ، يعني routes/web.php را باز كنيد:
⦁ $ nano routes/web.php

اين فايل به طور پيش فرض با محتواي زير ارائه مي شود:
routes/web.php

/*
|————————————————————————–
| Web Routes
|————————————————————————–
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the “web” middleware group. Now create something great!
|
*/

Route::get(‘/’, function () {
return view(‘welcome’);
});

مسيرها با استفاده از روش Route::get استاتيك تعريف مي شوند كه يك مسير و يك عملكرد برگشتي را به عنوان آرگومان دريافت مي كند.
كد زير جايگزين عملكرد برگشتي مسير اصلي است. با استفاده از پرچم visited  براي فيلتر نتايج ، 2 جستار به ديتابيس فرستاده ميشود. اين كار، نتايج را به نمايي به نام travellist باز مي گرداند ، كه مي خواهيم بعدا آن را ايجاد كنيم. اين محتوا را در فايل routes/web.php خود كپي كنيد و كدي را كه قبلاً در آنجا قرار دارد جايگزين كنيد:
routes/web.php

use IlluminateSupportFacadesDB;

Route::get(‘/’, function () {
$visited = DB::select(‘select * from places where visited = ?’, [1]);
$togo = DB::select(‘select * from places where visited = ?’, [0]);

return view(‘travellist’, [‘visited’ => $visited, ‘togo’ => $togo ] );
});

پس از پايان ويرايش ، فايل را ذخيره كنيد و ببنديد. اكنون نمايي را ايجاد مي كنيم كه نتايج ديتابيس را به كاربر ارائه مي دهد. يك فايل نماي جديد در داخل resources/views ايجاد كنيد:
⦁ $ nano resources/views/travellist.blade.php

الگوي زير بر اساس متغيرهاي visited  و togo ، دو ليست از مكان ها ايجاد مي كند. اين محتوا را در فايل نماي جديد خود كپي كنيد:
resources/views/travellist/blade.php


Travel List


My Travel Bucket List


Places I’d Like to Visit



    @foreach ($togo as $newplace)
  • {{ $newplace->name }}

  • @endforeach

Places I’ve Already Been To



    @foreach ($visited as $place)
  • {{ $place->name }}

  • @endforeach


پس از پايان كار ، فايل را ذخيره كنيد و ببنديد. اكنون به مرورگر خود برويد و برنامه را مجدد لود كنيد. صفحه اي را به اين شكل مشاهده خواهيد كرد:

اكنون يك برنامه كاربردي Laravel در حال دريافت محتوا از يك پايگاه داده MySQL داريد.
نتيجه
در اين آموزش ، يك برنامه جديد Laravel را روي پشته LEMP (Linux ، Nginx ، MySQL و PHP) تنظيم كرده ايد كه روي يك سرور مجازي اوبونتو 20.04 اجرا مي شود. همچنين مسير پيش فرض خود را براي جستجوي محتواي پايگاه داده تنظيم كرده ايد و نتايج را در نماي سفارشي به نمايش مي گذاريد.
از اينجا ، مي توانيد مسيرها و نماهاي جديدي را براي هر صفحه ديگري كه برنامه شما به آن نياز دارد ايجاد كنيد. براي اطلاعات بيشتر در مورد مسيرها ، نماها و پشتيباني از پايگاه داده ، مطالب رسمي Laravel را بررسي كنيد. اگر به استقرار توليد مشغول هستيد ، بايد بخش بهينه سازي را نيز به چند روش مختلف بررسي كنيد تا بتوانيد عملكرد برنامه خود را بهبود بخشيد.

 

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

 

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

 

برچسب‌ها:LaravelMySQL 8NginxtravellistXML

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

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

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

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

⦁ $ sudo -H pip3 install virtualenv

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

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

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

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

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

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

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

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

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

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

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

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

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

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

where $x = 2$

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

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

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

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

 

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

 

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

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

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

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

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

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

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

 

كلمات كليدي خريد سرور

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

 

برچسب‌ها:HaskellJuliaJupyter notebooknotebook

نصب Jitsi Meet در Debian 10

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

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

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

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

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

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

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

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

⦁ $ sudo ufw allow 443/tcp

⦁ $ sudo ufw allow 4443/tcp

⦁ $ sudo ufw allow 10000/udp

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

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

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

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

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

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

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

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

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

⦁ $ sudo apt install jitsi-meet

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

توجه: شما مكان نما را از قسمت نام هاست حركت مي دهيد تا دكمه را با كليد TAB هايلايت كنيد. هنگامي كه هايلايت شد براي ارسال نام هاست ، ENTER را فشار دهيد.

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

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

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

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

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

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

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

authentication = “anonymous”

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

authentication = “internal_plain”

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

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

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

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

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

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

anonymousdomain: ‘guest.your_domain’,

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

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

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

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

⦁ $ sudo systemctl restart jicofo.service

⦁ $ sudo systemctl restart jitsi-videobridge2.service

⦁ $ sudo systemctl restart nginx

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

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

 

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

 

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

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

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

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

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

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

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

 

كلمات كليدي خريد سرور

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

 

برچسب‌ها:etchostnamectlJitsi Meetskype

نصب و پيكربندي Nextcloud در اوبونتو 20.04

Nextcloud ، يك انشعاب از ownCloud ، يك سرور مجازي اشتراك فايل است كه به شما امكان مي دهد محتواي شخصي خود را مانند اسناد و تصاوير را، بسيار شبيه به Dropbox ، در يك مكان متمركز ذخيره كنيد. تفاوتش با Nextcloud در اين است كه تمام ويژگي هاي آن منبع باز هستند. همچنين كنترل و امنيت داده هاي حساس شما را به شما باز مي گرداند ، بنابراين استفاده از سرويس ميزباني ابري شخص ثالث را از بين مي برد.
در اين آموزش ، يك نمونه Nextcloud را روي يك سرور مجازي Ubuntu 20.04 نصب و پيكربندي خواهيم كرد.
پيش نيازها
براي انجام مراحل در اين راهنما به موارد زير نياز داريد:
⦁ كاربر غير ريشه ** sudo و فايروال كه روي سرور مجازي شما تنظيم شده باشند: مي توانيد با دنبال كردن راهنماي اوليه سرور مجازي اوبونتو 20.04 يك كاربر با امتيازات sudo ايجاد كرده و يك فايروال اساسي را تنظيم كنيد.
⦁ (اختياري) يك نام دامنه كه به سرور مجازي شما اشاره كند: ما با TLS / SSL اتصالات را براي نصب Nextcloud ايمن مي كنيم. اگر سرور مجازي شما داراي نام دامنه باشد ، Nextcloud مي تواند گواهي SSL رايگان و قابل اعتماد را از  ⦁ Let’s Encrypt رمزگذاري و مديريت كند. در غير اين صورت ، Nextcloud مي تواند گواهي SSL خود امضا شده را تنظيم كند كه بتواند اتصالات را رمزگذاري كند ، اما به طور پيش فرض در مرورگرهاي وب قابل اعتماد نخواهد بود.
پس از اتمام مراحل فوق ، به ادامه نحوه يادگيري راه اندازي Nextcloud در سرور مجازي خود بپردازيد.
مرحله 1 – نصب Nextcloud
ما با استفاده از سيستم بسته بندي snap، Nextcloud را نصب خواهيم كرد. اين سيستم بسته بندي ، كه به طور پيش فرض در Ubuntu 20.04 موجود است ، به سازمان ها امكان مي دهد تا نرم افزار را به همراه كليه متعلقات و پيكربندي هاي مربوطه ، به يك واحد خودشمول با به روز رساني هاي خودكار منتقل كنند. اين بدان معني است كه به جاي نصب و پيكربندي يك سرور مجازي وب و پايگاه داده و سپس پيكربندي برنامه Nextcloud براي اجراي آن ، مي توانيم بسته snap را كه به طور خودكار سيستم هاي زيرين را كنترل مي كند نصب كنيم.
براي دانلود پكيج snap Nextcloud و نصب آن بر روي سيستم ، تايپ كنيد:
⦁ $ sudo snap install nextcloud

بسته Nextcloud روي سرور مجازي شما دانلود و نصب مي شود. شما مي توانيد با ليست كردن تغييراتي كه مربوط به snap است ، تاييد كنيد كه مراحل نصب موفقيت آميز بوده است:
⦁ $ snap changes nextcloud

Output
ID Status Spawn Ready Summary
4 Done today at 16:12 UTC today at 16:12 UTC Install “nextcloud” snap

وضعيت و خلاصه نشان مي دهد كه نصب بدون هيچ مشكلي انجام شده است.
دريافت اطلاعات اضافي درباره Snap Nextcloud
اگر اطلاعات بيشتري درباره nextcloud snap مي خواهيد ، چند دستور وجود دارد كه مي توانند مفيد باشند.
دستور snap info مي تواند توضيحات ، دستورات مديريت Nextcloud موجود و همچنين نسخه نصب شده و كانال snap در حال پيگيري را به شما نشان دهد:
⦁ $ snap info nextcloud

snap ​​مي تواند اتصالاتي را كه پشتيباني مي كنند تعريف كند ، كه از يك سوراخ و دو شاخه تشكيل شده است كه در صورت اتصال به يكديگر ، دسترسي سريع به قابليت هاي خاص يا سطح دسترسي را به شما مي دهد. به عنوان مثال ، snap هايي كه بايد به عنوان كلاينت شبكه عمل كنند بايد اتصال به شبكه را داشته باشند. براي ديدن اينكه snap كدام اتصالات را تعريف مي كند ، تايپ كنيد:
⦁ $ snap connections nextcloud

Output
Interface Plug Slot Notes
network nextcloud:network :network –
network-bind nextcloud:network-bind :network-bind –
removable-media nextcloud:removable-media – –

براي اطلاع از كليه سرويس ها و برنامه هاي خاصي كه اين snap ارائه مي دهد ، مي توانيد با تايپ كردن دستور زير به فايل تعريف snap نگاهي بيندازيد:
⦁ $ cat /snap/nextcloud/current/meta/snap.yaml

در صورت نياز به كمك به اشكال زدايي ، اين امكان را به شما مي دهد تا مؤلفه هاي جداگانه موجود در آن را ببينيد.
مرحله 2 – پيكربندي يك حساب كاربري
چند روش مختلف براي تنظيم پيكربندي Snap Nextcloud وجود دارد. در اين راهنما ، به جاي ايجاد يك كاربر اداري از طريق رابط وب ، يك كاربر را در خط فرمان ايجاد خواهيم كرد تا از يك پنجره كوچك جلوگيري كنيم كه در آن صفحه ثبت نام ادمين براي هر كسي كه از آدرس IP سرور مجازي يا نام دامنه شما بازديد كند ، قابل دسترسي باشد.
براي پيكربندي پيوند Nextcloud با يك حساب ادمين جديد ، از دستور nextcloud.manual-install استفاده كنيد. به عنوان آرگومان بايد نام كاربري و رمزعبور را وارد كنيد:
⦁ $ sudo nextcloud.manual-install sammy password

پيام زير نشان مي دهد كه Nextcloud به درستي پيكربندي شده است:
Output
Nextcloud was successfully installed

اكنون كه Nextcloud نصب شده است ، بايد دامنه هاي مورد اعتماد را تنظيم كنيم تا Nextcloud با استفاده از نام دامنه يا آدرس IP سرور مجازي به درخواست ها پاسخ دهد.
مرحله 3 – تنظيم دامنه هاي قابل اعتماد
هنگام نصب از خط فرمان ، Nextcloud نام هاي ميزبان را محدود مي كند كه نمونه به آن پاسخ مي دهد. به طور پيش فرض ، اين سرويس فقط به درخواست هاي ارسال شده به نام ميزبان “localhost” پاسخ مي دهد. ما از طريق نام دامنه سرور مجازي يا آدرس IP سرور مجازي به Nextcloud دسترسي خواهيم داشت ، بنابراين براي پذيرش اين نوع درخواست ها ، بايد اين تنظيم را مشخص كنيم.
مي توانيد تنظيمات فعلي را با جستجوي مقدار آرايه trusted_domains مشاهده كنيد:
⦁ $ sudo nextcloud.occ config:system:get trusted_domains

Output
localhost

در حال حاضر ، فقط localhost به عنوان اولين مقدار در آرايه موجود است. مي توانيم با تايپ كردن دستور زير، ورودي براي نام دامنه يا آدرس IP سرور مجازي خود را اضافه كنيم:
⦁ $ sudo nextcloud.occ config:system:set trusted_domains 1 –value=example.com

Output
System config value trusted_domains => 1 set to string example.com

اگر مجدداً دامنه هاي مورد اعتماد را جستجو كنيم ، خواهيم ديد كه اكنون دو ورودي داريم:
⦁ $ sudo nextcloud.occ config:system:get trusted_domains

Output
localhost
example.com

اگر مي خواهيد يك روش ديگر براي دستيابي به مثال Nextcloud اضافه كنيد ، مي توانيد با اجراي مجدد دستور config:system:set با يك شماره ايندكس افزايشي (“1” در دستور اول) و تنظيم –value دامنه ها يا آدرس هاي ديگري را اضافه كنيد .
مرحله 4 – ايمن سازي رابط وب Nextcloud با SSL
قبل از شروع استفاده از Nextcloud ، بايد رابط وب را ايمن كنيم.
اگر يك نام دامنه در ارتباط با سرور مجازي Nextcloud خود داريد ، nextcloud snap مي تواند به شما در دستيابي و پيكربندي يك گواهينامه SSL قابل اعتماد از Let’s Encrypt كمك كند. اگر سرور مجازي Nextcloud شما نام دامنه نداشته باشد ، Nextcloud مي تواند گواهي خود امضا شده را تنظيم كند كه ترافيك وب شما را رمزگذاري مي كند اما به طور خودكار توسط مرورگر وب شما قابل اعتماد نخواهد بود.
با اين حساب ، بخش زير را كه با سناريوي شما مطابقت دارد ، دنبال كنيد.
گزينه 1: تنظيم SSL با Let’s Encrypt
اگر يك نام دامنه در ارتباط با سرور مجازي Nextcloud خود داريد ، بهترين گزينه براي تأمين امنيت رابط وب شما ، دريافت گواهي Let’s Encrypt SSL است.
با باز كردن پورتها در فايروال شروع كنيد كه Let’s Encryptبراي تأييد مالكيت دامنه استفاده مي كند. اين باعث مي شود صفحه ورود Nextcloud به صورت عمومي قابل دسترسي باشد ، اما از آنجا كه ما قبلاً يك حساب ادمين تنظيم كرده ايم ، هيچ كس نمي تواند نصب را بدزدد:
⦁ $ sudo ufw allow 80,443/tcp

در مرحله بعد با تايپ دستور ز يك گواهي Let’s Encrypt درخواست كنيد:
⦁ $ sudo nextcloud.enable-https lets-encrypt

ابتدا از شما سؤال خواهد شد كه آيا سرور مجازي شما شرايط لازم را براي درخواست گواهينامه از سرويس Let’s Encrypt را دارد:
Output
In order for Let’s Encrypt to verify that you actually own the
domain(s) for which you’re requesting a certificate, there are a
number of requirements of which you need to be aware:

1. In order to register with the Let’s Encrypt ACME server, you must
agree to the currently-in-effect Subscriber Agreement located
here:

https://letsencrypt.org/repository/

By continuing to use this tool you agree to these terms. Please
cancel now if otherwise.

2. You must have the domain name(s) for which you want certificates
pointing at the external IP address of this machine.

3. Both ports 80 and 443 on the external IP address of this machine
must point to this machine (e.g. port forwarding might need to be
setup on your router).

Have you met these requirements? (y/n)

براي ادامه y را تايپ كنيد.
در مرحله بعد ، از شما خواسته مي شود تا يك آدرس ايميل براي استفاده در عمليات بازيابي ارائه دهيد:
Output
Please enter an email address (for urgent notices or key recovery):

براي ادامه ايميل خود را وارد كرده و Enter را فشار دهيد.
در آخر ، نام دامنه مرتبط با سرور مجازي Nextcloud خود را وارد كنيد:
Output
Please enter your domain name(s) (space-separated): example.com

از گواهي Let’s Encrypt شما درخواست مي شود و به شرط آنكه همه چيز خوب پيش برود ، نمونه داخلي Apache دوباره راه اندازي مي شود تا بلافاصله SSL را پياده سازي كنيد:
Output
Attempting to obtain certificates… done
Restarting apache… done

اكنون مي توانيد به مرحله بعد پيش برويد تا براي اولين بار وارد Nextcloud شويد.
گزينه 2: تنظيم SSL با گواهي خود امضا شده
اگر سرور مجازي Nextcloud شما نام دامنه ندارد ، مي توانيد با ايجاد يك گواهي SSL خود امضا شده رابط وب را ايمن كنيد. اين گواهينامه امكان دسترسي به رابط وب از طريق اتصال رمزگذاري شده را مي دهد ، اما نمي تواند هويت سرور مجازي شما را تأييد كند ، بنابراين مرورگر شما به احتمال زياد يك هشدار را نمايش مي دهد.
براي توليد يك گواهي خود امضا شده و پيكربندي Nextcloud براي استفاده از آن ، اين دستور تايپ كنيد:
⦁ $ sudo nextcloud.enable-https self-signed

Output
Generating key and self-signed certificate… done
Restarting apache… done

خروجي فوق نشان مي دهد كه Nextcloud يك گواهي خود امضا شده توليد و فعال كرده است.
اكنون كه رابط ايمن است ، پورت هاي وب را در فايروال باز كنيد تا به رابط وب دسترسي پيدا كنيد:
⦁ $ sudo ufw allow 80,443/tcp

اكنون براي اولين بار آماده ورود به Nextcloud هستيد.
مرحله 5 – ورود به رابط وب Nextcloud
اكنون كه Nextcloud پيكربندي شد ، از نام دامنه يا آدرس IP سرور مجازي خود در مرورگر وب خود بازديد كنيد:
https://example.com

توجه: اگر يك گواهي SSL خود امضا شده تنظيم كرده ايد ، مرورگر شما مي تواند هشداري را در مورد عدم امنيت اتصال نشان دهد زيرا گواهي سرور مجازي توسط يك مجوز معتبر شناخته شده امضا نشده است. اين براي گواهي هاي خود امضا شده پيش بيني مي شود ، بنابراين براي رفتن به سايت ، بر روي هشدار كليك كنيد.

از آنجا كه قبلاً يك حساب ادمين را از خط فرمان پيكربندي كرده ايد ، به صفحه ورود Nextcloud منتقل مي شويد. اعتباراتي را كه براي كاربر ادمين ايجاد كرده ايد وارد كنيد:

براي ورود به رابط وب Nextcloud روي دكمه Log in كليك كنيد.
اولين باري كه وارد مي شويد ، پنجره اي با متن معرفي و پيوندهايي با كلاينت هاي مختلف Nextcloud نمايش داده مي شود كه مي توانند براي دسترسي به نمونه Nextcloud شما استفاده كنند:

براي دانلود هر كلاينتي كه به آن علاقه داريد ، روي دانلود كليك كنيد يا با كليك بر روي X در گوشه بالا سمت راست ، از پنجره خارج شويد. به رابط اصلي Nextcloud منتقل خواهيد شد ، جايي كه مي توانيد شروع به آپلود و مديريت فايل ها كنيد:

اكنون نصب شما كامل و ايمن است. براي آشنايي بيشتر با ويژگي ها و كارايي سيستم جديد خود ، مي توانيد در رابط كاربري خود به راحتي جستجو كنيد.
نتيجه
Nextcloud مي تواند قابليت هاي سرويس هاي محبوب ذخيره سازي ابري شخص ثالث را كپي كند. محتوا مي تواند بين كاربران يا به صورت خارجي با URL هاي عمومي به اشتراك گذاشته شود. مزيت Nextcloud اين است كه اطلاعات در مكاني كه شما كنترل مي كنيد بصورت ايمن ذخيره مي شوند.
براي عملكردهاي بيشتر ، به Nextcloud’s app store مراجعه كنيد ، جايي كه مي توانيد افزونه هايي را براي گسترش قابليت هاي سرويس نصب كنيد.

 

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

 

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

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

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

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

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

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

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

 

كلمات كليدي خريد سرور

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

 

برچسب‌ها:DropboxNextcloudownCloud

نصب و پيكربندي Ansible در اوبونتو 20.04

سيستم هاي مديريت پيكربندي به منظور ساده سازي فرايند كنترل تعداد زيادي سرور مجازي ، براي مديران و تيم هاي عملياتي طراحي شده اند. آنها به شما اجازه مي دهند بسياري از سيستم هاي مختلف را به صورت خودكار از يك مكان مركزي كنترل كنيد.
در حالي كه بسياري از ابزارهاي مديريت پيكربندي محبوب براي سيستمهاي لينوكس مانند Chef و Puppet در دسترس هستند ، اينها معمولاً پيچيده تر از چيزي هستند كه افراد مي خواهند يا نياز دارند. Ansible يك گزينه عالي براي اين منظور است زيرا معماري ساده اي را ارائه مي دهد كه نيازي به نصب نرم افزار ويژه روي nodes ندارد ، از SSH براي انجام كارهاي اتوماسيون و فايل هاي YAML براي تعريف جزئيات تهيه استفاده مي كند.
در اين راهنما ، به چگونگي نصب Ansible در سرور مجازي Ubuntu 20.04 ميپردازيم و در مورد اصول استفاده از اين نرم افزار به صورت جزيي ميپردازيم. براي دريافت اطلاعات سطح بالاتر به مقاله مقدمه اي بر مديريت پيكربندي با Ansible مراجعه كنيد
پيش نيازها
براي دنبال كردن اين آموزش ، به موارد زير نياز داريد:
يك node كنترل Ansible: node كنترل Ansible ماشيني است كه ما براي اتصال و كنترل هاست هاي Ansible روي SSH از آن استفاده خواهيم كرد. node كنترل Ansible شما يا مي تواند دستگاه محلي شما باشد يا يك سرور مجازي اختصاص داده شده براي اجراي Ansible ، اگرچه اين راهنما فرض مي كند كه node كنترل شما يك سيستم اوبونتو 20.04 است. اطمينان حاصل كنيد كه node كنترل داراي موارد زير است:
o يك كاربر غير ريشه با امتيازات sudo. براي تنظيم اين گزينه ، مي توانيد مراحل 2 و 3 راهنماي اوليه راه اندازي سرور مجازي ما براي اوبونتو 20.04 را دنبال كنيد. با اين وجود ، لطفاً توجه داشته باشيد كه اگر از سرور مجازي راه دور به عنوان node كنترل Ansible خود استفاده مي كنيد ، بايد هر مرحله از اين راهنما را دنبال كنيد. با اين كار فايروال روي سرور مجازي با ufw پيكربندي شده و دسترسي خارجي به پروفايل كاربر غير ريشه شما امكان پذير خواهد شد ، كه هر دو به حفظ امنيت سرور مجازي از راه دور كمك مي كنند.
o صفحه كليد SSH مرتبط با اين كاربر. براي انجام اين كار ، مي توانيد مرحله 1 راهنماي ما درباره نحوه تنظيم كليدهاي SSH در اوبونتو 20.04 را دنبال كنيد.
يك يا چند هاست Ansible: هاست Ansible هر دستگاهي است كه node كنترل Ansible شما براي خودكار سازي آن تنظيم شده باشد. اين راهنما فرض مي كند كه هاست هاي Ansible شما سرور مجازي هاي Ubuntu 20.04 از راه دور هستند. اطمينان حاصل كنيد كه هر هاست Ansible داراي موارد زير است:
o كليد عمومي SSH node كنترل Ansible به authorized_keys كاربر سيستم اضافه شده باشد. اين كاربر مي تواند يا كاربر ريشه يا يك كاربر معمولي با امتيازات sudo باشد. براي تنظيم اين گزينه ، مي توانيد مرحله 2 نحوه تنظيم كليدهاي SSH را در اوبونتو 20.04 دنبال كنيد.
مرحله 1 – نصب Ansible
براي شروع استفاده از Ansible به عنوان ابزاري براي مديريت زيرساخت هاي سرور مجازي خود ، بايد نرم افزار Ansible را روي دستگاه نصب كنيد كه به عنوان node كنترل Ansible عمل خواهد كرد. براي آن از مخازن پيش فرض Ubuntu استفاده خواهيم كرد.
ابتدا ايندكس بسته سيستم خود را ريفرش كنيد :
$ sudo apt update

پس از اين بروزرساني ، مي توانيد نرم افزار Ansible را با دستور زير نصب كنيد:
$ sudo apt install ansible

node كنترلي Ansible شما اكنون تمامي نرم افزارهاي مورد نياز براي مديريت هاست شما را دارد. در مرحله بعد ، به نحوه اضافه كردن هاست ها به فايل موجودي node كنترل خواهيم پرداخت تا بتواند آنها را كنترل كند.
مرحله 2 – تنظيم فايل موجودي
فايل موجودي (Inventory) شامل اطلاعات مربوط به هاست هايي است كه با Ansible آنها را مديريت خواهيد كرد. شما مي توانيد از يك تا چند صد سرور مجازي در فايل موجودي خود داشته باشيد و هاست ها را مي توانيد در گروه ها و زير گروه ها سازماندهي كنيد. فايل موجودي نيز اغلب براي تنظيم متغيرهايي مورد استفاده قرار مي گيرد كه فقط براي هاست يا گروه هاي خاص معتبر باشند ، تا در playbookها و قالب ها مورد استفاده قرار گيرند. برخي از متغيرها همچنين مي توانند بر نحوه اجراي يك playbook اثر بگذارند ، مانند متغير ansible_python_interpreter كه به زودي مشاهده خواهيم كرد.
براي ويرايش محتواي موجودي پيش فرض Ansible ، فايل / etc / ansible / hosts را با استفاده از ويرايشگر متن مورد نظر خود، در node كنترل Ansible باز كنيد:
$ sudo nano /etc/ansible/hosts

توجه: برخي از نصب هاي Ansible فايل موجودي پيش فرض را ايجاد نمي كنند. اگر اين فايل در سيستم شما وجود ندارد ، مي توانيد يك فايل جديد را در / etc / ansible / hosts ايجاد كنيد يا يك مسير موجودي سفارشي را با استفاده از پارامتر -i هنگام اجراي دستورات و playbooks تهيه كنيد.

فايل موجودي پيش فرض موجود توسط نصب Ansible شامل تعدادي مثال است كه مي توانيد از آنها به عنوان مرجع براي تنظيم موجودي خود استفاده كنيد. مثال زير گروهي را به نام [servers] با سه سرور مجازي مختلف در آن تعريف مي كند كه هر يك توسط يك نام مستعار مشخص شده اند: server1 ،server2 و server3. حتما IP هاي هايلايت شده را با آدرس هاي IP هاست هاي Ansible جايگزين كنيد.
/etc/ansible/hosts
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113

[all:vars]
ansible_python_interpreter=/usr/bin/python3

زير گروهall: vars پارامتر هاست ansible_python_interpreter را تعيين مي كند كه براي همه هاست هاي موجود در اين موجودي معتبر خواهد بود. اين پارامتر اطمينان حاصل مي كند كه سرور راه دور به جاي / usr / bin / python (Python 2.7) از / usr / bin / python3 (Python 3) قابل اجرا استفاده مي كند كه در نسخه هاي اخير اوبونتو وجود ندارد.
پس از اتمام ، فايل را با فشار دادن CTRL + X سپس Y و ENTER ذخيره كرده و آن را ببنديد تا تغييرات خود را تأييد كنيد.
هر زمان كه مي خواهيد موجودي خود را بررسي كنيد ، مي توانيد اين دستور را اجرا كنيد:
$ ansible-inventory –list -y

خروجي شبيه به اين را خواهيد ديد ، اما زيرساخت سرور مجازي خود را مطابق با فايل موجودي خود تعريف مي كنيد:
Output
all:
children:
servers:
hosts:
server1:
ansible_host: 203.0.113.111
ansible_python_interpreter: /usr/bin/python3
server2:
ansible_host: 203.0.113.112
ansible_python_interpreter: /usr/bin/python3
server3:
ansible_host: 203.0.113.113
ansible_python_interpreter: /usr/bin/python3
ungrouped: {}

اكنون كه فايل موجودي خود را پيكربندي كرده ايد ، همه موارد لازم براي آزمايش اتصال به هاست هاي Ansible خود را داريد.
مرحله 3 – آزمايش اتصال
پس از تنظيم فايل موجودي براي شامل شدن سرور مجازي هاي خود، وقت آن است كه بررسي كنيم آيا Ansible قادر به اتصال به اين سرور مجازي ها و اجراي دستورات از طريق SSH است يا خير.
براي اين راهنما ، ما از حساب ريشه Ubuntu استفاده خواهيم كرد زيرا اين تنها حساب موجود به طور پيش فرض در سرور مجازي هاي تازه ايجاد شده است. اگر هاست هاي Ansible شما قبلاً يك كاربر sudo معمولي ايجاد كرده اند ، به شما توصيه مي شود كه به جاي ريشه از آن حساب استفاده كنيد.
براي مشخص كردن كاربر سيستم از راه دور مي توانيد از آرگومان -u استفاده كنيد. در صورت عدم ارائه ، Ansible سعي خواهد كرد كه به عنوان كاربر فعلي سيستم شما در node كنترل متصل شود.
از دستگاه محلي يا node كنترل Ansible خود اين دستور را اجرا كنيد:
$ ansible all -m ping -u root

اين دستورالعمل از ماژول ping داخلي Ansible براي انجام يك تست اتصال در همه nodes از موجودي پيش فرض شما ، به عنوان root استفاده مي كند. ماژول ping موارد زير را تست خواهد كرد:
آيا هاست ها در دسترس هستند.
آيا اعتبار SSH معتبري داريد؛
آيا هاست ها قادرند ماژول هاي Ansible را با استفاده از پايتون اجرا كنند.
بايد خروجي مشابه اين دريافت كنيد:
Output
server1 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
server2 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
server3 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}

اگر اين اولين بار است كه از طريق SSH به اين سرور مجازي ها وصل مي شويد ، از شما خواسته مي شود كه صحت هاست هايي را كه از طريق Ansible به آنها وصل مي شويد ، تأييد كنيد. وقتي از شما خواسته شد ، yes را تايپ كنيد و سپس براي تأييد ENTER را بزنيد.
هنگامي كه پاسخ “pong” را از هاست دريافت كرديد ، به اين معني است كه شما آماده اجراي دستورات و playbookهاي Ansible در آن سرور مجازي هستيد.
توجه: اگر نمي توانيد پاسخ موفقي از سرور مجازي هاي خود دريافت كنيد ، براي اطلاعات بيشتر در مورد نحوه اجراي دستورات Ansible با گزينه هاي مختلف اتصال ، راهنماي برگه تقلب Ansible ما را بررسي كنيد.

مرحله 4 – اجراي دستورات Ad-Hoc (اختياري)
پس از تأييد اينكه node كنترل Ansible شما قادر به برقراري ارتباط با هاست شماست ، مي توانيد دستورات ad-hoc و playbooks را روي سرور مجازي هاي خود اجرا كنيد.
هر دستوري كه معمولاً بر روي SSH از سرور مجازي راه دور اجرا مي كنيد مي تواند با Ansible در سرور مجازي هاي مشخص شده در فايل موجودي شما اجرا شود. به عنوان نمونه ، مي توانيد ميزان استفاده از ديسك را در همه سرور مجازي ها با دستور زير بررسي كنيد:
$ ansible all -a “df -h” -u root

Output

server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.9G 0 3.9G 0% /dev
tmpfs 798M 624K 798M 1% /run
/dev/vda1 155G 2.3G 153G 2% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 798M 0 798M 0% /run/user/0

server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 608K 394M 1% /run
/dev/vda1 78G 2.2G 76G 3% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/vda15 105M 3.6M 101M 4% /boot/efi
tmpfs 395M 0 395M 0% /run/user/0

فرمان هايلايت شده df -h را مي توان با هر دستوري كه دوست داريد جايگزين كنيد.
همچنين مي توانيد ماژول هاي Ansible را از طريق دستورات ad-hoc ، مشابه آنچه قبلاً با ماژول ping براي آزمايش اتصال انجام داده ايم ، اجرا كنيد. به عنوان مثال ، در اينجا چگونگي استفاده از ماژول apt براي نصب جديدترين نسخه vim بر روي همه سرور مجازي هاي موجود در موجودي شما آورده شده است:
$ ansible all -m apt -a “name=vim state=latest” -u root

همچنين هنگام اجراي دستورات Ansible مي توانيد هاست هاي فردي و همچنين گروه ها و زير گروه ها را هدف قرار دهيد. به عنوان مثال ، به اين ترتيب شما مي توانيد uptime هر هاست در گروه سرور مجازي ها را بررسي كنيد:
$ ansible servers -a “uptime” -u root

ما مي توانيم هاست هاي مختلفي را با جدا كردن آنها با دو نقطه مشخص كنيم:
$ ansible server1:server2 -m ping -u root

براي كسب اطلاعات بيشتر در مورد نحوه استفاده از Ansible ، از جمله نحوه اجراي playbooks براي اتوماسيون تنظيم سرور مجازي ، مي توانيد راهنماي مرجع Ansible ما را بررسي كنيد.
نتيجه
در اين راهنما ، شما Ansible را نصب كرديد و يك فايل موجودي را براي اجراي دستورات ad-hoc از يك node كنترل Ansible اجرا كرديد.
هنگامي كه تأييد كرديد كه قادر هستيد زيرساختهاي خود را از يك دستگاه كنترلر مركزي Ansible متصل كرده و كنترل كنيد ، مي توانيد هر دستور يا palybook مورد نظر را در مورد آن هاست اجرا كنيد.
براي كسب اطلاعات بيشتر در مورد نحوه استفاده از Ansible ، راهنماي كمكي در صفحه ما را ببينيد.

 

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

 

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

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

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

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

نصب و پيكربندي Laravel با Nginx در اوبونتو 20.04

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

نصب Jitsi Meet در Debian 10

نصب و پيكربندي Nextcloud در اوبونتو 20.04

نصب و پيكربندي Ansible در اوبونتو 20.04

 

كلمات كليدي خريد سرور

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

 

برچسب‌ها:AnsibleplaybookPuppet

پيكربندي Apache HTTP با رويداد MPM و PHP-FPM در اوبونتو

وب سرور مجازي Apache HTTP طي سالها پيشرفت كرده و در محيط هاي مختلف كار مي كند و نيازهاي مختلف را برطرف مي كند. يكي از مشكلات مهم Apache HTTP كه مانند هر سرور مجازي وب بايد حل شود ، نحوه مديريت فرآيندهاي مختلف براي ارائه يك درخواست پروتكل http است. اين فرآيند شامل باز كردن سوكت ، پردازش درخواست ، باز نگه داشتن اتصال براي مدت معين ، رسيدگي به رويدادهاي جديد در اين ارتباط و بازگشت به محتواي توليد شده توسط برنامه ساخته شده به يك زبان خاص (مانند PHP ، Perl يا Python) است . اين كارها توسط يك ماژول چند پردازشي (MPM) انجام و كنترل مي شود.
Apache HTTP با سه MPM متفاوت ارائه مي شود:
⦁ Pre-fork: يك فرآيند جديد براي هر اتصال ورودي به سرور مجازي ايجاد مي شود. هر فرآيند از سايرين جدا شده است ، بنابراين هيچ حافظه اي بين آنها به اشتراك گذاشته نمي شود ، حتي اگر آنها در يك نقطه از اجراي خود تماس هاي يكسان را انجام دهند. اين يك روش ايمن براي اجراي برنامه هاي مرتبط با كتابخانه هايي است كه از رشته سازي پشتيباني نمي كنند – به طور معمول برنامه ها يا كتابخانه هاي قديمي تر.
⦁ Worker: يك فرآيند parent (والد) وظيفه راه اندازي مجموعه اي از فرآيندهاي child (فرزند) را بر عهده دارد ، كه برخي از آنها در حال گوش دادن به اتصالات جديد ورودي هستند ، و برخي ديگر در حال ارائه محتواي درخواستي هستند. هر فرآيند تبديل به رشته شده است (يك رشته واحد مي تواند يك اتصال را كنترل كند) بنابراين يك فرآيند مي تواند همزمان چندين درخواست را انجام دهد. اين روش كار با اتصالات ، باعث استفاده بهتر از منابع ميشود ، در حالي كه همچنان ثبات را حفظ مي كند. اين نتيجه اي از مجموعه فرآيندهاي موجود است كه غالباً رشته هاي در دسترس را براي ارائه اتصالات جديد فوري به صورت رايگان ارائه مي دهد.
⦁ Event: بر اساس Worker ، اين MPM با بهينه سازي چگونگي برنامه ريزي فرآيند والد وظايف را به فرآيندهاي فرزند و رشته هاي مرتبط با آن ها يك قدم فراتر مي گذارد. اتصال بصورت پيش فرض 5 ثانيه باز مي ماند و در صورت عدم وقوع اتفاق جديد ، بسته مي شود. اين مقدار پيش فرض دستورالعمل keep-alive است، كه رشته مربوط به آن را حفظ مي كند. Event MPM فرايند را قادر مي سازد تا رشته ها را مديريت كند به گونه اي كه برخي از رشته ها آزاد هستند كه بتوانند اتصالات جديد ورودي را كنترل كنند در حالي كه برخي ديگر به اتصالات زنده متصل هستند. اجازه توزيع مجدد وظايف اختصاص يافته به رشته ها باعث مي شود تا استفاده و عملكرد بهينه منابع بيشتر شود.
ماژول MPM Event يك ماژول چند پردازشي سريع است كه در وب سرور مجازي Apache HTTP موجود است.
PHP-FPM مدير فرآيند FastCGI براي PHP است. پروتكل FastCGI بر پايه رابط مشترك گيت (CGI) ساخته شده است ، پروتكلي كه بين برنامه ها و سرور مجازي هاي وب مانند Apache HTTP قرار دارد. اين ويژگي اجازه مي دهد تا توسعه دهندگان برنامه ها را جداگانه از رفتار سرور مجازي هاي وب بنويسند. برنامه ها فرآيندهاي خود را بطور مستقل اجرا مي كنند و محصول خود را از طريق اين پروتكل به سرور مجازي وب منتقل مي كنند. هر اتصال جديدي كه نياز به پردازش توسط يك برنامه داشته باشد فرآيند جديدي را ايجاد مي كند.
با تركيبي از رويداد MPM در Apache HTTP با PHP FastCGI مدير فرآيند (PHP-FPM) ، وب سايت مي تواند سريعتر لود شده و ضمن استفاده از منابع كمتر ، اتصالات همزمان بيشتري را مديريت كند.
در اين آموزش عملكرد پشته LAMP را با تغيير ماژول پيش فرض چند پردازشي از pre-fork به event و با استفاده از مدير فرآيند PHP-FPM براي مديريت كد PHP به جاي mod_php كلاسيك در Apache HTTP بهبود مي بخشيد.
پيش نيازها
قبل از شروع اين راهنما به موارد زير نياز خواهيد داشت:
• يك سرور مجازي Ubuntu 18.04 كه طبق راهنماي ستاپ اوليه سرور مجازي Ubuntu 18.04 تنظيم ، و شامل يك كاربر sudo غير ريشه و فايروال راه اندازي باشد.
• پشته LAMP كه طبق آموزش نحوه نصب Linux ، Apache ، MySQL ، PHP (LAMP stack) در اوبونتو 18.04 روي سرور مجازي شما نصب شده باشد.
مرحله 1 – تغيير ماژول چند پردازشي
اوبونتو براي فعال يا غيرفعال كردن ماژول هاي Apache HTTP از توزيع والد خود ، يعني دبيان ، اسكريپت هايي را به ارث مي برد. براي غيرفعال كردن ماژول Pre fork و فعال كردن ماژول Event از اين مجموعه ابزار در اين مرحله استفاده خواهيد كرد.
در اين مرحله شما Apache HTTP را متوقف خواهيد كرد ، ماژول PHP 7.2 را كه به ماژول Pre-fork وصل شده است ، غيرفعال ميكنيد و سپس Pre-fork را غيرفعال ميكنيد تا بلافاصله ماژول Event فعال شود.
ابتدا سرويس Apache HTTP را متوقف مي كنيد:
⦁ $ sudo systemctl stop apache2

اكنون مي توانيد ماژول PHP 7.2 را كه مربوط به ماژول Pre-fork است غيرفعال كنيد:
⦁ $ sudo a2dismod php7.2

سپس ماژول MPM Pre-fork MPM را غيرفعال كنيد:
⦁ $ sudo a2dismod mpm_prefork

اكنون ماژول Event MPM را فعال كنيد:
⦁ $ sudo a2enmod mpm_event

شما MPM را از Pre-fork به Event تغيير داده ايد و اتصال ماژول PHP 7.2 را بين PHP و Apache HTTP حذف كرده ايد. در مرحله بعدي ماژول php-fpm و همچنين كتابخانه ها و ماژول هاي پروكسي را نصب خواهيد كرد. Apache HTTP را پيكربندي خواهيد كرد تا بتواند با PHP نيز ارتباط برقرار كند.
مرحله 2 – پيكربندي Apache HTTP براي استفاده از مدير فرآيند FastCGI
تا اين جا روش پردازش اتصالات توسط Apache HTTP را با انتقال از MPM Pre-fork به Event تغيير داده ايد. اما در طول راه ماژول PHP را كه Apache HTTP را با هر برنامه اجرا شده در PHP وصل كرده است غيرفعال كرده ايد.
در اين مرحله پردازنده PHP-FPM را نصب خواهيد كرد تا Apache HTTP بتواند مجدداً برنامه هاي PHP را پردازش كند. و همچنين مي توانيد كتابخانه هاي متعلقات را نصب كنيد و ماژول ها را فعال كنيد تا هر دو بتوانند هموارتر و سريعتر از گذشته همكاري كنند.
ابتدا php-fpm را نصب كنيد. دستور زير بسته PHP-FPM را نصب مي كند و سرويس php7.2-fpm بصورت خودكار را كه با systemd يكپارچه شده است فعال مي كند ، بنابراين اين سرويس در زمان بوت شروع مي شود:
⦁ sudo apt install php-fpm

براي برقراري ارتباط ، Apache HTTP و PHP به يك كتابخانه نياز دارند كه بتواند آن ظرفيت را داشته باشد. اكنون libapache2-mod-fcgid را نصب خواهيد كرد ، كه مي تواند به عنوان واسط بين برنامه ها با سرور مجازي هاي وب سرويس دهي كند ، و مخصوص Apache HTTP است. اين ارتباط از طريق سوكت يونيكس اتفاق مي افتد.
اين كتابخانه را نصب كنيد:
⦁ $ sudo apt install libapache2-mod-fcgid

php-fpm و libapache2-mod-fcgid را نصب كرده ايد ، اما هنوز هيچ كدان فعال نشده اند.
ابتدا ماژول php-fpm را با دستور زير فعال كنيد:
⦁ $ sudo a2enconf php7.2-fpm

سپس ماژول پروكسي HTTP Apacheرا فعال كنيد.
⦁ $ sudo a2enmod proxy

بعد از آن ماژول پروكسي FastCGI را در Apache HTTP فعال كنيد:
⦁ $ sudo a2enmod proxy_fcgi

توجه: مي توانيد پيكربندي اين تعامل بين برنامه هاي PHP و Apache HTTP را از طريق سوكت UNIX با دستور زير بخوانيد:
⦁ $ cat /etc/apache2/conf-enabled/php7.2-fpm.conf

همه چيز در حال حاضر آماده است بنابراين مي توانيد Apache HTTP را شروع كنيد. ابتدا يك پيكربندي انجام مي دهيد:
⦁ $ sudo apachectl configtest

Output
Syntax OK

پس از آن مي توانيد Apache HTTP را رستارت كنيد ، تا هنگام نصب كتابخانه FastCGI libapache2-mod-fcgid به طور خودكار شروع شود:
⦁ $ sudo systemctl restart apache2

اكنون ماژول php-fpm را نصب ،و Apache HTTP را پيكربندي كرده ايد تا با آن كار كند ، ماژول هاي لازم را براي كار با پروتكل FastCGI فعال كرده و خدمات مربوطه را شروع نموده ايد.
اكنون كه Apache ماژول Event MPM را فعال كرده است و PHP-FPM در آن حضور دارد و در حال اجرا است ، زمان آن رسيده است كه همه چيز بررسي شود تا مطمئن شويم طبق پيش بيني عمل ميكند.
مرحله 3 – پيكربندي خود را بررسي كنيد
به منظور بررسي اينكه تغييرات پيكربندي اعمال شده اند ، برخي از آزمايشات را اجرا خواهيد كرد. اولين تست بررسي ميكند كه ماژول چند پردازشي Apache HTTP استفاده مي شود. تست دوم تأييد مي كند كه PHP از مدير FPM استفاده مي كند.
با اجراي دستور زير سرور مجازي Apache HTTP را بررسي كنيد:
⦁ $ sudo apachectl -M | grep ‘mpm’

خروجي شما به شرح زير خواهد بود:
Output
mpm_event_module (shared)
مي توانيد همين كار را براي ماژول پروكسي و FastCGI تكرار كنيد:
⦁ $ sudo apachectl -M | grep ‘proxy’

خروجي نشان داده شده اينگونه است:
Output
proxy_module (shared)
proxy_fcgi_module (shared)

اگر دوست داريد كل ليست ماژول ها را ببينيد ، مي توانيد قسمت دوم دستور را بعد از -M حذف كنيد.
اكنون زمان آن رسيده است كه بررسي كنيم PHP از مدير پردازشگر FastCGI استفاده مي كند يا خير. براي اين كار يك اسكريپت كوچك PHP بنويسيد كه تمام اطلاعات مربوط به PHP را به شما نشان مي دهد.
دستور زير را براي نوشتن فايلي به نام زير اجرا كنيد:
⦁ $ sudo nano /var/www/your_domain/info.php

محتواي زير را در فايل info.php اضافه كنيد:
info.php

اكنون به آدرس URL سرور مجازي خود مراجعه كرده و در انتها info.php را اضافه كنيد. به اين شكل:
http://your_domain/info.php
ورودي API سرور مجازي FPM / FastCGI خواهد بود.

بعد از اين بررسي فايل info.php را حذف كنيد تا هيچ گونه اطلاعاتي در مورد سرور مجازي به صورت عمومي فاش نشود:
⦁ $ sudo rm /var/www/yourdomain.com/info.php

در حال حاضر وضعيت كار ماژول MPM ، ماژول هاي مديريت FastCGI و نحوه استفاده از كد PHP را بررسي كرده ايد.
نتيجه
شما پشته LAMP اصلي خود را بهينه كرده ايد ، بنابراين تعداد اتصالات براي ايجاد فرآيندهاي جديد Apache HTTP افزايش يافته است ، PHP-FPM با كد PHP كارآمدتر عمل مي كند ، و استفاده كلي از منابع بهبود يافته است.
براي اطلاعات بيشتر در مورد ماژول هاي مختلف و پروژه هاي مرتبط ، به مطالب پروژه سرور مجازي Apache HTTP مراجعه كنيد.

 

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

نصب و پيكربندي 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 ارزان – 

 

 

 

 

برچسب‌ها:Apache HTTPCGIFastCGIHTTPkeep-aliveMPMPythonWorker