server majazi server majazi .

server majazi

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

Uغير مجاز مي باشدe:
command [options] [arguments]

Options:
-h, –help Display this help mesغير مجاز مي باشدe
-q, –quiet Do not output any mesغير مجاز مي باشدe
-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 mesغير مجاز مي باشدes: 1 for normal output, 2 for more verbose output and 3 for debug

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

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

LOG_CHANNEL=stack

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


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

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

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

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

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

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

index index.html index.htm index.php;

charset utf-8;

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

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

error_page 404 /index.php;

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

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

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

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

بايد خروجي مانند اين را مشاهده كنيد:
Output
⦁ $ nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

⦁ $ nginx: configuration file /etc/nginx/nginx.conf test is successful

براي اعمال تغييرات ، دوباره Nginx را با دستور زير لود كنيد:
⦁ $ sudo systemctl reload nginx

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

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

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

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

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

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

use IlluminateSupportFacadesDB;

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

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

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

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


Travel List


My Travel Bucket List


Places I’d Like to Visit



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

  • @endforeach

Places I’ve Already Been To



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

  • @endforeach


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

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

 

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

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

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

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

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

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

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

نصب Jitsi Meet در Debian 10

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

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

مقدمه اي بر مديريت پيكربندي با 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 ارزان – 

 

برچسب‌ها:


برچسب: ،
ادامه مطلب
امتیاز:
 
بازدید:
+ نوشته شده: ۱۸ خرداد ۱۳۹۹ساعت: ۰۲:۰۱:۵۱ توسط:malih موضوع:

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

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

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

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

⦁ $ sudo -H pip3 install virtualenv

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

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

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

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

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

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

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

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

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

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

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

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

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

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

where $x = 2$

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

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

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

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

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

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

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

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

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

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

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

نصب Jitsi Meet در Debian 10

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

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

مقدمه اي بر مديريت پيكربندي با 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 ارزان – 

 

برچسب‌ها:


برچسب: ،
ادامه مطلب
امتیاز:
 
بازدید:
+ نوشته شده: ۱۸ خرداد ۱۳۹۹ساعت: ۰۱:۵۵:۲۳ توسط:malih موضوع:

نحوه توسعه برنامه ها در 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 در دستگاه maغير مجاز مي باشد يا 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 ارزان – 

 

برچسب‌ها:


برچسب: ،
ادامه مطلب
امتیاز:
 
بازدید:
+ نوشته شده: ۱۸ خرداد ۱۳۹۹ساعت: ۰۱:۴۷:۱۱ توسط:malih موضوع:

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

 

برچسب‌ها:


برچسب: ،
ادامه مطلب
امتیاز:
 
بازدید:
+ نوشته شده: ۱۸ خرداد ۱۳۹۹ساعت: ۰۱:۳۹:۲۹ توسط:malih موضوع:

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

 

برچسب‌ها:


برچسب: ،
ادامه مطلب
امتیاز:
 
بازدید:
+ نوشته شده: ۱۸ خرداد ۱۳۹۹ساعت: ۰۱:۳۲:۵۶ توسط:malih موضوع:

مقدمه اي بر مديريت پيكربندي با 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 ارزان – 

 

برچسب‌ها:


برچسب: ،
ادامه مطلب
امتیاز:
 
بازدید:
+ نوشته شده: ۱۸ خرداد ۱۳۹۹ساعت: ۰۱:۲۱:۰۴ توسط:malih موضوع:

نحوه نصب 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 ” 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 ارزان – 

 

برچسب‌ها:


برچسب: ،
ادامه مطلب
امتیاز:
 
بازدید:
+ نوشته شده: ۱۸ خرداد ۱۳۹۹ساعت: ۰۱:۱۴:۳۲ توسط:malih موضوع:

ارائه برنامه هاي 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 “

Hello There!

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

 

برچسب‌ها:


برچسب: ،
ادامه مطلب
امتیاز:
 
بازدید:
+ نوشته شده: ۱۸ خرداد ۱۳۹۹ساعت: ۰۱:۰۷:۲۵ توسط:malih موضوع:

نصب Jitsi Meet در Debian 10

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

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

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

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

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

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

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

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

⦁ $ sudo ufw allow 443/tcp

⦁ $ sudo ufw allow 4443/tcp

⦁ $ sudo ufw allow 10000/udp

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

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

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

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

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

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

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

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

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

⦁ $ sudo apt install jitsi-meet

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

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

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

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

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

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

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

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

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

authentication = “anonymous”

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

authentication = “internal_plain”

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

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

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

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

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

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

anonymousdomain: ‘guest.your_domain’,

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

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

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

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

⦁ $ sudo systemctl restart jicofo.service

⦁ $ sudo systemctl restart jitsi-videobridge2.service

⦁ $ sudo systemctl restart nginx

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

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

 

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

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

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

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

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

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

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

نصب Jitsi Meet در Debian 10

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

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

مقدمه اي بر مديريت پيكربندي با 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 ارزان – 

 

برچسب‌ها:


برچسب: ،
ادامه مطلب
امتیاز:
 
بازدید:
+ نوشته شده: ۱۸ خرداد ۱۳۹۹ساعت: ۱۲:۵۸:۱۶ توسط:malih موضوع:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/home/sammy/Maildir/cur:

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

/home/sammy/Maildir/tmp:

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

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

init

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

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

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

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

به عنوان يك آزمايش نهايي ، بررسي كنيد كه آيا s-nail قادر به ارسال صحيح پيام هاي ايميل است يا خير. براي اين كار مي توانيد همانند پيام init  كه در مرحله قبل براي خود ارسال كرديد ، محتويات يك فايل متني را درون فرايند s-nail قرار دهيد.
با نوشتن پيام آزمايشي در ويرايشگر متن شروع كنيد:
$ nano ~/test_mesغير مجاز مي باشدe

در داخل ، متني را كه مي خواهيد ارسال كنيد ، وارد كنيد:
~/test_mesغير مجاز مي باشدe
Hello,

This is a test. Please confirm receipt!

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

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

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

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

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

 

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

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

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

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

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

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

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

نصب Jitsi Meet در Debian 10

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

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

مقدمه اي بر مديريت پيكربندي با Ansible

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

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

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

 

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

 

برچسب‌ها:


برچسب: ،
ادامه مطلب
امتیاز:
 
بازدید:
+ نوشته شده: ۱۸ خرداد ۱۳۹۹ساعت: ۱۲:۴۴:۰۰ توسط:malih موضوع:

بک لینک خرید - پسورد نود 32 -
سایت enfejar
بهترین سایت پیش بینی فوتبال
سایت betball90
انفجار آنلاین
جت بت ۹۰
betorward
وان ایکس بت
بکس بت
بت تایم 90 وی آی پی
بهترین سئو -
سایت شرط بندی سایت شرط بندی سایت شرط بندی سایت شرط بندی سایت شرط بندی سایت شرط بندی سایت شرط بندی سایت شرط بندی
سایت شرط بندی سایت شرط بندی سایت شرط بندی
سایت شرط بندی
وان ایکس بت
سایت بت بهترین سایت بازی انفجار جت بت سایت بت ۳۰۳ online casino
سایت شرط بندی ایل بت
سایت شرط بندی دل بت سایت شرط بندی دل بت سایت شرط بندی دل بت
پیش بینی ورزشی
sibbet90
سایت شرط بندی هات بت