Tumgik
vpsgol58-blog · 4 years
Text
نصب و پیکربندی 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 <?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 <?php
use Illuminate\Support\Facades\DB;
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 <html> <head> <title>Travel List</title> </head>
<body> <h1>My Travel Bucket List</h1> <h2>Places I’d Like to Visit</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul>
<h2>Places I’ve Already Been To</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html>
پس از پایان کار ، فایل را ذخیره کنید و ببندید. اکنون به مرورگر خود بروید و برنامه را مجدد لود کنید. صفحه ای را به این شکل مشاهده خواهید کرد:
اکنون یک برنامه کاربردی 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
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
Laravel
,
MySQL 8
,
Nginx
,
travellist
,
XML
0 notes
vpsgol58-blog · 4 years
Text
نحوه تنظیم 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 [email protected]
اگر بعد از اجرای دستور ssh-L خطایی ظاهر نشد ، می توانید به محیط برنامه نویسی خود بروید و Jupyter notebook را اجرا کنید: (my_project_env)Sammy@your_server:~/my_project_dir$ notebook خروجی را با URL دریافت خواهید کرد. از یک مرورگر وب در دستگاه محلی خود ، رابط وب Jupyter Notebook را با URL که با http: // localhost: 8888 شروع می شود ، باز کنید. اطمینان حاصل کنید که شماره توکن (token) درج شده است ، یا وقتی در http: // localhost: 8888 از شما خواسته شد رشته شماره توکن را وارد کنید. تونل زنی SSH با ویندوز و Putty اگر از ویندوز استفاده می کنید ، می توانید با استفاده از Putty یک تونل SSH ایجاد کنید. همانطور که نشان داده شده است ابتدا آدرس سرور مجازی یا آدرس IP را به عنوان نام میزبان وارد کنید:
سپس ، برای بازکردن منو ، روی SSH در پایین صفحه سمت چپ کلیک کرده و سپس روی Tunnels کلیک کنید. برای دسترسی به Jupyter در دستگاه محلی خود ، شماره پورت محلی را که می خواهید استفاده کنید وارد کنید. 8000 یا بیشتر را انتخاب کنید تا از پورت های استفاده شده توسط سایر سرویس ها استفاده نکنید ، و مقصد را localhost:8888 تعیین کنید که 8888 تعداد پورتی است که Jupyter notebook در آن کار می کند. اکنون روی دکمه Add کلیک کنید و پورت ها باید در لیست Forwarded ports ظاهر شوند:
در آخر ، بر روی دکمه Open کلیک کنید تا از طریق SSH به سرور مجازی وصل شوید و پورت های مورد نظر را تونل بزنید. برای اتصال به Jupyter notebook که روی سرور مجازی اجرا می شود ، به http: // localhost: 8000 (یا هر پورتی که انتخاب کردید) در یک مرورگر وب بروید. اطمینان حاصل کنید که شماره توکن درج شده است ، یا وقتی در http: // localhost: 8000 از شما خواسته شده است رشته شماره توکن را وارد کنید. مرحله 6 – استفاده از Jupyter notebook در این بخش به اصول استفاده از Jupyter notebook می پردازیم. اگر در حال حاضر Jupyter notebook را اجرا نمی کنید ، آن را با دستور Jupyter notebook شروع کنید. اکنون باید با استفاده از یک مرورگر وب به آن متصل شوید. Jupyter notebook ابزاری بسیار قدرتمند با ویژگی های بسیار است. در این بخش چند ویژگی اساسی برای تشریح شما در استفاده از notebook ارائه شده است. Jupyter notebook تمام فایل ها و پوشه های موجود در دایرکتوری را که از آن استفاده می شود نشان می دهد ، بنابراین وقتی در حال کار روی یک پروژه هستید ، حتماً آن را از دیرکتوری پروژه شروع کنید. برای ایجاد یک فایل notebook جدید ، از منوی کشویی بالا سمت راست New > Python 3 را انتخاب کنید:
یک notebook را باز می کند. اکنون می توانیم کد پایتون را در سلول اجرا کنیم یا سلول را به نشانه گذاری تغییر دهیم. به عنوان مثال ، با کلیک کردن بر روی Cell> Cell Type> Markdown از نوار پیمایش بالا ، اولین سلول را برای پذیرش Markdown تغییر دهید. اکنون می توانیم با استفاده از Markdown یادداشت هایی بنویسیم و حتی معادلات را با قرار دادن آنها بین نمادهای $ $ در LaTeX بگنجانیم. به عنوان مثال ، پس از تغییر آن به نشانه گذاری ، موارد زیر را در سلول تایپ کنید: # First Equation
Let us now implement the following equation: $$ y = x^2$$
where $x = 2$
برای تبدیل علامت گذاری به متن غنی ، کلیدهای CTRL و ENTER را فشار دهید. باید خروجی مشابه زیر دریافت کنید:
می توانید از سلول های علامت گذاری به عنوان یادداشت استفاده کرده و کد خود را مستند کنید. بیایید آن معادله را اجرا کنیم و نتیجه را چاپ کنیم. روی سلول بالا کلیک کنید ، سپس کلیدهای ALT و ENTER را با هم فشار دهید تا یک سلول در زیر آن اضافه شود. کد زیر را در سلول جدید وارد کنید. x = 2 y = x**2 print(y)
برای اجرای کد ، CTRL + ENTER را فشار دهید. نتایج زیر را دریافت خواهید کرد:
اکنون توانایی وارد کردن ماژول ها و استفاده از notebook را همانطور که می خواهید با هر محیط توسعه Python دیگر خواهید داشت! نتیجه اکنون می توانید با استفاده از Jupyter notebook کد پایتون و یادداشت های قابل تکرار را در Markdown بنویسید. برای بازدید سریع از Jupyter Notebooاز داخل رابط ، و کسب اطلاعات بیشتر Help > User Interface Tour را از منوی پیمایش بالا انتخاب کنید. از اینجا ، می توانید با خواندن مقاله تجزیه و تحلیل داده ها و تجسم سازی با pandas و Jupyter notebook در پایتون 3 ، شروع به تجزیه و تحلیل داده ها و تجسم سازی کنید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهید
نحوه ایجاد نماها (Views) برای توسعه وب Django
نصب Mount NFS در اوبونتو 20.04
نحوه توسعه برنامه ها در Kubernetes با Okteto
نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04
نحوه تنظیم Jupyter Notebook با پایتون در Ubuntu 20.04
نصب Jitsi Meet در Debian 10
نصب و پیکربندی Nextcloud در اوبونتو 20.04
نصب و پیکربندی Ansible در اوبونتو 20.04
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
Haskell
,
Julia
,
Jupyter notebook
,
notebook
0 notes
vpsgol58-blog · 4 years
Text
نصب 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 خود استفاده کنید وارد کنید.
توجه: شما مکان نما را از قسمت نام هاست حرکت می دهید تا دکمه <OK> را با کلید TAB هایلایت کنید. هنگامی که <OK> هایلایت شد برای ارسال نام هاست ، ENTER را فشار دهید.
سپس کادر جعبه گفتگوی جدیدی به شما نشان داده می شود که میپرسد آیا می خواهید Jitsi یک گواهی TLS امضا شده را استفاده کند یا از یک گواهی موجود که خودتان در اختیار دارید استفاده نماید:
اگر گواهی TLS برای دامنه Jitsi ندارید ، اولین مورد یعنی Generate a new self-signed certificate را انتخاب کنید. نمونه Jitsi Meet شما اکنون با استفاده از گواهی TLS خود امضا شده نصب شده است. این باعث اخطار مرورگر می شود ، بنابراین در مرحله بعدی یک گواهی TLS امضا شده دریافت خواهید کرد. مرحله 4 – اخذ گواهینامه TLS امضا شده Jitsi Meet از گواهینامه های TLS برای رمزگذاری ترافیک تماس استفاده می کند تا هیچ کس نتواند هنگام استفاده از اینترنت به تماس شما گوش کند. گواهینامه های TLS همان گواهینامه هایی هستند که توسط وب سایت ها برای فعال کردن آدرس های HTTPS استفاده می شوند. Jitsi Meet برنامه ای را برای دانلود خودکار گواهی TLS برای نام دامنه شما تهیه می نماند که از ابزار Certbot استفاده می کند. قبل از اجرای اسکریپت نصب گواهی ، باید این برنامه را نصب کنید. ابتدا ، بسته ی certbot را با دستور زیر نصب کنید: ⦁ $ sudo apt install certbot ⦁ اکنون سرور مجازی شما آماده اجرای برنامه نصب گواهینامه TLS تهیه شده توسط Jitsi Meet است: ⦁ $ sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh ⦁ هنگامی که اسکریپت را اجرا می کنید ، اعلان زیر برای آدرس ایمیل نشان داده می شود: Output ————————————————————————- This script will: – Need a working DNS record pointing to this machine(for domain jitsi.example.com) – Download certbot-auto from https://dl.eff.org to /usr/local/sbin – Install additional dependencies in order to request Let’s Encrypt certificate – If running with jetty serving web content, will stop Jitsi Videobridge – Configure and reload nginx or apache2, whichever is used – Configure the coturn server to use Let’s Encrypt certificate and add required deploy hooks – Add command in weekly cron job to renew certificates regularly
You need to agree to the ACME server’s Subscriber Agreement (https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf) by providing an email address for important account notifications Enter your email and press [ENTER]:
این آدرس ایمیل به صادرکننده گواهینامه https://letsencrypt.org ارسال می شود و برای اطلاع دادن به شما درباره امنیت و سایر موارد مرتبط با گواهینامه TLS استفاده می شود. برای ادامه نصب باید یک آدرس ایمیل را وارد کنید. پس از آن نصب بدون هیچ گونه اعلان دیگری انجام می شود. پس از اتمام ، نمونه Jitsi Meet شما پیکربندی می شود تا از یک گواهی TLS امضا شده برای نام دامنه خود استفاده کنید. تمدید گواهینامه به طور خودکار اتفاق می افتد زیرا نصب کننده، یک اسکریپت تجدید را در /etc/cron.weekly/letsencrypt-renew قرار داده است که هر هفته اجرا می شود. سرور مجازی Jitsi Meet شما اکنون آماده و در حال اجرا است و برای آزمایش در دسترس میباشد. یک مرورگر باز کرده و نام دامنه خود را به آن معرفی کنید. قادر خواهید بود یک اتاق کنفرانس جدید ایجاد کنید و دیگران را نیز دعوت کنید تا به شما بپیوندند. تنظیمات پیش فرض برای Jitsi Meet این گونه است که هرکسی که صفحه اصلی سرور مجازی Jitsi Meet شما را مشاهده می کند می تواند یک اتاق کنفرانس جدید ایجاد کند. با این کار از منابع سیستم سرور مجازی شما برای اجرای اتاق کنفرانس استفاده می شود و به خاطر استفاده کاربران غیرمجاز مطلوب نیست. در مرحله بعد ، شما نمونه Jitsi Meet را به گونه ای پیکربندی می کنید که فقط کاربران عضو شده قادر به ایجاد اتاق کنفرانس باشند. مرحله 5 – ایجاد قفل کنفرانس در این مرحله ، شما سرور مجازی Jitsi Meet را به گونه ای پیکربندی می کنید تا فقط کاربران ثبت نام شده بتوانند اتاق کنفرانس ایجاد کنند. فایل هایی که ویرایش می کنید توسط نصب کننده ایجاد شده اند و با نام دامنه شما پیکربندی میشوند. متغیر your_domain به جای نام دامنه در مثالهای زیر استفاده خواهد شد. ابتدا ، sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua را با یک ویرایشگر متن باز کنید: ⦁ $ sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua ⦁ این خط را ویرایش کنید: /etc/prosody/conf.avail/your_domain.cfg.lua … authentication = “anonymous” …
به صورت زیر: /etc/prosody/conf.avail/your_domain.cfg.lua … authentication = “internal_plain” …
این پیکربندی به Jitsi Meet می گوید تا قبل از اجازه ایجاد اتاق کنفرانس توسط یک بازدید کننده جدید ، مجبور به تأیید اعتبار نام کاربری و رمز عبور شود. سپس در همان فایل قسمت زیر را به انتهای فایل اضافه کنید: /etc/prosody/conf.avail/your_domain.cfg.lua … VirtualHost “guest.your_domain” authentication = “anonymous” c2s_require_encryption = false
این پیکربندی به کاربران ناشناس اجازه می دهد تا به اتاق های کنفرانس که توسط یک کاربر معتبر ایجاد شده اند بپیوندند. با این حال ، میهمان باید یک آدرس منحصر به فرد و رمز عبور اختیاری برای ورود به اتاق داشته باشد. در اینجا ، شما guest. را به جلوی نام دامنه خود اضافه کردید به عنوان مثال ، برای jitsi.your-domain، guest.jitsi.your-domain را قرار دهید. نام هاست guest. فقط به صورت داخل توسط Jitsi Meet استفاده می شود. شما هرگز آن را وارد مرورگر نخواهید کرد و یا نیازی به ایجاد رکورد DNS برای آن ندارید. فایل پیکربندی دیگری را در /etc/jitsi/meet/your_domain-config.js با یک ویرایشگر متن باز کنید: ⦁ $ sudo nano /etc/jitsi/meet/your_domain-config.js ⦁ این خط را ویرایش کنید: /etc/jitsi/meet/your_domain-config.js … // anonymousdomain: ‘guest.example.com’, …
تا به این صورت درآید: /etc/jitsi/meet/your_domain-config.js … anonymousdomain: ‘guest.your_domain’, …
مجدداً ، با استفاده از نام هاست guest.your_domain که قبلاً از این پیکربندی استفاده کرده اید ، به Jitsi می گوید چه نام هاست داخلی را برای مهمانان تأیید نشده استفاده کند. سپس ، /etc/jitsi/jicofo/sip-communicator.properties را باز کنید: ⦁ $ sudo nano /etc/jitsi/jicofo/sip-communicator.properties ⦁ و خط زیر را برای تکمیل تغییرات پیکربندی اضافه کنید: /etc/jitsi/jicofo/sip-communicator.properties org.jitsi.jicofo.auth.URL=XMPP:your_domain
این پیکربندی یکی از فرایندهای Jitsi Meet را به سرور مجازی محلی نشان می دهد که تأیید اعتبار کاربر را که اکنون لازم است انجام می دهد. نمونه Jitsi Meet شما اکنون پیکربندی شده است و فقط کاربران ثبت نام شده می توانند اتاق کنفرانس ایجاد کنند. بعد از ایجاد یک اتاق کنفرانس ، هر کسی می تواند بدون نیاز به کاربر ثبت نام شده به آن بپیوندد. تنها آنچه نیاز دارند آدرس اتاق کنفرانس منحصر به فرد و رمزعبور اختیاری است که توسط فردی که اتاق را ایجاد کرده تنظیم شده است. اکنون که Jitsi Meet پیکربندی شده است و برای ایجاد اتاق نیاز به کاربران معتبر دارد ، باید این کاربران و رمزهای عبور خود را ثبت کنید. برای این کار از ابزار prosodyctl استفاده خواهید کرد. دستور زیر را برای افزودن کاربر به سرور مجازی خود اجرا کنید: ⦁ $ sudo prosodyctl register user your_domain password ⦁ کاربری که شما در اینجا اضافه می کنید کاربر سیستم نیست. آنها فقط قادر به ایجاد یک اتاق کنفرانس هستند و از طریق SSH قادر به ورود به سرور مجازی شما نیستند. در آخر ، مراحل Jitsi Meet را ریستارت کنید تا پیکربندی جدید لود شود: ⦁ $ sudo systemctl restart prosody.service ⦁ ⦁ $ sudo systemctl restart jicofo.service ⦁ ⦁ $ sudo systemctl restart jitsi-videobridge2.service ⦁ ⦁ $ sudo systemctl restart nginx ⦁ اکنون Jitsi Meet نمونه هنگام ایجاد یک اتاق کنفرانس ، نام کاربری و رمزعبور را با جعبه گفتگو درخواست می کند.
سرور مجازی Jitsi Meet شما اکنون تنظیم و ایمن شده است. نتیجه در این مقاله ، شما سرور مجازی Jitsi Meet را مستقر کرده اید که می توانید از آنها برای میزبانی اتاق های کنفرانس ویدیویی ایمن و خصوصی استفاده کنید. می توانید نمونه Jitsi Meet خود را با دستورالعمل Jitsi Meet Wiki گسترش دهید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهید
نحوه ایجاد نماها (Views) برای توسعه وب Django
نصب Mount NFS در اوبونتو 20.04
نحوه توسعه برنامه ها در Kubernetes با Okteto
نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04
نحوه تنظیم Jupyter Notebook با پایتون در Ubuntu 20.04
نصب Jitsi Meet در Debian 10
نصب و پیکربندی Nextcloud در اوبونتو 20.04
نصب و پیکربندی Ansible در اوبونتو 20.04
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
etc
,
hostnamectl
,
Jitsi Meet
,
skype
0 notes
vpsgol58-blog · 4 years
Text
نصب و پیکربندی 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
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
Dropbox
,
Nextcloud
,
ownCloud
0 notes
vpsgol58-blog · 4 years
Text
نصب و پیکربندی 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
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
Ansible
,
playbook
,
Puppet
0 notes
vpsgol58-blog · 4 years
Text
مقدمه ای بر مدیریت پیکربندی با Ansible
مدیریت پیکربندی فرایندی است برای مدیریت تغییرات در یک سیستم به شکلی که از یکپارچگی در طول زمان اطمینان حاصل کند ، و به طور معمول شامل ابزار و فرآیندهایی است که اتوماسیون و قابلیت مشاهده را تسهیل می کند. حتی اگر این مفهوم از صنعت IT سرچشمه نگرفته باشد ، این اصطلاح به طور گسترده ای برای اشاره به مدیریت پیکربندی سرور مجازی ها به کار می رود. در زمینه سرور مجازی ها ، مدیریت پیکربندی معمولاً به IT Automation  یا  Server Orchestration نیز شناخته می شود. هر دو عبارت جنبه های عملی مدیریت پیکربندی و توانایی کنترل چندین سیستم از یک سرور مجازی مرکزی را تاکید می کنند. این راهنما شما را با مزایای استفاده از یک ابزار مدیریت پیکربندی برای اتوماسیون تنظیم زیرساخت سرور مجازی تان، آشنا می کند و اینکه چگونه یک ابزار از جمله Ansible می تواند در این زمینه به شما کمک کند. مزایای استفاده از یک ابزار مدیریت پیکربندی ابزارهای مدیریت پیکربندی متعددی در بازار وجود دارند که سطح پیچیدگی و سبک های معماری متنوعی دارند. اگرچه هر یک از این ابزارها ویژگی های خاص خود را دارند و به روش های کمی متفاوت کار می کنند ، همه آنها عملکرد مشابهی را ارائه می دهند: اطمینان حاصل کنید که وضعیت سیستم مطابق با وضعیت توصیف شده توسط مجموعه ای از اسکریپت های آماده سازی میباشد. بسیاری از مزایای مدیریت پیکربندی برای سرور مجازی ها از توانایی تعریف زیرساخت های شما به صورت کد نشات می گیرد. این سیستم به شما امکان می دهد: از یک سیستم کنترل نسخه برای پیگیری هرگونه تغییر در زیرساخت های خود استفاده کنید از تهیه اسکریپت برای چندین سرور مجازی محیط مانند توسعه ، آزمایش و تولید، استفاده مجدد کنید اسکریپت های آماده سازی بین همکاران را برای سهولت همکاری در یک محیط توسعه استاندارد به اشتراک بگذارید روند تکثیر سرور مجازی ها را ساده تر کنید ، و این باعث می شود تا بازیابی از خطاهای مهم تسهیل شود علاوه بر این ، ابزارهای مدیریت پیکربندی راهی برای کنترل یک تا صدها سرور مجازی از یک مکان متمرکز را به شما ارائه می دهند که می تواند به طور چشمگیری بهره وری و یکپارچگی زیرساختهای سرور مجازی شما را بهبود ببخشد. بررسی اجمالی Ansible ابزاری برای مدیریت پیکربندی مدرن است که وظیفه تنظیم و نگهداری سرور مجازی های از راه دور را تسهیل می کند ، با یک طراحی مینیمالیستی که برای به روزرسانی و اجرای سریع کاربران در نظر گرفته شده است. کاربران ، اسکریپت های تهیه Ansible را در YAML می نویسند ، یک استاندارد سریال سازی داده های کاربر پسند که به هیچ زبان برنامه نویسی خاصی ربط ندارد. این به کاربران امکان می دهد در مقایسه با ابزارهای مشابه در همان دسته ، اسکریپت های تخصصی را بطور شهودی تر ایجاد کنند. Ansible نیازی به نصب نرم افزار خاصی روی گره هایی که با این ابزار مدیریت می شوند، ندارد. یک دستگاه کنترل با نرم افزار Ansible راه اندازی میشود که سپس از طریق SSH استاندارد با گره ها ارتباط برقرار می کند. Ansible به عنوان یک ابزار مدیریت پیکربندی و چارچوب اتوماسیون ، کلیه ویژگیهای رایج موجود در سایر ابزارهای همان گروه را ضبط می کند ، در حالی که هنوز تمرکز زیادی روی سادگی و عملکرد دارد: رفتار Idempotent Ansible وضعیت منابع موجود در سیستم های مدیریت شده را برای جلوگیری از تکرار کارهایی که قبلاً انجام شده بودند ، پیگیری می کند. اگر بسته ای از قبل نصب شده باشد ، دیگر آن را نصب نمیکند. هدف این است که بعد از اجرای هر مرحله ، سیستم به حالت مورد نظر برسد (یا آن را حفظ کند) حتی اگر چندین بار آن را اجرا کنید. این همان چیزی است که Ansible و سایر ابزارهای مدیریت پیکربندی را به خاطر داشتن یک رفتار Idempotent متمایز می کند. هنگام اجرای یک playbook ، وضعیت هر کاری را که باید اجرا شود مشاهده می کنید و اینکه آیا این کار باعث تغییر در سیستم شده است یا خیر. پشتیبانی از متغیرها ، شرط ها و حلقه ها هنگام نوشتن اسکریپت های اتوماسیون Ansible ، می توانید از متغیرها ، شرط ها و حلقه ها استفاده کنید تا اتوماسیون خود را متنوع تر و کارامدتر کنید. حقایق سیستم Ansible مجموعه ای از اطلاعات دقیق در مورد گره های مدیریت شده ، مانند رابط های شبکه و سیستم عامل را جمع آوری کرده و آن را به عنوان متغیرهای جهانی به نام واقعیت های سیستم ارائه می دهد. از واقعیت ها می توان در playbook ها استفاده کرد تا اتوماسیون شما متنوع تر و سازگارتر شود ، و بسته به سیستم مجهز شده ، متفاوت رفتار کند. سیستم قالب بندی Ansible از سیستم قالب بندی Jinja2 Python استفاده می کند تا امکان عبارات پویا و دسترسی به متغیرها را فراهم کند. از الگوهای می توان برای تسهیل تنظیم فایل ها و خدمات پیکربندی استفاده کرد. به عنوان مثال ، می توانید از یک الگو برای تنظیم یک میزبان مجازی جدید در Apache استفاده کنید ، در حالی که از همان قالب برای نصب چندین سرور مجازی استفاده می کنید. پشتیبانی از افزونه ها و ماژول ها Ansible با صدها ماژول داخلی برای تسهیل اتوماسیون نوشتن جهت کارهای اجرایی رایج سیستمها ، مانند نصب بسته هایی با apt و همزمان سازی فایل ها با rsync ، و همچنین برای کار با نرم افزارهای رایج مانند سیستم های پایگاه داده (مانند MySQL ، PostgreSQL ، MongoDB ، و غیره) و ابزارهای مدیریت متعلقات (PHP’s composer, Ruby’s gem, Node’s npm و غیره) همراه است. جدای از آن ، روش های مختلفی وجود دارد که می توانید Ansible را گسترش دهید: وقتی به عملکردی سفارشی احتیاج دارید که به طور پیش فرض وجود ندارد ، افزونه ها و ماژول ها گزینه های خوبی هستند. همچنین می توانید ماژول ها و افزونه های شخص ثالث را در پرتال Ansible Galaxy پیدا کنید. آشنایی با مفاهیم Ansible اکنون به اصطلاحات و مفاهیم Ansible نگاهی خواهیم داشت تا به شما در آشنایی با این اصطلاحات در طول مجموعه مقاله ها کمک کنیم. Control Node (گره کنترل) گره کنترل سیستمی است که Ansible برای اتصال به سرور مجازی شما نصب و تنظیم شده است. شما می توانید چندین گره کنترل داشته باشید ، و هر سیستم قادر به اجرای Ansible می تواند به عنوان یک گره کنترل از جمله رایانه های شخصی یا لپ تاپ هایی که دارای سیستم عامل مبتنی بر لینوکس یا یونیکس هستند ، تنظیم شود. در حال حاضر ، Ansible در هاست های ویندوز قابل نصب نیست ، اما می توانید با تنظیم یک ماشین مجازی که لینوکس را اجرا کرده و از آنجا Ansible را اجرا میکند ، این محدودیت را دور بزنید. Managed Nodes (گره های مدیریت شده) سیستمهایی که با استفاده از Ansible کنترل می کنید گره های مدیریت شده نامیده می شوند. Ansible نیاز دارد گره های مدیریت شده از طریق SSH قابل دستیابی باشند ، و پایتون 2 (نسخه 2.6 یا بالاتر) یا پایتون 3 (نسخه 3.5 یا بالاتر) نصب شده باشد. Ansible انواع مختلفی از سیستم عامل ها از جمله سرور مجازی های ویندوز را به عنوان گره های مدیریت شده پشتیبانی می کند. Inventory فایل Inventory (موجودی ) شامل لیستی از هاست هایی است که شما با استفاده از Ansible مدیریت خواهید کرد. گرچه Ansible به طور معمول هنگام نصب یک فایل Inventory پیش فرض ایجاد می کند ، می توانید از Inventory های هر پروژه استفاده کنید تا از زیرساختهای خود تفکیک بهتری داشته باشید و از اجرای دستورات یا Playbook ها روی سرور مجازی اشتباه جلوگیری کنید. موجودی های استاتیک معمولاً به صورت فایلهای .ini ایجاد می شوند ، اما شما می توانید از موجودی هایی که به صورت پویا تولید شده نیز به هر زبان برنامه نویسی که قادر به بازگشت JSON است ، استفاده کنید. Tasks در Ansible ، یک Task (کار) ، واحد مجزایی از کار برای اجرای یک گره مدیریت شده است. هر عملی برای انجام به عنوان یک Task تعریف می شود. کارها می توانند به عنوان یک عمل یک طرفه از طریق دستورات ad-hoc اجرا شوند ، یا در یک Playbook به عنوان بخشی از یک اسکریپت اتوماسیون گنجانده شوند. Playbook Playbook شامل لیست سفارشی از وظایف و چند دستورالعمل دیگر است تا مشخص کند کدام هاست ها هدف آن اتوماسیون باشند ، آیا از سیستم افزایش امتیاز برای اجرای آن کارها استفاده شود، و بخش های اختیاری برای تعریف متغیرها یا مشمولیت فایل ها دارد. Ansible وظایف را به صورت متوالی انجام می دهد و یک اجرای کامل Playbook را یک play می نامند. Playbook ها با فرمت YAML نوشته میشوند. Handlers برای دستیابی به اقدامات روی یک سرویس ، مانند راه اندازی مجدد یا متوقف کردن سرویسی که به طور فعال در سیستم گره مدیریت شده اجرا می شود ، از Handler استفاده می شود. Handler ها معمولاً توسط taksها تحریک می شوند و پس از اتمام همه کارها ، اجرای آنها در پایان یک play اتفاق می افتد. به این ترتیب ، اگر بیش از یک کار سرویس را ریستارت کند ، سرویس فقط یک بار و پس از انجام همه کارها ریستارت میشود. اگرچه رفتار پیش فرض Handler کارآمدتر است و در کل یک عمل بهتر میباشد ، اما در صورت نیاز توسط یک کار نیز می توان مجبور به اجرای سریع آن شد. Roles role ، مجموعه ای از Playbook و فایل های مرتبط است که به یک ساختار از پیش تعریف شده توسط Ansible سازمان دهی شده است. role ها استفاده مجدد و بازگشت مجدد از Playbook ها را به بسته های قابل تقسیم اتوماسیون دانه ای برای اهداف خاص مانند نصب یک سرور مجازی وب ، نصب یک محیط PHP یا تنظیم سرور مجازی MySQL تسهیل می کند. نتیجه Ansible ابزاری برای اتوماسیون فناوری اطلاعات جزیی است که دارای منحنی یادگیری ملایم میباشد ، و تا حدودی به خاطر استفاده از YAML برای تهیه اسکریپت ها مفید میباشد. دارای تعداد زیادی ماژول داخلی است که می تواند برای کارهای انتزاعی مانند نصب بسته ها و کار با قالب ها استفاده شود. الزامات ساده زیرساختی و دستورات قابل دسترس آن می تواند مناسب کسانی باشد که مدیریت پیکربندی را شروع می کنند. در قسمت بعدی این مجموعه ، نحوه نصب و شروع کار با Ansible را در سرور مجازی 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
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
Ansible
,
Idempotent
,
IT Automation
,
playbook
,
Server Orchestration
,
YAML
0 notes
vpsgol58-blog · 4 years
Text
نحوه نصب R روی اوبونتو 20.04
R یک زبان برنامه نویسی منبع باز است که در تحلیل داده و محاسبات آماری استفاده میشود. با حمایت بنیاد R برای محاسبات آماری ، از آن به صورت گسترده توسط جامعه فعالی استفاده میشود. R بسیاری از بسته های تولید شده توسط کاربر را برای حوزه های خاصی از مطالعه ارائه می دهد ، که باعث می شود این امر در بسیاری از زمینه ها کاربرد داشته باشد. در این آموزش R را نصب می کنیم و نحوه اضافه کردن بسته ها از شبکه رسمی بایگانی جامع R (CRAN) را نشان می دهیم. پیش نیازها برای دنبال کردن این آموزش به سرور مجازی اوبونتو 20.04 با: • حداقل 1 گیگابایت رم • کاربر غیر ریشه با امتیازات sudo نیاز دارید برای یادگیری چگونگی دستیابی به این تنظیمات ، راهنمای ستاپ اولیه سرور مجازی را دنبال کنید. پس از اتمام این پیش نیازها ، آماده شروع هستید. مرحله 1 – نصب R از آنجا که R یک پروژه به سرعت در حال حرکت است ، آخرین نسخه پایدار همیشه از منابع اوبونتو در دسترس نیست ، بنابراین ما با اضافه کردن منبع خارجی که توسط CRAN نگهداری می شود ، شروع خواهیم کرد. توجه : CRAN منابع درون شبکه خود را حفظ می کند ، اما همه منابع خارجی قابل اعتماد نیستند. مطمئن شوید که فقط از منابع معتبر نصب کنید.
ابتدا بیایید کلید GPG مربوطه را اضافه کنیم. $ sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
وقتی دستور را اجرا می کنیم ، خروجی زیر را دریافت خواهیم کرد: Output Executing: /tmp/apt-key-gpghome.cul0ddtmN1/gpg.1.sh –keyserver keyserver.ubuntu.com –recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 gpg: key 51716619E084DAB9: public key “Michael Rutter <[email protected]>” imported gpg: Total number processed: 1 gpg: imported: 1
پس از داشتن کلید قابل اعتماد ، می توانیم منبع را اضافه کنیم. توجه داشته باشید که اگر از 20.04 استفاده نمی کنید ، می توانید منبع مربوطه را از لیست R Project Ubuntu ، که برای هر نسخه نامگذاری شده است ، پیدا کنید. اوبونتو 20.04 به Focal Fossa اشاره دارد و جدیدترین نسخه R، 4.0.0 است، بنابراین قرارداد نامگذاری منبع زیر، focal-cran40 است. $ sudo add-apt-repository ‘deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/’
در بین خروجی نمایش داده شده ، باید خطوط مشابه زیر را پیدا کنید: Output … Get:7 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ InRelease [3622 B] Get:8 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ Packages [15.6 kB] …
اکنون ، برای اینکه مانیفیست (اعلان) های بسته از منبع جدید را شامل شود ، باید پس از این به روزرسانی کنیم. $ sudo apt update در بین خروجی باید یک خط شبیه به زیر باشد: Output … Hit:5 https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/ InRelease …
اگر خط فوق در خروجی از دستور UPDATE ظاهر شود ، ما منبع را با موفقیت اضافه کرده ایم. می توانیم مطمئن باشیم که به طور تصادفی نسخه قدیمی را نصب نمی کنیم. در این مرحله ، آماده نصب R با دستور زیر هستیم. $sudo apt install r-base اگر از شما خواسته شد كه نصب را تأیید كنید ، برای ادامه ، y را فشار دهید. در زمان نوشتن این مقاله، آخرین نسخه پایدار R از CRAN نسخه 4.0.1 میباشد که هنگام شروع R نمایش داده می شود. از آنجا که ما قصد داریم یک پکیج نمونه برای هر کاربر روی سیستم نصب کنیم ، R را به صورت root شروع خواهیم کرد تا کتابخانه ها بصورت خودکار در دسترس همه کاربران قرار بگیرند. از طرف دیگر ، اگر دستور R را بدون sudo اجرا کنید ، می توانید یک کتابخانه شخصی برای کاربر خود تنظیم کنید. $ sudo -i R Output
R version 4.0.0 (2020-04-24) — “Arbor Day” Copyright (C) 2020 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) … Type ‘demo()’ for some demos, ‘help()’ for on-line help, or ‘help.start()’ for an HTML browser interface to help. Type ‘q()’ to quit R.
>
این تأیید می کند که ما R را با موفقیت نصب کرده ایم و وارد پوسته تعاملی آن شدیم. مرحله 2 – نصب بسته های R از CRAN بخشی از قدرت R فراوانی در دسترس بسته های افزودنی آن است. به هدف توضیحی ، txtplot را نصب خواهیم کرد ، کتابخانه ای که نمودارهای ASCII را در بر می گیرد که شامل نمودار پراگندگی ، نمودار خطی ، نمودار چگالی ، نمودارهای acf و نمودارهای میله ای است: > install.packages(‘txtplot’) توجه: خروجی زیر نشان می دهد که بسته در کجا نصب خواهد شد. Output … Installing package into ‘/usr/local/lib/R/site-library’ (as ‘lib’ is unspecified) … این مسیر گسترده در سایت وجود دارد زیرا ما R را به عنوان root اجرا کردیم. این مکان صحیحی است که بسته را در دسترس همه کاربران قرار میدهد. پس از اتمام نصب ، می توانیم txtplot را لود کنیم: > library(‘txtplot’) اگر پیام خطایی وجود ندارد ، کتابخانه با موفقیت لود شده است. بیایید اکنون آن را با مثالی که عملکرد نمودارسازی پایه را با برچسب های محور نشان می دهد ، در مرحله عمل قرار دهیم. داده های مثال ، تهیه شده توسط بسته های datasets درR ، شامل سرعت اتومبیل ها و مسافت موردنیاز برای متوقف کردن بر اساس داده های دهه 1920 است: $ txtplot(cars[,1], cars[,2], xlab = ‘speed’, ylab = ‘distance’)
Output +—-+———–+————+———–+———–+–+ 120 + * + | | d 100 + * + i | * * | s 80 + * * + t | * * * * | a 60 + * * * * * + n | * * * * * | c 40 + * * * * * * * + e | * * * * * * * | 20 + * * * * * + | * * * | 0 +—-+———–+————+———–+———–+–+ 5 10 15 20 25 speed
اگر علاقه مند به کسب اطلاعات بیشتر در مورد txtplot هستید ، از help)txtplot) در داخل مفسر R استفاده کنید. هر بسته از پیش کامپایل شده را می توان از CRAN با install.packages () نصب کرد. برای کسب اطلاعات بیشتر در مورد آنچه در دسترس است ، می توانید لیستی از بسته های رسمی بر اساس نام که از طریق لیست نام بسته های موجود CRAN سازماندهی شده ، پیدا کنید. برای خروج از R ، می توانید q () را تایپ کنید. مگر اینکه بخواهید تصویر فضای کاری را ذخیره کنید ، می توانید در صورت درخواست از شما n را فشار دهید. نتیجه با نصب موفقیت آمیز R روی سرور مجازی ، ممکن است علاقه مند به این راهنما در مورد نصب سرور مجازی RStudio باشید تا بتوانید یک IDE را در استقرار مبتنی بر سرور مجازی که تازه تکمیل کرده اید ، قرار دهید. همچنین می توانید نحوه تنظیم سرور مجازی Shiny را برای تبدیل کد R خود به صفحات وب تعاملی بیاموزید. برای کسب اطلاعات بیشتر در مورد نحوه نصب پکیج های R با استفاده از ابزارهای مختلف ، می توانید نحوه نصب مستقیم از GitHub ، BitBucket یا سایر لوکیشن ها را مطالعه کنید. این کار به شما امکان می دهد تا از آخرین کارهای جامعه فعال بهره ببرید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهید
نحوه ایجاد نماها (Views) برای توسعه وب Django
نصب Mount NFS در اوبونتو 20.04
نحوه توسعه برنامه ها در Kubernetes با Okteto
نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04
نحوه تنظیم Jupyter Notebook با پایتون در Ubuntu 20.04
نصب Jitsi Meet در Debian 10
نصب و پیکربندی Nextcloud در اوبونتو 20.04
نصب و پیکربندی Ansible در اوبونتو 20.04
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
CRAN
,
نصب R
0 notes
vpsgol58-blog · 4 years
Text
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
در این راهنما یک برنامه Python را با استفاده از میکروفریم Flask در Ubuntu 18.04 ایجاد خواهید کرد. بخش عمده این مقاله در مورد نحوه تنظیم سرور مجازی برنامه uWSGI و نحوه راه اندازی و پیکربندی برنامه Nginx برای عمل به عنوان یک پروکسی معکوس front-end خواهد بود. پیش نیازها قبل از شروع این راهنما ، باید این موارد را داشته باشید: ⦁ سرور مجازی با اوبونتو 18.04 و یک کاربر غیر ریشه با امتیازات sudo. برای راهنمایی ، مقاله ستاپ اولیه سرور مجازی ما را دنبال کنید. ⦁ Nginx نصب شده داشته باشید، مراحل 1 و 2 نحوه نصب Nginx در اوبونتو 18.04 را دنبال کنید. ⦁ نام دامنه پیکربندی شده برای اشاره به سرور مجازی شما. می توانید یکی از آنها را در Namecheap خریداری کنید یا یکی از آنها را به صورت رایگان در Freenom دریافت کنید. با دنبال کردن مستندات مربوط به دامنه ها و DNS می توانید یاد بگیرید که چگونه دامنه ها را به vpsgol نشان دهید. حتماً سوابق DNS زیر را ایجاد کنید: o یک رکورد A با your_domain که به آدرس IP عمومی سرور مجازی شما اشاره می کند. o یک رکورد A با www.your_domain که به آدرس IP عمومی سرور مجازی شما اشاره کند. ⦁ آشنایی با uWSGI ، سرور مجازی برنامه ما و مشخصات WSGI. این بحث به تفصیل به تعاریف و مفاهیم می پردازد. مرحله 1 – نصب مولفه ها از مخازن اوبونتو اولین قدم ما نصب تمام بخش ها مورد نیاز از مخازن اوبونتو خواهد بود. pip ، مدیر بسته پایتون را برای مدیریت اجزای پایتون خود نصب خواهیم کرد. همچنین فایل های توسعه پایتون لازم برای ساخت uWSGI را دریافت خواهیم کرد. ابتدا ، اجازه دهید ایندکس بسته محلی را به روز کنیم و بسته هایی را نصب کنیم که به ما امکان می دهد محیط Python خود را بسازیم. این موارد شامل python3-pip ، همراه با چند بسته دیگر و ابزار توسعه لازم برای یک محیط برنامه نویسی قوی است: ⦁ $ sudo apt update ⦁ ⦁ $ sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools
با استفاده از این بسته ها ، به سمت ایجاد یک فضای مجازی برای پروژه خود برویم. مرحله 2 – ایجاد یک محیط مجازی پایتون در مرحله بعدی ، یک محیط مجازی تنظیم خواهیم کرد تا بتوانیم برنامه Flask خود را از سایر فایل های Python روی سیستم جدا کنیم. با نصب بسته python3-venv که ماژول venv را نصب خواهد کرد شروع کنید: ⦁ $ sudo apt install python3-venv ⦁ در مرحله بعد ، بیایید یک دایرکتوری والد برای پروژه Flask تهیه کنیم. بعد از ایجاد آن وارد پوشه شوید: ⦁ $ mkdir ~/myproject ⦁ ⦁ $ cd ~/myproject
یک محیط مجازی ایجاد کنید تا نیازمندی های پایتون پروژه Flask خود را با تایپ کردن دستور زیر ذخیره کنید: ⦁ $ python3.6 -m venv myprojectenv ⦁ با این کار یک کپی محلی از Python و pip در دیرکتوری به نام myprojectenv درون دیرکتوری پروژه شما کپی میشود. قبل از نصب برنامه ها در محیط مجازی ، باید آن را فعال کنید. این کار را با تایپ کردن دستور زیر انجام دهید: ⦁ $ source myprojectenv/bin/activate ⦁ اعلان شما تغییر می کند و نشان می دهد که اکنون در محیط مجازی کار می کنید. چیزی شبیه به (myprojectenv)user@host:~/myproject$ به نظر می رسد . مرحله 3 – تنظیم یک برنامه Flask اکنون که در محیط مجازی خود قرار دارید ، می توانید Flask و uWSGI را نصب کرده و طراحی برنامه خود را شروع کنید. ابتدا بگذارید wheel  را با نمونه محلی pip نصب کنیم تا اطمینان حاصل شود که بسته های ما حتی در صورت از دست دادن بایگانی wheel ، نصب می شوند: ⦁ $ pip install wheel ⦁
توجه داشته باشید صرفنظر از اینکه از کدام نسخه Python استفاده می کنید ، هنگامی که محیط مجازی فعال می شود ، باید از دستور pip استفاده کنید (نه pip3) سپس ، اجازه دهید Flask و uWSGI را نصب کنیم: ⦁ (myprojectenv) $ pip install uwsgi flask ⦁ ایجاد یک برنامه نمونه اکنون که Flask را در دسترس دارید ، می توانید یک برنامه ساده ایجاد کنید. Flask یک میکرو فریم ورک است. و بسیاری از ابزارهایی که ممکن است چهارچوبهای کامل تری داشته باشند را شامل نمیشود، و عمدتاً به عنوان ماژول وجود دارد که می توانید برای شروع برنامه های وب از کمک بگیرید تا بتوانید به پروژه های خود وارد شوید. در حالی که ممکن است برنامه شما پیچیده تر باشد ، ما برنامه Flask خود را در یک فایل واحد با نام myproject.py ایجاد خواهیم کرد: ⦁ (myprojectenv) $ nano ~/myproject/myproject.py ⦁ کد برنامه در این فایل قرار دارد. Flask را وارد می کند و یک آبجکت Flask را معرفی می کند. شما می توانید از این ویژگی برای تعریف کارکردهایی استفاده کنید که باید هنگام درخواست یک مسیر خاص انجام شود: ~/myproject/myproject.py from flask import Flask app = Flask(__name__)
@app.route(“/”) def hello(): return “<h1 style=’color:blue’>Hello There!</h1>”
if __name__ == “__main__”: app.run(host=’0.0.0.0′)
این کد اساساً مشخص می کند که هنگام دستیابی به حوزه root ، چه محتوایی ارائه شود. پس از اتمام فایل را ذخیره کنید و ببندید. اگر راهنمای اولیه تنظیم سرور مجازی را دنبال کرده اید ، باید فایروال UFW را فعال کرده باشید. برای تست برنامه ، باید دسترسی به پورت 5000 را داشته باشید: ⦁ (myprojectenv) $ sudo ufw allow 5000 ⦁ اکنون می توانید برنامه Flask خود را با تایپ کردن دستور زیر تست کنید: ⦁ (myprojectenv) $ python myproject.py ⦁ خروجی مانند این را مشاهده خواهید کرد ، که شامل یک هشدار مفید است که به شما یادآوری می کند از این ستاپ سرور مجازی در تولید استفاده نکنید: Output * Serving Flask app “myproject” (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: off * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
از آدرس IP سرور مجازی و به دنبال آن: 5000 در مرورگر وب خود بازدید کنید: http://your_server_ip:5000 باید چیزی شبیه به این را ببینید:
پس از اتمام ، CTRL-C را در پنجره ترمینال خود بزنید تا سرور مجازی توسعه Flask متوقف شود. ایجاد نقطه ورود WSGI در مرحله بعدی ، فایلی را ایجاد میکنیم که به عنوان نقطه ورود برنامه ما باشد. این به سرور مجازی uWSGI می گوید که چگونه می توان با آن تعامل برقرار کرد. بیایید فایل wsgi.py را فراخوانی کنیم: ⦁ (myprojectenv) $ nano ~/myproject/wsgi.py ⦁
در این فایل ، بیایید نمونه Flask را از برنامه خود وارد کنیم و سپس آن را اجرا کنیم: ~/myproject/wsgi.py from myproject import app
if __name__ == “__main__”: app.run()
پس از اتمام فایل را ذخیره کنید و ببندید. مرحله 4 – پیکربندی uWSGI برنامه شما اکنون با یک نقطه ورود مشخص نوشته شده است. اکنون می توانیم به سراغ پیکربندی uWSGI برویم. تست سرویس UWSGI بیایید تست کنیم تا مطمئن شویم که uWSGI می تواند برنامه ما را ارائه کند. ما می توانیم این کار را با ساده تر کردن نام ورودی خود انجام دهیم. این با نام ماژول ساخته شده است (منهای پسوند .py) به علاوه نام قابل فراخوانی درون برنامه. در نمونه ما ، wsgi:app است. بیایید سوکت را نیز مشخص کنیم ، به طوری که آن را بر روی یک رابط در دسترس عمومی و همچنین پروتکل راه اندازی کنید تا از HTTP به جای پروتکل باینری uwsgi استفاده کند. ما از همان شماره پورت ، 5000 ، که قبلاً باز کردیم استفاده خواهیم کرد: ⦁ (myprojectenv) $ uwsgi –socket 0.0.0.0:5000 –protocol=http -w wsgi:app ⦁ آدرس IP سرور مجازی خود را به همراه 5000 در ادامه اش بازدید کنید http: // your_server_ip: 5000 باید دوباره خروجی برنامه خود را مشاهده کنید:
وقتی تأیید کرد که به درستی کار میکند ، CTRL-C را در پنجره ترمینال خود فشار دهید. اکنون محیط مجازی خود را ایجاد کرده ایم ، بنابراین می توانیم آن را غیرفعال کنیم: ⦁ (myprojectenv) $ deactivate ⦁
هر دستور پایتون اکنون دوباره از محیط پایتون سیستم استفاده خواهد کرد. ایجاد یک فایل پیکربندی uWSGI آزمایش کرده اید که uWSGI قادر به ارائه برنامه شما است ، اما در نهایت برای استفاده طولانی مدت چیزی قوی تر می خواهید. می توانید با استفاده از گزینه های مربوطه ، یک فایل پیکربندی uWSGI ایجاد کنید. بیایید آن فایل را در فهرست پروژه خود قرار دهیم و آن را myproject.ini بنامیم: ⦁ $ nano ~/myproject/myproject.ini ⦁ در داخل ، با عنوان [uwsgi] شروع خواهیم کرد تا uWSGI بداند که می تواند تنظیمات را اعمال کند. دو مورد را مشخص خواهیم کرد: خود ماژول با مراجعه به فایل wsgi.py منهای پسوند و فراخوانی در فایل ، app: ~/myproject/myproject.ini [uwsgi] module = wsgi:app
در مرحله بعد ، به uWSGI خواهیم گفت که در حالت مستر راه اندازی شود و پنج فرآیند کارگر را برای ارائه درخواست های واقعی ایجاد کند: ~/myproject/myproject.ini [uwsgi] module = wsgi:app
master = true processes = 5
هنگام آزمایش ، uWSGI را در پورت شبکه قرار داده اید. با این حال ، می توانید از Nginx برای رسیدگی به اتصالات واقعی کلاینت استفاده کنید ، که سپس درخواست ها را به uWSGI منتقل می کند. از آنجا که این مولفه ها در همان رایانه کار می کنند ، سوکت یونیکس ترجیح داده می شود زیرا سریع تر و ایمن تر است. بیایید سوکت را myproject.sock بنامیم و در این دیرکتوری قرار دهیم. بیایید مجوزهای موجود در سوکت را نیز تغییر دهیم. بعداً به گروه Nginx مالکیت پروسه uWSGI را می دهیم ، بنابراین باید اطمینان حاصل کنیم که مالک گروه سوکت می تواند اطلاعاتی را از آن بخواند و برای آن بنویسد. ما همچنین با اضافه کردن گزینه vacuum ، سوکت را تمیز کنیم: ~/myproject/myproject.ini [uwsgi] module = wsgi:app
master = true processes = 5
socket = myproject.sock chmod-socket = 660 vacuum = true
آخرین کاری که انجام خواهیم داد اینست که گزینه die-on-term  را تنظیم کنیم. این می تواند اطمینان حاصل کند که سیستم init و uWSGI پیش فرض های یکسانی در مورد معنی هر سیگنال فرآیند دارند. تنظیم این دو مؤلفه سیستم ، رفتار مورد انتظار را اجرا می کند: ~/myproject/myproject.ini [uwsgi] module = wsgi:app
master = true processes = 5
socket = myproject.sock chmod-socket = 660 vacuum = true
die-on-term = true
شاید متوجه شده باشید که ما پروتکلی مانند خط فرمان مشخص نکردیم. دلیل این است که به طور پیش فرض ، uWSGI با استفاده از پروتکل uwsgi ، یک پروتکل باینری سریع طراحی شده برای برقراری ارتباط با دیگر سرور مجازی ها ، ارتباط برقرار می کند. Nginx می تواند این پروتکل را به صورت بومی اجرا کند ، بنابراین بهتر است از این استفاده کنید به جای اینکه مجبور به برقراری ارتباط توسط HTTP شوید. پس از اتمام ، فایل را ذخیره کنید و ببندید. مرحله 5 – ایجاد یک فایل واحد سیستماتیک در مرحله بعدی ، بیایید فایل واحد خدمات سیستمی سرویس را ایجاد کنیم. ایجاد یک فایل واحد سیستمی به سیستم اولیه Ubuntu امکان می دهد تا UWSGI را به طور خودکار شروع کرده و هر زمان که سرور مجازی بوت میشود ، سرویس Flask را ارائه دهد. برای شروع یک فایل واحد که به service . ختم میشود در دیرکتوری /etc/systemd/system ایجاد می کنیم: ⦁ $ sudo nano /etc/systemd/system/myproject.service ⦁ در داخل ، با بخش [Unit] شروع خواهیم کرد ، که برای مشخص کردن ابرداده و متعلقات استفاده می شود. بیایید شرح خدمات خود را در اینجا قرار دهیم و به سیستم init بگوییم که فقط پس از رسیدن به هدف شبکه ، سیستم را شروع کند: /etc/systemd/system/myproject.service [Unit] Description=uWSGI instance to serve myproject After=network.target
سپس ، اجازه دهید بخش [Service] را باز کنیم. با این کار کاربر و گروهی را که می خواهیم تحت روند کار قرار بگیرند مشخص می کند. بیایید مالکیت این فرآیند را به حساب کاربری معمول خود بدهیم زیرا این فایل در اختیار همه فایل های مربوطه است. همچنین بیایید مالکیت گروه را به گروه www-data واگذار کنیم تا Nginx بتواند به راحتی با فرآیندهای uWSGI ارتباط برقرار کند. به یاد داشته باشید که نام کاربری خود را در اینجا جایگزین کنید: /etc/systemd/system/myproject.service [Unit] Description=uWSGI instance to serve myproject After=network.target
[Service] User=sammy Group=www-data
در مرحله بعدی ، بگذارید دیرکتوری کار را مشخص کنیم و متغیر محیطی PATH را تنظیم کنیم تا سیستم اولیه بداند که موارد اجرایی این فرآیند در محیط مجازی ما قرار دارند. بیایید فرمان شروع سرویس را نیز مشخص کنیم. Systemd نیاز دارد که ما مسیر کامل را به uWSGI قابل اجرا که در محیط مجازی ما نصب شده است ، واگذار کنیم. نام فایل پیکربندی .ini را که در دیرکتوری پروژه خود ایجاد کرده ایم ، ارسال خواهیم کرد. به یاد داشته باشید که نام کاربری و مسیر پروژه را با اطلاعات شخصی خود جایگزین کنید: /etc/systemd/system/myproject.service [Unit] Description=uWSGI instance to serve myproject After=network.target
[Service] User=sammy Group=www-data WorkingDirectory=/home/sammy/myproject Environment=”PATH=/home/sammy/myproject/myprojectenv/bin” ExecStart=/home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini
در آخر ، بیایید یک بخش [Install] اضافه کنیم. اگر سیستم را فعال کنیم که در بوت شروع شود ، به چه سیستم میگوید که به این سرویس چه چیزی وصل کند. ما می خواهیم با شروع به کار سیستم معمولی چند کاربره ، این سرویس شروع شود: /etc/systemd/system/myproject.service [Unit] Description=uWSGI instance to serve myproject After=network.target
[Service] User=sammy Group=www-data WorkingDirectory=/home/sammy/myproject Environment=”PATH=/home/sammy/myproject/myprojectenv/bin” ExecStart=/home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini
[Install] WantedBy=multi-user.target
با این کار ، فایل سرویس سیستمی ما کامل است. اکنون آن را ذخیره کنید و ببندید. اکنون می توانیم سرویس uWSGI را که ایجاد کردیم شروع کنیم و آن را فعال کنیم تا در بوت شروع شود: ⦁ $ sudo systemctl start myproject ⦁ ⦁ $ sudo systemctl enable myproject
بگذارید وضعیت را بررسی کنیم: ⦁ $ sudo systemctl status myproject ⦁ باید خروجی مانند این را مشاهده کنید: Output ● myproject.service – uWSGI instance to serve myproject Loaded: loaded (/etc/systemd/system/myproject.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-07-13 14:28:39 UTC; 46s ago Main PID: 30360 (uwsgi) Tasks: 6 (limit: 1153) CGroup: /system.slice/myproject.service ├─30360 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini ├─30378 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini ├─30379 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini ├─30380 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini ├─30381 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini └─30382 /home/sammy/myproject/myprojectenv/bin/uwsgi –ini myproject.ini
در صورت مشاهده هر گونه خطا ، حتما آنها را قبل از ادامه آموزش برطرف کنید. مرحله 6 – پیکربندی Nginx در درخواستهای پروکسی سرور مجازی برنامه uWSGI ما باید اکنون به روز و در حال اجرا و منتظر درخواست هایی روی فایل سوکت در دیرکتوری پروزه باشد. بیایید Nginx را پیکربندی کنیم تا درخواست های وب را با استفاده از پروتکل uwsgi به آن سوکت منتقل کنیم. با ایجاد یک فایل پیکربندی بلوک جدید سرور مجازی در دیرکتوری sites-available Nginx شروع کنید. بیایید این پروژه را myproject بنامیم تا با بقیه راهنما مطابقت داشته باشد: ⦁ $ sudo nano /etc/nginx/sites-available/myproject ⦁
یک بلوک سرور مجازی باز کنید و به Nginx بگویید که به پورت پیش فرض 80 گوش کند. بیایید به آن نیز بگوییم که از این بلوک برای درخواست های نام دامنه سرور مجازی ما استفاده کند: /etc/nginx/sites-available/myproject server { listen 80; server_name your_domain www.your_domain; }
سپس ، بیایید یک بلوک موقعیت مکانی اضافه کنیم که مطابق با هر درخواست باشد. در این بلوک ، فایل uwsgi_params را وارد خواهیم کرد که پارامترهای کلی UWSGI مورد نیاز برای تنظیم را مشخص می کند. سپس درخواستها را به سوکت تعریف شده با استفاده از بخشنامه uwsgi_pass ارسال خواهیم کرد: /etc/nginx/sites-available/myproject server { listen 80; server_name your_domain www.your_domain;
location / { include uwsgi_params; uwsgi_pass unix:/home/sammy/myproject/myproject.sock; } }
پس از اتمام فایل را ذخیره کنید و ببندید. برای فعال کردن پیکربندی بلوک سرور مجازی Nginx که اخیراً ایجاد کرده اید ، فایل را به دیرکتوری sites-enabled پیوند دهید: ⦁ $ sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled ⦁ با قرارگیری فایل در آن دیرکتوری ، می توانیم با تایپ کردن دستور زیر خطاهای نحوی را آزمایش کنیم: ⦁ $ sudo nginx -t ⦁ اگر بدون نشان دادن مشکلی بازگشت ، فرایند Nginx را دوباره شروع کنید تا پیکربندی جدید را بخوانید: ⦁ $ sudo systemctl restart nginx ⦁ در آخر ، اجازه دهید دوباره فایروال را تنظیم کنیم. دیگر نیازی به دسترسی از طریق پورت 5000 نداریم ، بنابراین می توانیم این قانون را حذف کنیم. سپس می توانیم به رسرور مجازی Nginx دسترسی داشته باشیم: ⦁ $ sudo ufw delete allow 5000 ⦁ ⦁ $ sudo ufw allow ‘Nginx Full’
اکنون باید بتوانید در مرورگر وب خود به نام دامنه سرور مجازی خود بروید: http: // your_domain باید خروجی برنامه خود را مشاهده کنید:
اگر با خطایی مواجه شدید ، موارد زیر را بررسی کنید: ⦁ sudo less /var/log/nginx/error.log ورودهای مربوط به خطای Nginx را بررسی می کند. ⦁ sudo less /var/log/nginx/access.log ورودهای مربوط به دسترسی Nginx را بررسی می کند. ⦁ sudo journalctl -u nginx ورود های مربوط به فرآیند Nginx را بررسی می کند. ⦁ sudo journalctl -u myproject ورود های UWSGI برنامه Flask شما را بررسی می کند. مرحله 7 – امنیت برنامه برای اطمینان از ایمن ماندن ترافیک به سرور مجازی شما ، اجازه دهید یک گواهی SSL برای دامنه شما دریافت کنیم. روش های مختلفی برای این کار وجود دارد ، از جمله دریافت گواهینامه رایگان از Let’s Encrypt ، تولید یک گواهی خود امضا شده یا خرید از ارائه دهنده دیگر و پیکربندی Nginx برای استفاده از آن با دنبال کردن مراحل 2 تا 6 نحوه ایجاد یک گواهی SSL خود امضا شده برای Nginx در اوبونتو 18.04. به خاطر صلاحدید ، گزینه ی اول را انتخاب میکنیم. ابتدا مخزن Certbot Ubuntu را اضافه کنید: ⦁ $ sudo add-apt-repository ppa:certbot/certbot ⦁ برای قبول باید ENTER را فشار دهید. در مرحله بعدی ، بسته Nginx Certbot را با apt نصب کنید: ⦁ $ sudo apt install python-certbot-nginx ⦁ Certbot روشهای مختلفی برای به دست آوردن گواهینامه های SSL از طریق افزونه ها ارائه می دهد. افزونه Nginx از پیکربندی مجدد Nginx و لود مجدد در صورت لزوم ، مراقبت خواهد کرد. برای استفاده از این افزونه ، دستور زیر را تایپ کنید: ⦁ $ sudo certbot –nginx -d your_domain -d www.your_domain ⦁
این دستور certbot  را با افزونه –nginx با استفاده از -d اجرا میکند تا نام هایی که می خواهیم گواهی برای آنها اعتبار داشته باشد ، مشخص شوند. اگر اولین بار است که certbot  را اجرا میکنید ، از شما خواسته می شود که آدرس ایمیل را وارد کنید و با شرایط سرویس موافقت کنید. بعد از انجام این کار ، certbot با سرور مجازی Let’s Encrypt ارتباط برقرار می کند ، سپس برای تأیید اینکه دامنه مورد نظر خود را کنترل می کنید ، یک چالش را اجرا کنید. اگر موفقیت آمیز باشد ، certbot از شما می پرسد که می خواهید تنظیمات HTTPS خود را چگونه پیکربندی کنید. Output Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ——————————————————————————- 1: No redirect – Make no further changes to the webserver configuration. 2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you’re confident your site works on HTTPS. You can undo this change by editing your web server’s configuration. ——————————————————————————- Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):
انتخاب خود را مشخص کنید و سپس ENTER بزنید. پیکربندی به روز خواهد شد ، و Nginx مجدد لود می شود تا تنظیمات جدید را انتخاب کند. certbot با پیغامی همراه خواهد بود که به شما می گوید روند موفقیت آمیز بوده و گواهی نامه های شما در کجا ذخیره شده است: Output IMPORTANT NOTES: – Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your cert will expire on 2018-07-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the “certonly” option. To non-interactively renew *all* of your certificates, run “certbot renew” – Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. – If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
اگر دستورالعمل نصب Nginx را در پیش شرط ها دنبال کردید ، دیگر نیازی به اجازه پروفایل HTTP نخواهید داشت: ⦁ $ sudo ufw delete allow ‘Nginx HTTP’ ⦁ برای تأیید پیکربندی ، اجازه دهید یکبار دیگر با استفاده از https: // به دامنه خود برویم https: // your_domain باید یک بار دیگر خروجی برنامه خود را همراه با نشانگر امنیتی مرورگر خود مشاهده کنید ، که باید نشانگر امنیت سایت باشد. نتیجه در این راهنما ، یک برنامه ساده Flask را در یک محیط مجازی Python ایجاد و ایمن کرده اید. یک نقطه ورود WSGI ایجاد کردید تا هر سرور مجازی برنامه WSGI قادر به استفاده از آن باشد و سپس سرور مجازی برنامه uWSGI را برای ارائه این عملکرد پیکربندی نمودید. پس از آن ، یک فایل خدمات سیستمی ایجاد کردید تا سرور مجازی برنامه به صورت خودکار راه اندازی شود. همچنین یک بلوک سرور مجازی Nginx ایجاد کردید که ترافیک کلاینت وب را به سرور مجازی برنامه منتقل می کند ، درخواست های خارجی را منتقل می کند و با Let’s Encrypt ، سرور مجازی شما را ایمن نماید. Flask یک چارچوب بسیار ساده اما بسیار انعطاف پذیر به معنای ارائه برنامه ها با قابلیت های زیاد بدون محدودیت در ساختار و طراحی است. می توانید از خدمات پشته عمومی که در این راهنما تشریح شده است استفاده کنید تا بتوانید کاربردهای Flask را که طراحی کرده اید ارائه دهید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهید
نحوه ایجاد نماها (Views) برای توسعه وب Django
نصب Mount NFS در اوبونتو 20.04
نحوه توسعه برنامه ها در Kubernetes با Okteto
نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04
نحوه تنظیم Jupyter Notebook با پایتون در Ubuntu 20.04
نصب Jitsi Meet در Debian 10
نصب و پیکربندی Nextcloud در اوبونتو 20.04
نصب و پیکربندی Ansible در اوبونتو 20.04
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
Flask
,
Nginx
,
Python
,
uWSGI
0 notes
vpsgol58-blog · 4 years
Text
نصب و پیکربندی Postfix در اوبونتو 20.04
Postfix یک عامل انتقال ایمیل (MTA) است ، که برای هدایت و دریافت ایمیل در سیستم لینوکس استفاده می شود. پیش بینی میشود حدود 25 درصد سرور مجازی های ایمیل عمومی در اینترنت Postfix را اجرا میکنند. در این راهنما ، نحوه نصب و پیکربندی Postfix را در سرور مجازی Ubuntu 20.04 یاد خواهید گرفت. سپس با نصب s-nail ، یک نماینده کاربر ایمیل (MUA) ، که به کلاینت ایمیل نیز شناخته میشود، آزمایش می کنید که آیا Postfix قادر است به درستی ایمیل را مسیریابی کند. توجه داشته باشید که هدف از این آموزش این است که به شما کمک کند تا فقط با برخی از قابلیت های معمول ایمیل، سریعا Postfix را راه اندازی و اجرا کنید. در پایان این راهنما یک سرور مجازی ایمیل تمام عیار ندارید ، اما برخی از مؤلفه های اساسی چنین ستاپی را برای کمک به شما در شروع کار خواهید داشت. پیش نیازها برای پیروی از این راهنما ، موارد زیر را لازم دارید: • سرور مجازی دارای Ubuntu 20.04 که به عنوان سرور مجازی ایمیل Postfix شما فعالیت می کند. این سرور مجازی باید دارای یک کاربر غیر ریشه با امتیازات sudo و فایروال تنظیم شده با UFW باشد. برای تنظیم این گزینه می توانید راهنمای ستاپ اولیه سرور مجازی Ubuntu 20.04 را دنبال کنید. • یک نام دامنه کاملاً واجد شرایط که به سرور مجازی Ubuntu 20.04 شما اشاره کند. توجه داشته باشید که اگر قصد دسترسی به ایمیل از یک مکان خارجی را دارید ، باید مطمئن شوید که یک رکورد MX دارید که به سرور مجازی ایمیل شما نیز اشاره کند. توجه داشته باشید که این آموزش با این فرض پیش میرود که شما هاستی را پیکربندی می کنید که دارای FQDN mail.example.com میباشد. در صورت لزوم ، حتماً example.com یا mail.example.com را تغییر دهید تا FQDN شما را منعکس کند. مرحله 1 – نصب Postfix Postfix در مخازن پیش فرض اوبونتو گنجانده شده است ، بنابراین می توانید آن را با APT نصب کنید. برای شروع ، حافظه نهان بسته محلی apt خود را به روز کنید: $ sudo apt update
سپس بسته ی postfix را با دستور زیر نصب کنید. توجه داشته باشید که در اینجا ما متغیر محیطی DEBIAN_PRIORITY=low را در این دستور نصب وارد میکنیم. این امر باعث می شود فرآیند نصب از شما بخواهد برخی گزینه های اضافی را پیکربندی کنید: $ sudo DEBIAN_PRIORITY=low apt install postfix
این فرآیند نصب یک سری اعلان های تعاملی را باز می کند. برای اهداف این آموزش ، از اطلاعات زیر برای پر کردن فرم های خود استفاده کنید: • نوع کلی پیکربندی ایمیل؟برای این، Internet Site را انتخاب کنید چرا که با تیازهای فراساختاری مطابقت دارد. • نام ایمیل سیستم: این دامنه اصلی است که برای ساختن یک آدرس ایمیل معتبر استفاده می شود هنگامی که فقط بخش حساب آدرس داده می شود. به عنوان مثال ، نام میزبان سرور مجازی شما mail.example.com است. به احتمال زیاد باید نام ایمیل سیستم را به صورت example.com قرار دهید تا با توجه به نام کاربری user1 ، Postfix از آدرس [email protected] استفاده کند. • گیرنده ایمیل Root و postmaster: این حساب لینوکس است که از طریق ایمیل به root @ و postmaster @ ارسال می شود. برای این کار از حساب اصلی خود استفاده کنید. در این مورد مثال ، Sammy . • سایر مقاصد برای پذیرش ایمیل: مقصد پستی را که این نمونه Postfix می پذیرد تعیین می کند. اگر لازم است دامنه دیگری را که این سرور مجازی مسئول دریافت آن است اضافه کنید ، آنها را در اینجا اضافه کنید. در غیر این صورت ، پیش فرض کافی خواهد بود. • اجبار به روزرسانی های همزمان در صف ایمیل ؟: از آنجا که به احتمال زیاد از یک سیستم فایل ژورنال دار استفاده می کنید ، no را در اینجا بپذیرید. • شبکه های محلی: لیستی از شبکه هایی است که سرور مجازی ایمیل شما برای تقویت پیام های آن ها پیکربندی شده است. پیش فرض برای بیشتر سناریوها کار خواهد کرد. اگر می خواهید آن را تغییر دهید ، مطمئن شوید که از نظر دامنه شبکه بسیار محدود باشد. • محدودیت اندازه صندوق پستی: این می تواند برای محدود کردن اندازه پیام ها استفاده شود. تنظیم آن بر روی 0 محدودیت اندازه را غیرفعال می کند. • کاراکتر پسوند آدرس محلی: کاراکتری است که می تواند برای جدا کردن قسمت معمول آدرس از یک پسوند (برای ایجاد نام های مستعار پویا استفاده شود) استفاده می شود. به طور پیش فرض ، + برای این آموزش کار خواهد کرد. • پروتکل های اینترنت برای استفاده: انتخاب کنید آیا نسخه IP را که Postfix از آن پشتیبانی می کند محدود کنید یا خیر. برای اهداف این آموزش ، all را انتخاب کنید. برای بیان صریح تر ، این تنظیمات مورد استفاده در این راهنماست: نوع کلی پیکربندی ایمیل: سایت اینترنتی نام ایمیل سیستم: example.com (نه mail.example.com) گیرنده ایمیل Root و postmaster: نام کاربری حساب لینوکس اولیه (در این مثال ها sammy ) سایر مقاصد برای پذیرش ایمیل: $myhostname, example.com, mail.example.com, localhost.example.com,localhost اجبار به روزرسانی های همزمان در صف ایمیل : خیر شبکه های محلی: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 محدودیت اندازه صندوق پستی: 0 کاراکتر پسوند آدرس محلی: + پروتکل های اینترنت برای استفاده:al
توجه: اگر نیاز به بازگشت برای تغییر این تنظیمات داشتید ، می توانید با تایپ کردن دستور زیر این کار را انجام دهید: $ sudo dpkg-reconfigure postfix
اعلان ها با پاسخ های قبلی شما ، از قبل پر می شوند. پس از اتمام مراحل نصب ، می توانید چند نسخه به روزرسانی پیکربندی Postfix خود را انجام دهید. مرحله 2 – تغییر پیکربندی Postfix اکنون می توانید برخی تنظیمات را انجام دهید که روند نصب بسته از شما نخواسته بود. بسیاری از تنظیمات پیکربندی Postfix در فایل /etc/postfix/main.cf تعریف شده اند. به جای ویرایش مستقیم این فایل ، می توانید از دستور postconf Postfix برای پرس و جو یا تعیین تنظیمات پیکربندی استفاده کنید. برای شروع ، لوکیشن را برای صندوق پستی کاربر غیر ریشه اوبونتو تنظیم کنید. در این راهنما ، ما از قالب Maildir استفاده خواهیم کرد ، که پیام ها را به فایل های جداگانه که بر اساس عملکرد کاربر بین دایرکتوری ها منتقل می شوند ، جدا می کند. گزینه دیگری که در این راهنما پوشش داده نشده است ، فرمت mbox است که تمام پیام ها را در یک فایل واحد ذخیره می کند. متغیر home_mailbox را روی Maildir/ تنظیم کنید. سپس ، یک ساختار دایرکتوری تحت این نام در دیرکتوری هوم کاربر خود ایجاد خواهید کرد. home_mailbox را با تایپ کردن دستور زیر پیکربندی کنید: $ sudo postconf -e ‘home_mailbox= Maildir/’
در مرحله بعدی ، مکان جدول virtual_alias_maps را تنظیم کنید ، که نقشه های ایمیل دلخواه را به حساب های سیستم لینوکس نگاشت می کند. دستور زیر را اجرا کنید ، که نقشه جدول را در یک فایل پایگاه داده هش به نام / etc / postfix / virtual نگاشت می کند: $ sudo postconf -e ‘virtual_alias_maps= hash:/etc/postfix/virtual’
اکنون که مکان فایل نقشه های مجازی را در فایل main.cfخود تعریف کرده اید ، می توانید خود این فایل را ایجاد کرده و نگاشت حساب های ایمیل را به حساب کاربری در سیستم لینوکس خود شروع کنید. فایل را با ویرایشگر متن مورد نظر خود ایجاد کنید. در این مثال ، ما از nano استفاده خواهیم کرد: $ sudo nano /etc/postfix/virtual
آدرسهایی را که مایلید ایمیل را برای آن بپذیرید ، لیست کنید و به دنبال آن فضای سفید و کاربر لینوکس را که دوست دارید ایمیل را به ان تحویل دهید. به عنوان مثال ، اگر می خواهید ایمیل را در آدرس [email protected] و [email protected] بپذیرید و دوست دارید آن ایمیل ها را به کاربر sammy Linux تحویل دهید ، می توانید فایل خود را مانند این تنظیم کنید: /etc/postfix/virtual [email protected] sammy [email protected] sammy
پس از نگاشت همه آدرس ها به حساب های سرور مجازی مناسب ، فایل را ذخیره کنید و ببندید. اگر از nano استفاده کرده اید ، این کار را با فشار دادن CTRL + X ، Y ، سپس ENTER انجام دهید. نگاشت را با تایپ این دستور اعمال کنید: $ sudo postmap /etc/postfix/virtual فرایند Postfix را مجدداً راه اندازی کنید تا مطمئن شوید که تمام تغییرات شما اعمال شده است: $ sudo systemctl restart postfix
با فرض اینکه از راهنمای ستاپ اولیه پیروی کرده اید ، فایروال را با UFW پیکربندی نموده اید. این فایروال به طور پیش فرض اتصالات خارجی را به سرویس های روی سرور مجازی شما مسدود می کند مگر اینکه این اتصالات به صراحت مجاز باشند ، بنابراین باید یک قانون فایروال اضافه کنید تا استثنائی برای Postfix داشته باشید. می توانید با تایپ دستور زیر، اجازه اتصالات به سرویس را بدهید: $ sudo ufw allow Postfix
با این کار ، Postfix پیکربندی شده و آماده پذیرش اتصالات خارجی است. با این حال ، شما هنوز آمادگی آزمایش آن را با یک سرویس گیرنده ایمیل ندارید. قبل از اینکه بتوانید کلاینت را نصب کنید و از آن برای تعامل با ایمیل ارسال شده به سرور مجازی خود استفاده کنید ، لازم است چند تغییر در تنظیمات سرور مجازی اوبونتو انجام دهید. مرحله 3 – نصب کلاینت پست الکترونیکی و اولیه سازی ساختار Maildir به منظور تعامل با ایمیل تحویل داده شده ، این مرحله شما را با روند نصب بسته s-s-nail آشنا می کند. یک متغیر پر از ویژگی از کلاینت xmail BSD است که می تواند فرمت Maildir را به درستی اداره کند. اما قبل از نصب کلاینت ، منطقی است که مطمئن شوید متغیر محیط MAIL شما به درستی تنظیم شده است. s-nailبه دنبال این متغیر است تا بفهمد کجا می تواند ایمیل را برای کاربر شما پیدا کند. برای اطمینان از تنظیم متغیر MAIL بدون توجه به نحوه دسترسی به حساب کاربری خود – خواه از طریق ssh، su، su – یا sudo، به عنوان مثال – باید متغیر را در فایل /etc/bash.bashrc تنظیم کرده و اضافه کنید. آن را به فایلی در /etc/profile.d اضافه کنید تا مطمئن شوید که به طور پیش فرض برای همه کاربران تنظیم شده است. برای افزودن متغیر به این فایل ها ، دستور زیر را تایپ کنید: $ echo ‘export MAIL=~/Maildir’ | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh
برای خواندن متغیر در بخش فعلی ، فایل /etc/profile.d/mail.sh را وارد کنید: $ source /etc/profile.d/mail.sh
با کامل شدن آن ، کلاینت ایمیل s-nail را با APT نصب کنید: $ sudo apt install s-nail
قبل از اجرای کلاینت ، چند تنظیمات وجود دارد که باید انجام دهید. فایل /etc/s-nail.rc را در ویرایشگر خود باز کنید: $ sudo nano /etc/s-nail.rc
در انتهای فایل گزینه های زیر را اضافه کنید: /etc/s-nail.rc . . . set emptystart set folder=Maildir set record=+sent
در اینجا عملکرد این خطوط آورده شده است: set emptystart به کلاینت اجازه می دهد حتی با یک صندوق ورودی خالی باز شود set folder=Maildir دیرکت.ری Maildir را روی متغیر folder داخلی تنظیم می کند set record=+sent یک فایل mbox ارسال شده را برای ذخیره ایمیل ارسال شده در هر دیرکتوری به عنوان متغیر folder  ایجاد می کند ، در این حالت Maildir پس از اتمام فایل را ذخیره کنید و ببندید. اکنون آماده هستید تا ساختار Maildir سیستم را تنظیم کنید. یک راه سریع برای ایجاد ساختار Maildir در دیرکتوری هوم شما این است که به خودتان یک ایمیل با دستور s-nail ارسال کنید. از آنجا که فایل ارسال شده فقط پس از ایجاد Maildir در دسترس خواهد بود ، شما باید نوشتن آن را برای این ایمیل اولیه غیرفعال کنید. این کار را با عبور از گزینه -Snorecord انجام دهید. با اتصال یک رشته به دستور s-nail ، ایمیل را ارسال کنید. این دستور را تنظیم کنید تا کاربر Linux خود را به عنوان گیرنده علامت گذاری کند: $ echo ‘init’ | s-nail -s ‘init’ -Snorecord sammy
توجه: ممکن است پاسخ زیر را دریافت کنید: Output Can’t canonicalize “/home/sammy/Maildir” طبیعی است و ممکن است هنگام ارسال این پیام اول ظاهر شود.
با جستجوی دیرکتوری ~ / Maildir خود می توانید مطمئن شوید که دیرکتوری ایجاد شده است: $ ls -R ~/Maildir
خواهید دید که ساختار دایرکتوری ایجاد شده است و یک فایل پیام جدید در دیرکتوری ~ / Maildir / new موجود است: Output /home/sammy/Maildir/: cur new tmp
/home/sammy/Maildir/cur:
/home/sammy/Maildir/new: 1463177269.Vfd01I40e4dM691221.mail.example.com
/home/sammy/Maildir/tmp:
اکنون که ساختار دایرکتوری ایجاد شده است ، می توانید با مشاهده پیام init که ارسال کرده اید و ارسال یک پیام به آدرس ایمیل خراجی، کلاینت s-nail s را امتحان کنید. مرحله 5 – آزمایش کلاینت برای باز کردن کلاینت ، دستور s-nail را اجرا کنید: $ s-nail
در کنسول خود ، یک صندوق ورودی ابتدایی با پیام init  خواهید دید: Output s-nail version v14.9.15. Type `?’ for help “/home/sammy/Maildir”: 1 message 1 new >N 1 [email protected] 2020-05-19 15:40 14/392 init برای نمایش پیام، ENTER را فشار دهید: Output [– Message 1 — 14 lines, 369 bytes –]: From [email protected] Tue May 19 15:40:48 2020 Date: Tue, 19 May 2020 15:40:48 +0000 To: [email protected] Subject: init Message-Id: <[email protected]> From: [email protected]
init
می توانید با تایپ h و سپس ENTER به لیست پیام ها برگردید : ? h
Output >R 1 [email protected] 2020-05-19 15:40 14/392 init
توجه کنید که پیام اکنون حالت R دارد ، نشان می دهد که خوانده شده است. از آنجا که این پیام چندان مفید نیست ، می توانید با فشار دادن d آن را حذف کرده و سپس ENTER بزنید. ? d
برای بازگشت به ترمینال ، q و سپس ENTER را بزنید: ? q
به عنوان یک آزمایش نهایی ، بررسی کنید که آیا s-nail قادر به ارسال صحیح پیام های ایمیل است یا خیر. برای این کار می توانید همانند پیام init  که در مرحله قبل برای خود ارسال کردید ، محتویات یک فایل متنی را درون فرایند s-nail قرار دهید. با نوشتن پیام آزمایشی در ویرایشگر متن شروع کنید: $ nano ~/test_message
در داخل ، متنی را که می خواهید ارسال کنید ، وارد کنید: ~/test_message Hello,
This is a test. Please confirm receipt!
فایل را پس از نوشتن پیام خود ذخیره کنید و ببندید. سپس از دستور cat برای ارسال پیام به روند s-nail استفاده کنید. می توانید با مثال زیر این کار را انجام دهید: -s: خط موضوع پیام ایمیل را مشخص می کند -r: تغییر اختیاری در قسمت “from” ایمیل. به طور پیش فرض ، کاربر لینوکس که با آن وارد شده اید برای پر کردن این فیلد استفاده می شود. گزینه -r به شما امکان می دهد این مسئله را با یک آدرس معتبر ، مانند یکی از مواردی که در فایل / etc / postfix / virtual تعریف کرده اید ، پر کنید. برای نشان دادن ، دستور زیر از [email protected] استفاده می کند همچنین ، حتما [email protected] را به یک آدرس ایمیل معتبر که به آن دسترسی دارید تغییر دهید: $ cat ~/test_message | s-nail -s ‘Test email subject line’ -r [email protected] [email protected]
سپس ، برای آدرس ایمیلی که پیام را برای آن ارسال کرده اید ، به صندوق ورودی بروید. پیام خود را تقریباً فوراً خواهید دید. توجه: اگر پیام در صندوق ورودی شما نیست ، ممکن است به پوشه Spam تحویل داده شده باشد. می توانید پیام های ارسالی خود را در کلاینت s-nail خود مشاهده کنید. دوباره کلاینت تعاملی را شروع کنید: $ s-nail
از کلاینت ایمیل ، پیام های ارسالی خود را با تایپ کردن این دستور مشاهده کنید: ? file +sent
خروجی مانند این را خواهید دید: Output +[/home/sammy/Maildir/]sent: 1 message 1 new ▸N 1 [email protected] 2020-05-19 15:47 12/297 Test email subject line
می توانید ایمیل ارسال شده را با استفاده از همان دستوراتی که برای ایمیل های ورودی استفاده می کنید مدیریت کنید. نتیجه اکنون Postfix را در سرور مجازی Ubuntu 20.04 خود تنظیم کرده اید. مدیریت سرور مجازی های ایمیل می تواند یک کار سخت برای مدیران جدید سیستم باشد ، اما با این پیکربندی ، باید عملکرد ایمیل MTA کافی را برای شروع کار خود داشته باشید.
از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :
چگونه به Ubuntu 20.04 Focal Fossa ارتقا دهید
نحوه ایجاد نماها (Views) برای توسعه وب Django
نصب Mount NFS در اوبونتو 20.04
نحوه توسعه برنامه ها در Kubernetes با Okteto
نصب و پیکربندی Laravel با Nginx در اوبونتو 20.04
نحوه تنظیم Jupyter Notebook با پایتون در Ubuntu 20.04
نصب Jitsi Meet در Debian 10
نصب و پیکربندی Nextcloud در اوبونتو 20.04
نصب و پیکربندی Ansible در اوبونتو 20.04
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:
FQDN
,
Postfix
0 notes
vpsgol58-blog · 4 years
Text
نحوه توسعه برنامه ها در 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
مقدمه ای بر مدیریت پیکربندی با Ansible
نحوه نصب R روی اوبونتو 20.04
ارائه برنامه های Flask با uWSGI و Nginx در اوبونتو 18.04
نصب و پیکربندی Postfix در اوبونتو 20.04
خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –
برچسب‌ها:Golang, Kubernetes, Okteto CLI
1 note · View note