vps

vps

نصب Nginx، MySQL، PHP در CentOS 7

يك پشته نرم افزاري LEMP گروهي از نرم افزارهاي منبع باز است كه به طور معمول در كنار هم نصب مي شوند تا سرور بتواند ميزبان وب سايت هاي پويا و برنامه هاي وب باشد. اين اصطلاح در واقع حاصل يك مخفف است كه سيستم عامل لينوكس ، با سرور وب ENginx (كه جايگزين مولفه Apache يك پشته LAMP مي شود) را نشان ميدهد. داده هاي سايت در يك پايگاه داده مبتني بر MySQL ذخيره مي شوند و محتواي پويا توسط PHP پردازش مي شود.
در اين راهنما ، يك پشته LEMP را با PHP 7.4 كه روي يك سرور CentOS 7 نصب شده است ، با استفاده از MariaDB به عنوان سيستم مديريت پايگاه داده ، دريافت خواهيم كرد. MariaDB به عنوان يك جايگزين براي سرور اصلي MySQL كار مي كند ، كه در عمل به اين معني است كه مي توانيد بدون نياز به ايجاد پيكربندي يا تغيير كد در برنامه ، به MariaDB سوييچ كنيد.
پيش نيازها
قبل از شروع اين راهنما ، بايد يك حساب كاربري جداگانه و غير ريشه در سرور خود تنظيم كنيد. با انجام مراحل 1-4 در تنظيم اوليه سرور براي CentOS 7 مي توانيد نحوه انجام اين كار را ياد بگيريد.
مرحله 1 – نصب Nginx
به منظور نمايش صفحات وب براي بازديد كنندگان سايت ، قصد داريم از Nginx ، سرور وبي با كارايي بالا استفاده كنيم. براي به دست آوردن آخرين نسخه Nginx ، ابتدا مخزن EPEL را نصب خواهيم كرد كه حاوي نرم افزار اضافي براي سيستم عامل CentOS 7 است.
براي اضافه كردن مخزن CentOS 7 EPEL ، دستور زير را اجرا كنيد:
⦁ $ sudo yum install epel-release

از آنجا كه ما از يك دستور sudo استفاده مي كنيم ، اين عمليات با امتيازات اصلي انجام مي شود. از شما رمزعبور كاربر معمولي را ميخواهد تا تأييد كند كه شما اجازه اجراي دستورات داراي امتيازات اصلي را داريد. همچنين از شما خواسته مي شود نصب را تأييد كنيد ، بنابراين Y را براي ادامه فشار دهيد.
اكنون كه مخزن EPEL روي سرور شما نصب شده است ، Nginx را با استفاده از دستور yum زير نصب كنيد:
⦁ $ sudo yum install nginx

پس از اتمام نصب ، سرويس Nginx را با اين دستور راه اندازي كنيد:
⦁ $ sudo systemctl start nginx

با مراجعه به آدرس IP عمومي سرور خود در مرورگر وب ، مي توانيد بلافاصله چك كنيد كه همه چيز مطابق پيش بيني جلو ميرود (اگر اين اطلاعات را نداريد ، ميتوانيد آدرس IP عمومي خود را در زير عنوان بعدي ببينيد):
Open in a web browser:
http://server_domain_name_or_IP/

صفحه پيش فرض CentOS 7 Nginx را مشاهده خواهيد كرد ، كه براي اهداف اطلاع رساني و آزمايش ميباشد. بايد چيزي شبيه به اين ببينيد:

اگر اين صفحه را مشاهده كرديد ، اكنون سرور وب شما به درستي نصب شده است.
براي فعال كردن Nginx در بوت ، دستور زير را اجرا كنيد:
⦁ $ sudo systemctl enable nginx

چگونه آدرس IP عمومي سرور خود را پيدا كنيد
اگر نمي دانيد آدرس IP عمومي سرور شما چيست ، روش هاي مختلفي براي يافتن آن وجود دارد. معمولاً آدرسي است كه شما براي اتصال به سرور خود از طريق SSH استفاده مي كنيد.
از خط فرمان مي توانيد اين چند روش را پيدا كنيد. ابتدا مي توانيد از ابزار iproute2 استفاده كنيد تا آدرس خود را دريافت كنيد:
⦁ $ ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s//.*$//’

اين دستور يك يا دو خط شما را به عقب باز مي گرداند. هر دو آدرس صحيح هستند ، اما رايانه شما فقط مي تواند يكي از آنها را استفاده ميكند ، بنابراين به راحتي هر يك را امتحان كنيد.
يك روش ديگر استفاده از يك جناح خارج است تا به شما بگويد سرور شما را چگونه مي بيند. مي توانيد با پرسيدن از يك سرور خاص آدرس IP خود را پيدا كنيد:
⦁ $ curl http://icanhazip.com

صرف نظر از روشي كه براي دريافت آدرس IP خود استفاده مي كنيد ، مي توانيد آن را در نوار آدرس مرورگر وب خود وارد كنيد تا به سرور خود برسيد.
مرحله 2 – نصب MariaDB
اكنون كه سرور وب خود را راه اندازي كرده ايم ، زمان آن است كه MariaDB ، يك جايگزين داخلي MySQL را نصب كنيد. MariaDB يك فورك توسعه يافته از سيستم مديريت پايگاه داده رابطه اي MySQL است.
باز هم ، مي توانيم از yum براي به دست آوردن و نصب نرم افزار خود استفاده كنيم. اين بار ، ما بسته هاي كمكي ديگري را نيز نصب خواهيم كرد كه در برقراري ارتباط با مؤلفه ها به ما كمك مي كنند:
⦁ $ sudo yum install mariadb-server mariadb

پس از اتمام نصب ، بايد MariaDB را با دستور زير شروع كنيم:
⦁ $ sudo systemctl start mariadb

اكنون كه پايگاه داده MariaDB ما در حال اجراست ، مي خواهيم يك اسكريپت امنيتي را اجرا كنيم كه برخي پيش فرض هاي پرخطر را حذف كرده و دسترسي به پايگاه داده ما را خاموش مي كند. اسكريپت تعاملي را با اجراي اين دستور شروع كنيد:
⦁ $ sudo mysql_secure_installation

اعلان از شما مي خواهد رمز عبور فعلي MariaDB خود را وارد كنيد. از آنجا كه شما به تازگي MariaDB را نصب كرده ايد ، به احتمال زياد رمز را نخواهيد داشت ، بنابراين با فشار دادن enter آن را خالي بگذاريد. سپس اعلان از شما سؤال مي كند كه آيا مي خواهيد رمز اصلي را تنظيم كنيد. پيش برويد و Y را وارد كنيد ، و دستورالعمل ها را دنبال كنيد:
mysql_secure_installation prompts:
Enter current password for root (enter for none):
OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!

براي بقيه سؤالات ، بايد مقادير پيش فرض را با زدن “ENTER” بپذيريد. اين كار باعث حذف برخي از كاربران و ديتابيس هاي نمونه ميشود، ورود به سيستم ريشه از راه دور غيرفعال مي شود و اين قوانين جديد را بارگذاري مي كند تا MySQL فوراً با تغييراتي كه ايجاد كرده ايم منطبق شود.
آخرين كاري كه بايد انجام دهيد اين است كه MariaDB را فعال كنيد كه در بوت شروع شود. براي انجام اين كار از دستور زير استفاده كنيد:
⦁ $ sudo systemctl enable mariadb

در اين مرحله ، سيستم پايگاه داده شما اكنون تنظيم شده است و ما مي توانيم پيش برويم.
مرحله 3 – نصب PHP
PHP مؤلفه اي از ستاپ ما است كه كد را براي نمايش محتواي پويا پردازش مي كند. اين برنامه مي تواند اسكريپت ها را اجرا كند ، براي بدست آوردن اطلاعات به پايگاه داده هاي MySQL ما متصل شود و محتواي پردازش شده را براي نمايش به سرور وب ما تحويل دهد.
نسخه PHP موجود به طور پيش فرض در سرورهاي CentOS 7 منسوخ شده است ، و به همين دليل ، بايد يك مخزن بسته شخص ثالث را نصب كنيم تا PHP 7+ را دريافت كرده و آن بر روي سرور CentOS 7نصب كنيم. Remi يك مخزن بسته محبوب است كه جديدترين نسخه هاي PHP را براي سرورهاي CentOS ارائه مي دهد.
براي نصب مخزن Remi براي CentOS 7 ، دستور زير را اجرا كنيد:
⦁ $ sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

پس از اتمام نصب ، بايد دستوري اجرا كنيد تا مخزن حاوي نسخه دلخواه PHP شما فعال شود. براي بررسي اينكه نسخه هاي PHP 7+ در مخزن Remi در دسترس هستند ، اين دستور را اجرا كنيد:
⦁ $ yum –disablerepo=”*” –enablerepo=”remi-safe” list php[7-9][0-9].x86_64

خروجي مانند اين را خواهيد ديد:
Output
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* remi-safe: mirrors.ukfast.co.uk
Available Packages
php70.x86_64 2.0-1.el7.remi remi-safe
php71.x86_64 2.0-1.el7.remi remi-safe
php72.x86_64 2.0-1.el7.remi remi-safe
php73.x86_64 2.0-1.el7.remi remi-safe
php74.x86_64 1.0-3.el7.remi remi-safe
php80.x86_64

در اين راهنما ، PHP 7.4 را نصب خواهيم كرد كه در حال حاضر به روزترين نسخه PHP است. براي فعال كردن بسته صحيح Remi براي نصب PHP 7.4 ، اجرا كنيد:
⦁ $ sudo yum-config-manager –enable remi-php74

اكنون مي توانيم پيش برويم و از yum براي نصب PHP استفاده كنيم. دستور زير كليه بسته هاي لازم را براي تنظيم PHP 7.4 در Nginx نصب مي كند و به آن اجازه مي دهد تا به پايگاه داده هاي مبتني بر MySQL متصل شود:
⦁ $ sudo yum install php php-mysqlnd php-fpm

براي تأييد اينكه PHP به عنوان نسخه انتخابي شما موجود است ، اين دستور را اجرا كنيد:
⦁ $ php –version

خروجي مانند اين را خواهيد ديد:
Output
PHP 7.4.5 (cli) (built: Apr 14 2020 12:54:33) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

اكنون PHP با موفقيت روي سيستم شما نصب شده است. در مرحله بعد ، بايد تغييراتي در تنظيمات پيش فرض ايجاد كنيم. براي تسهيل ويرايش فايل ها در CentOS ، ابتدا nano كه ويرايشگر متن كاربر پسند تري نسبت به vi است نصب خواهيم كرد:
⦁ $ sudo yum install nano

فايل پيكربندي /etc/php-fpm.d/www.conf را با استفاده از nano يا ويرايشگر مورد نظر خود باز كنيد:
⦁ $ sudo nano /etc/php-fpm.d/www.conf

اكنون به دنبال دستورالعمل هاي user  و group  باشيد. اگر از nano استفاده مي كنيد ، مي توانيد با فشردن CTRL + W اين عبارات را در فايل باز جستجو كنيد.
/etc/php-fpm.d/www.conf

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user’s group
; will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

توجه خواهيد كرد كه متغيرهاي كاربر و گروه روي apache تنظيم شده اند. ما بايد اين موارد را به nginx تغيير دهيم:
/etc/php-fpm.d/www.conf

; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

سپس ، دستورالعمل listen را پيدا كنيد. به طور پيش فرض ، php-fpm به هاست و پورت خاصي از طريق TCP گوش مي دهد. ما مي خواهيم اين تنظيمات را تغيير دهيم تا در يك فايل سوكت محلي شنود كند ، زيرا اين كار باعث بهبود عملكرد كلي سرور مي شود.
خط حاوي دستورالعمل listen را به شرح زير تغيير دهيد:
/etc/php-fpm.d/www.conf
listen = /var/run/php-fpm/php-fpm.sock;

در آخر ، ما بايد تنظيمات مالك و گروه را براي فايل سوكت كه اخيراً در دستورالعمل listen تعريف كرده ايم ، تغيير دهيم. دستورالعمل listen.owner ، listen.group و listen.mode را پيدا كنيد. اين خطوط بطور پيش فرض حذف مي شوند. با حذف علامت ; در شروع خط آنها را باطل كنيد. سپس ، مالك و گروه را به nginx تغيير دهيد:
/etc/php-fpm.d/www.conf
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

هنگام ويرايش ، فايل را ذخيره كنيد و ببنديد. اگر از nano استفاده مي كنيد ، اين كار را با فشار دادن CTRL + X ، سپس Y و ENTER انجام دهيد.
براي فعال و شروع سرويس php-fpm ، دستور زير را اجرا كنيد:
⦁ $ sudo systemctl start php-fpm

اكنون محيط PHP شما آماده است. در مرحله بعد ، Nginx را پيكربندي خواهيم كرد تا همه درخواست هاي ارسال شده براي اسكريپت هاي PHP توسط php-fpm پردازش شود.
مرحله 4 – پيكربندي Nginx براي پردازش صفحات PHP
اكنون همه اجزاي لازم نصب شده است. تنها تغيير پيكربندي كه بايد انجام دهيم اين است كه به Nginx بگوييم از پردازنده PHP ما براي محتواي پويا استفاده كند.
Nginx يك دايركتوري اختصاصي دارد كه مي توانيم با استفاده از بلوك سرور ، هر وب سايت هاست را به عنوان يك فايل پيكربندي جداگانه تعريف كنيم. در واقع شبيه به هاست هاي مجازي Apache است.
با وجود نصب پيش فرض ، اين دايركتوري خالي است. ما يك فايل جديد ايجاد خواهيم كرد تا به عنوان وب سايت پيش فرض PHP در اين سرور ، سرويس دهي كند ، كه باعث لغو بلوك سرور پيش فرض مشخص شده در فايل /etc/nginx/nginx.conf خواهد شد.
ابتدا يك فايل جديد را در ديركتوري /etc/nginx/conf.d باز كنيد:
⦁ $ sudo nano /etc/nginx/conf.d/default.conf

بلوك تعريف سرور PHP زير را در فايل پيكربندي خود كپي كنيد و فراموش نكنيد كه دستورالعمل server_name را جايگزين كنيد تا به نام دامنه يا آدرس IP سرور شما اشاره كند:
/etc/nginx/conf.d/default.conf
server {
listen 80;
server_name server_domain_or_IP;

root /usr/share/nginx/html;
index index.php index.html index.htm;

location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;

location = /50x.html {
root /usr/share/nginx/html;
}

location ~ .php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

پس از پايان كار ، فايل را ذخيره كنيد و ببنديد.
پس ، Nginx را مجدداً ريستارت كنيد تا تغييرات اعمال شود:
⦁ $ sudo systemctl restart nginx

اكنون سرور وب شما كاملاً تنظيم شده است. در مرحله بعدي ، ادغام PHP را با Nginx آزمايش خواهيم كرد.
مرحله 5 – تست پردازش PHP در وب سرور خود
اكنون كه سرور وب شما تنظيم شده است ، مي توانيم يك اسكريپت آزمايشي PHP ايجاد كنيم تا مطمئن شويم Nginx با كمك php-fpm به درستي اسكريپت هاي .php را اداره مي كند.
قبل از ايجاد اسكريپت ، ما در تنظيمات پيش فرض مالكيت در ريشه سند Nginx تغييري ايجاد خواهيم كرد ، به طوري كه كاربر sudo معمولي ما قادر به ايجاد فايل هايي در آن مكان باشد.
دستور زير مالكيت ريشه اصلي پيش فرض Nginx را به كاربر و گروهي به نام sammy تغيير مي دهد ، بنابراين حتماً نام كاربري و گروه هايلايت شده را در اين دستور جايگزين كنيد تا نام كاربري و گروه سيستم شما منعكس شود.
⦁ $ sudo chown -R sammy.sammy /usr/share/nginx/html/

اكنون يك صفحه PHP تست ايجاد ميكنيم تا مطمئن شويم كه سرور وب همانطور كه انتظار مي رود كار ميكند.
يك فايل PHP جديد با نام info.php در ديركتوري / usr / share / nginx / html ايجاد كنيد:
⦁ $ nano /usr/share/nginx/html/info.php

كد PHP زير اطلاعات مربوط به محيط PHP فعلي را كه روي سرور در حال اجرا است نمايش مي دهد:
/usr/share/nginx/html/info.php

phpinfo();

پس از اتمام ، فايل را ذخيره كنيد و ببنديد.
اكنون مي توانيم آزمايش كنيم كه آيا سرور وب ما مي تواند محتواي توليد شده توسط يك اسكريپت PHP را به درستي نمايش دهد. به مرورگر خود برويد و به نام ميزبان يا آدرس IP سرور خود كه به دنبال آن /info.phpنوشته شده است، دسترسي پيدا كنيد:
http://server_host_or_IP/info.php

صفحه اي شبيه به اين را مشاهده خواهيد كرد:

پس از بررسي اطلاعات مربوط به سرور PHP خود از طريق آن صفحه ، بهتر است فايل ايجاد شده را حذف كنيد زيرا حاوي اطلاعات حساسي در مورد محيط PHP و سرور CentOS شما است. براي حذف آن فايل مي توانيد از rm استفاده كنيد:
⦁ rm /usr/share/nginx/html/info.php

در صورت نياز بعداً مي توانيد اين فايل را دوباره بازيابي كنيد.
نتيجه
در اين راهنما ، با استفاده از Nginx به عنوان سرور وب و آخرين نسخه PHP ، يك پايه انعطاف پذير براي ارائه وب سايت هاي PHP و برنامه ها به بازديد كنندگان خود ايجاد كرديد. شما Nginx را به گونه اي تنظيم كرده ايد تا بتوانيد درخواست هاي PHP را از طريق php-fpm انجام دهيد ، همچنين يك پايگاه داده MariaDB را براي ذخيره اطلاعات وب سايت خود تنظيم نموده ايد.

 

برچسب‌ها:ENginxLEMPMariaDBNginxPHP 7.4

نصب و پيكربندي Elasticsearch در اوبونتو 18.04

Elasticsearch پلتفرمي براي جستجوي توزيعي و تجزيه و تحليل داده ها در زمان واقعي است. در واقع به دليل قابليت استفاده ، ويژگي هاي قدرتمند و مقياس پذيري آن يك انتخاب محبوب است.
اين مقاله نصب Elasticsearch ، پيكربندي آن براي موارد استفاده ، ايمن سازي نصب و شروع كار با سرور مجازي Elasticsearch را به شما آموزش ميدهد.
پيش نيازها
قبل از دنبال كردن اين آموزش ، به موارد زير نياز داريد:
سرور مجازي Ubuntu 18.04 با 4 گيگابايت حافظه رم و دو CPU كه با يك كاربر sudo غير ريشه تنظيم شده باشد. مي توانيد با دنبال كردن راه اندازي سرور مجازي اوليه با اوبونتو 18.04 به اين هدف برسيد
OpenJDK 11 نصب شده باشد
براي اين آموزش ، با حداقل مقدار CPU و RAM مورد نياز براي اجراي Elasticsearch كار خواهيم كرد. توجه داشته باشيد كه ميزان CPU ، RAM و حافظه ذخيره شده مورد نياز سرور مجازي Elasticsearch شما به ميزان تعداد ورود هايي كه انتظار داريد بستگي دارد.
مرحله 1 – نصب و پيكربندي Elasticsearch
مولفه هاي Elasticsearch در مخازن بسته پيش فرض اوبونتو در دسترس نيستند. اما مي توانند پس از افزودن ليست منبع بسته Elastic ، با APT نصب شوند.
به منظور محافظت از سيستم شما در برابر جعل بسته ، همه بسته ها با كليد امضاي Elasticsearch امضا شده اند. بسته هايي كه با استفاده از كليد تأييد شده اند توسط مدير بسته شما قابل اعتماد خواهند بود. در اين مرحله ، كليد GPG عمومي Elasticsearch را وارد كرده و به منظور نصب Elasticsearch ، ليست منبع بسته Elastic را اضافه مي كنيد.
براي شروع ، از cURL ، ابزار خط فرمان براي انتقال داده با URL ، براي وارد كردن كليد عمومي GPG Elasticsearch در APT استفاده كنيد. توجه داشته باشيد كه ما از آرگومان -fsSL براي بي صدا كردن روند و خطاهاي احتمالي (به جز خرابي سرور مجازي) استفاده مي كنيم و به cURL اجازه مي دهيم در صورت تغيير جهت درخواستي را در يك مكان جديد ارائه كند. خروجي دستور cURL را در برنامه apt-key قرار دهيد ، كه كليد عمومي GPG را به APT اضافه مي كند.
$ curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add –

در مرحله بعد ، ليست منبع Elastic را به فهرست منابع Source.list.d اضافه كنيد ، جايي كه APT به دنبال منابع جديد است:
$ echo “deb https://artifacts.elastic.co/packages/7.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

سپس ، ليست هاي بسته خود را به روز كنيد تا APT منبع جديد Elastic را بخواند:
$ sudo apt update

سپس با اين دستور Elasticsearch را نصب كنيد:
$ sudo apt install elasticsearch

اكنون Elasticsearch نصب شده است و آماده پيكربندي است.
مرحله 2 – پيكربندي Elasticsearch
براي پيكربندي Elasticsearch ، فايل هاي پيكربندي آن را ويرايش خواهيم كرد. Elasticsearch سه فايل پيكربندي دارد:
elasticsearch.yml براي پيكربندي Elasticsearch ، فايل اصلي پيكربندي
jvm.options براي پيكربندي تنظيمات ماشين مجازي جاوا (JVM) Elasticsearch
log4j2.properties براي پيكربندي ورود به سيستم Elasticsearch
براي اين آموزش ، ما به فايل elasticsearch.yml علاقه منديم ، كه بيشتر گزينه هاي پيكربندي در آن ذخيره شده است. اين فايل در ديركتوري / etc / elasticsearch قرار دارد.
از ويرايشگر متن دلخواه خود براي ويرايش فايل پيكربندي Elasticsearch استفاده كنيد. در اينجا ، ما از nano استفاده خواهيم كرد:
$ sudo nano /etc/elasticsearch/elasticsearch.yml

توجه: فايل پيكربندي Elasticsearch با فرمت YAML است ، به اين معني كه ما بايد قالب indentation را حفظ كنيم. مطمئن شويد كه هيچ فضاي اضافي با ويرايش اين فايل اضافه نمي كنيد.
فايل elasticsearch.yml گزينه هاي پيكربندي را براي خوشه ، گره ، مسيرها ، حافظه ، شبكه ، جستجو و گيت شما فراهم مي كند. بسياري از اين گزينه ها در فايل از قبل پيكربندي شده اند اما مي توانيد آنها را با توجه به نياز خود تغيير دهيد. براي اهداف نمايشي پيكربندي تك سرور مجازي ، فقط تنظيمات ميزبان شبكه را انجام خواهيم داد.
Elasticsearch ترافيك را از همه جاي پورت 9200 گوش مي دهد. بهتر است دسترسي بيروني به نمونه Elasticsearch را محدود كنيد تا از خواندن داده هاي خارجي خود جلوگيري كنيد يا خوشه Elasticsearch را از طريق API REST خود خاموش كنيد. براي محدود كردن دسترسي و در نتيجه افزايش امنيت ، خطي را كه شبكه را مشخص مي كند ، پيدا كنيد ، آن را حذف كنيد و مقدار آن را با localhost جايگزين كنيد ، بنابراين به اين شكل خواهد بود:
/etc/elasticsearch/elasticsearch.yml
. . .
# ———————————- Network ———————————–
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost
. . .

ما localhost را مشخص كرده ايم تا Elasticsearch به تمام رابط ها و IP هاي مرزي گوش كند. اگر مي خواهيد فقط به يك رابط خاص گوش دهيد ، مي توانيد IP آن را به جاي localhost مشخص كنيد. elasticsearch.yml را ذخيره كرده و ببنديد. اگر از nano استفاده مي كنيد ، مي توانيد با فشار دادن CTRL + X ، به دنبال آن Y و سپس ENTER اين كار را انجام دهيد.
اين حداقل تنظيماتي است كه مي توانيد با استفاده از Elasticsearch از آنها شروع كنيد. اكنون مي توانيد براي اولين بار Elasticsearch را راه اندازي كنيد.
سرويس Elasticsearch را با systemctl شروع كنيد. براي شروع كار چند لحظه به Elasticsearch وقت بدهيد تا راه اندازي شود. در غير اين صورت ، با خطاي عدم امكان اتصال مواجه شويد.
$ sudo systemctl start elasticsearch

سپس ، دستور زير را اجرا كنيد تا Elasticsearch بتواند هر بار كه سرور مجازي بوت مي شود راه‌اندازي گردد:
$ sudo systemctl enable elasticsearch

با فعال شدن Elasticsearch هنگام راه اندازي ، بياييد به سراغ بحث بعدي در مورد امنيت برويم.
مرحله 3 – امنيت Elasticsearch
به طور پيش فرض ، Elasticsearch توسط هر شخصي كه مي تواند به HTTP API دسترسي داشته باشد قابل كنترل است. اين هميشه يك خطر امنيتي نيست زيرا Elasticsearch فقط در رابط حلقه برگشت (يعني 127.0.0.1) كار ميكند ، كه فقط به صورت محلي قابل دسترسي است. بنابراين ، دسترسي عمومي امكان پذير نيست و تا زماني كه به همه كاربران سرور مجازي اعتماد داشته باشيد ، امنيت با مشكلي مواجه نخواهد بود.
اگر نياز به دسترسي از راه دور باHTTP API داريد ، مي توانيد ميزان قرار گرفتن در معرض شبكه را با فايروال پيش فرض اوبونتو ، UFW ، محدود كنيد. اگر مراحل پيش فرض راه اندازي سرور مجازي اوليه با آموزش اوبونتو 18.04 را دنبال كرده باشيد ، بايد اين فايروال فعال باشد.
اكنون فايروال را پيكربندي مي كنيم تا به پورت پيش فرض Elasticsearch HTTP API (TCP 9200) براي ميزبان از راه دور قابل اعتماد دسترسي پيدا كنيم ، كه به طور كلي سرور مجازي مورد استفاده شما در يك تنظيمات تك سرور مجازي ،مانند 198.51.100.0 است. براي دسترسي ، دستور زير را تايپ كنيد:
$ sudo ufw allow from 198.51.100.0 to any port 9200

پس از اتمام كار ، مي توانيد UFW را با اين دستور فعال كنيد:
$ sudo ufw enable

در آخر ، وضعيت UFW را با دستور زير بررسي كنيد:
$ sudo ufw status

اگر قوانين را بطور صحيح مشخص كرده باشيد ، خروجي بايد به اين شكل باشد:
Output
Status: active

To Action From
— —— —-
9200 ALLOW 198.51.100.0
22 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)

UFW اكنون بايد براي محافظت از پورت Elasticsearch 9200 فعال و تنظيم شود.
اگر مي خواهيد روي حفاظت بيشتر سرمايه گذاري كنيد ، Elasticsearch افزونه تجاري Shield را براي خريد ارائه مي دهد.
مرحله 4 – آزمايش Elasticsearch
اكنون ، Elasticsearch بايد در پورت 9200 در حال اجرا باشد. شما مي توانيد آن را با cURL و درخواست GET تست كنيد.
$ curl -X GET ‘http://localhost:9200’

بايد پاسخ زير را مشاهده كنيد:
Output
{
“node.name” : “My First Node”,
“cluster.name” : “mycluster1”,
“version” : {
“number” : “2.3.1”,
“build_hash” : “bd980929010aef404e7cb0843e61d0665269fc39”,
“build_timestamp” : “2020-04-04T12:25:05Z”,
“build_snapshot” : false,
“lucene_version” : “5.5.0”
},
“tagline” : “You Know, for Search”
}

اگر پاسخي مشابه پاسخ فوق مي بينيد ، Elasticsearch به درستي كار مي كند. در غير اين صورت ، اطمينان حاصل كنيد كه دستورالعمل هاي نصب را به درستي رعايت كرده ايد و زماني را براي شروع كامل Elasticsearch ارائه كرده ايد.
براي انجام يك بررسي دقيق تر از Elasticsearch ، دستور زير را اجرا كنيد:
$ curl -XGET ‘http://localhost:9200/_nodes?pretty’

در خروجي از دستور فوق مي توانيد تمام تنظيمات فعلي گره ، خوشه ، مسيرهاي برنامه ، ماژول ها و موارد ديگر را تأييد كنيد.
مرحله 5 – استفاده از Elasticsearch
براي شروع استفاده از Elasticsearch ، ابتدا اجازه دهيد داده هايي را اضافه كنيم. Elasticsearch از API RESTful استفاده مي كند ، كه به دستورات معمول CRUD پاسخ مي دهد: ايجاد (create ) ، خواندن (read)، به روزرساني (update) و حذف (delete). براي كار با آن ، دوباره از دستور cURL استفاده خواهيم كرد.
شما مي توانيد اولين ورودي خود را مانند اين اضافه كنيد:
$ curl -XPOST -H “Content-Type: application/json” ‘http://localhost:9200/tutorial/helloworld/1’ -d ‘{ “message”: “Hello World!” }’

شما بايد پاسخ زير را دريافت كنيد:
Output
{“_index”:”tutorial”,”_type”:”helloworld”,”_id”:”1″,”_version”:2,”result”:”updated”,”_shards”:{“total”:2,”successful”:1,”failed”:0},”_seq_no”:1,”_primary_term”:1}

با cURL ، يك درخواست HTTP POST را به سرور مجازي Elasticsearch ارسال كرديم. URI درخواست /tutorial/helloworld/1 با چندين پارامتر بود:
tutorial  ايندكس داده ها در Elasticsearch است.
helloworld  نوع است.
1  شناسه ورود ما تحت فهرست و نوع فوق است.
شما مي توانيد اين اولين ورودي را با درخواست HTTP GET بازيابي كنيد.
$ curl -X GET -H “Content-Type: application/json” ‘http://localhost:9200/tutorial/helloworld/1’ -d ‘{ “message”: “Hello World!” }’

اين خروجي بايد حاصل شود:
Output
{“_index”:”tutorial”,”_type”:”helloworld”,”_id”:”1″,”_version”:1,”found”:true,”_source”:{ “message”: “Hello, World!” }}

براي تغيير يك ورودي موجود ، مي توانيد از درخواست HTTP PUT استفاده كنيد.
$ curl -X PUT -H “Content-Type: application/json” ‘localhost:9200/tutorial/helloworld/1?pretty’ -d ‘

$ {

$ “message”: “Hello, People!”

$ }’

Elasticsearch بايد اصلاح موفقيت آميز مانند اين را تصديق كند:
Output
{
“_index” : “tutorial”,
“_type” : “helloworld”,
“_id” : “1”,
“_version” : 2,
“_shards” : {
“total” : 2,
“successful” : 1,
“failed” : 0
},
“created” : false
}

در مثال بالا پيام ورودي اول را در “hello people!” تغيير داده ايم. با اين كار ، تعداد نسخه به طور خودكار به 2 افزايش يافته است.
ممكن است در درخواست فوق آرگومان اضافي pretty را به خوبي مشاهده كرده باشيد. اين كار فرمت قابل خواندن توسط انسان را ممكن مي سازد تا بتوانيد هر فيلد داده را روي يك رديف جديد بنويسيد. همچنين مي توانيد هنگام بازيابي داده ها نتايج خود را “پيش بيني كنيد” تا با وارد كردن دستور زير ، خروجي خواناتري بدست آوريد:
$ curl -X GET -H “Content-Type: application/json” ‘http://localhost:9200/tutorial/helloworld/1?pretty’

در حال حاضر پاسخ براي تجزيه و تحليل يك انسان فرمت بندي خواهد شد:
Output
{
“_index” : “tutorial”,
“_type” : “helloworld”,
“_id” : “1”,
“_version” : 2,
“found” : true,
“_source” : {
“message” : “Hello, People!”
}
}

اكنون داده هاي موجود در Elasticsearch اضافه و پرس و جو شده است. براي كسب اطلاعات در مورد ساير عمليات ، لطفاً مستندات API را بررسي كنيد.
نتيجه
اكنون Elasticsearch را نصب ، پيكربندي و شروع به استفاده كرده ايد. از زمان انتشار اوليه Elasticsearch ، الاستيك سه ابزار اضافي – Logstash ، Kabana و Beats را توسعه داده است كه در رابطه با Elasticsearch بعنوان بخشي از Elastic Stack مورد استفاده قرار مي گيرد. اين ابزارها با همكاري هم ، اين امكان را به شما مي دهند تا ورودهاي ايجاد شده از هر منبع و با هر فرمي را در روشي كه به centralized logging شناخته مي شود جستجو ، تجزيه و تحليل كنيد. براي شروع كار با Elastic Stack در اوبونتو 18.04 ، لطفاً به راهنماي ما درمورد نحوه نصب Elasticsearch ،Logstash و Kibana (Elastic Stack) در اوبونتو 18.04 مراجعه كنيد.

 

برچسب‌ها:centralized loggingCRUDElasticsearchhello peoplePUT

راه اندازي سرور اوليه با اوبونتو 20.04

هنگامي كه براي اولين بار سرور مجازي جديد اوبونتو 20.04 را ايجاد مي كنيد ، بايد برخي از مراحل مهم تنظيمات را به عنوان بخشي از ستاپ اصلي انجام دهيد. اين مراحل باعث افزايش امنيت و قابليت استفاده سرور مجازي شما مي شود و پايه و اساس محكمي را براي اقدامات بعدي به شما مي دهد.
مرحله 1 – ورود به سيستم به عنوان ريشه
براي ورود به سرور مجازي خود ، بايد آدرس IP عمومي سرور مجازي خود را بدانيد. شما همچنين به رمز عبور يا در صورت نصب كليد SSH براي تأييد اعتبار – به كليد خصوصي براي حساب كاربر root نياز داريد. اگر قبلاً به سرور مجازي خود وارد نشده ايد ، بهتر است راهنماي ما در مورد نحوه اتصال به دراپلت ها با SSH را دنبال كنيد ، كه اين روند را با جزئيات پوشش مي دهد.
اگر از قبل به سرور مجازي خود وصل نشده ايد ، اكنون به عنوان كاربر اصلي با استفاده از دستور زير وارد سيستم شويد (بخش هايلايت شده فرمان را با آدرس IP عمومي سرور مجازي خود جايگزين كنيد):
$ ssh root@your_server_ip

در صورت وجود هشدار درباره تاييد هويت هاست، آن را بپذيريد. اگر از تأييد اعتبار استفاده مي كنيد ، رمز ورود خود را وارد كنيد. اگر از يك كليد SSH استفاده مي كنيد كه عبارت عبور آن محافظت مي شود ، ممكن است از شما خواسته شود اولين بار كه از هر كليد استفاده مي كنيد ، كلمه عبور را وارد كنيد. اگر اولين بار است كه با گذرواژه وارد سرور مجازي مي شويد ، ممكن است از شما خواسته شود رمزعبور root را تغيير دهيد.
درباره ريشه
كاربر ريشه كاربر ادمين در محيط لينوكس است كه امتيازات بسيار گسترده اي دارد. به دليل افزايش امتيازات حساب ريشه ، استفاده از آن به صورت منظم اصلا پيشنهاد نميشود. اين امر به اين دليل است كه بخشي از قدرت ذاتي حساب ريشه ، توانايي ايجاد تغييرات بسيار مخرب ، حتي به طور تصادفي است.
مرحله بعدي تنظيم يك حساب كاربري جديد با امتيازات كمتر براي استفاده روزانه است. بعداً ، به شما ياد مي دهيم كه چگونه تنها در مواقعي كه به آنها احتياج داريد ، امتيازات بيشتر را كسب كنيد.
مرحله 2 – ايجاد يك كاربر جديد
پس از ورود به عنوان root ، آماده اضافه كردن حساب كاربري جديد هستيم. در آينده ، به جاي root وارد اين حساب جديد مي شويم.
اين مثال يك كاربر جديد به نام sammy ايجاد مي كند ، اما شما بايد آن را با نام كاربري كه دوست داريد جايگزين كنيد:
# adduser sammy

با وارد كردن رمز ورود به حساب ، چند سؤال از شما پرسيده خواهد شد.
يك رمزعبور قوي وارد كنيد و در صورت تمايل ، هر يك از اطلاعات اضافي را پر كنيد. اين كار ضروري نيست و در هر فيلدي كه مايل به عبور هستيد مي توانيد ENTER را بزنيد.
مرحله 3 – اعطاي امتيازات ادمين
اكنون ، يك حساب كاربري جديد با امتيازات معمول حساب داريم. با اين حال ، ممكن است گاهي اوقات به انجام كارهاي اجرايي نياز داشته باشيم.
براي جلوگيري از خارج شدن از حساب كاربري عادي و ورود به سيستم به عنوان حساب ريشه ، مي توانيم براي حساب عادي خود چيزي به اسم superuser يا امتيازات اصلي معرفي كنيم. اين امر به كاربر عادي ما امكان مي دهد با قرار دادن كلمه sudo قبل از هر دستور ، دستوراتي را با امتيازات ادمين اجرا كند.
براي افزودن اين امتيازات به كاربر جديد خود ، بايد كاربر را به گروه sudo اضافه كنيم. به طور پيش فرض ، در اوبونتو 20.04 ، كاربراني كه عضو گروه sudo هستند مجاز به استفاده از دستور sudo هستند.
به عنوان root ، اين دستور را اجرا كنيد تا كاربر جديد خود را به گروه sudo اضافه كنيد (نام كاربري هايلايت شده را با كاربر جديد خود جايگزين كنيد):
# usermod -aG sudo sammy

اكنون ، هنگامي كه به عنوان كاربر معمولي خود وارد سيستم ميشويد ، مي توانيد قبل از دستورات sudo را تايپ كنيد تا اقدامات خود را با امتيازات فوق كاربري انجام دهيد.
مرحله 4 – تنظيم فايروال پايه
سرور مجازي هاي Ubuntu 20.04 مي توانند از فايروال UFW استفاده كنند تا اطمينان حاصل شود كه فقط اتصال به برخي سرويس ها مجاز است. ما مي توانيم با استفاده از اين برنامه يك فايروال پايه را به راحتي تنظيم كنيم.
توجه: اگر سرور مجازي هاي شما روي vpsgol در حال اجرا هستند ، مي توانيد به طور اختياري به جاي فايروال UFW از فايروال vpsgol Cloud

برنامه ها مي توانند پس از نصب نمايه هاي خود را در UFW ثبت كنند. اين پروفايل ها به UFW اجازه مي دهند تا اين برنامه ها را با نامشان مديريت كند. OpenSSH ، سرويسي كه به ما امكان اتصال كنوني به سرور مجازي خود را مي دهد ، داراي نمايه اي است كه در UFW ثبت شده است.
مي توانيد اين را با تايپ كردن دستور زير مشاهده كنيد:
# ufw app list

Output
Available applications:
OpenSSH

ما بايد اطمينان حاصل كنيم كه فايروال امكان اتصالات SSH را مي دهد تا بتوانيم دفعه ديگر وارد سيستم شويم. مي توانيم با تايپ كردن اين دستور اتصالات را برقرار كنيم:
# ufw allow OpenSSH

پس از آن ، مي توانيم با تايپ كردن دستور زير فايروال را فعال كنيم:
# ufw enable

y را تايپ كرده و ENTER را براي ادامه فشار دهيد. مي توانيد با تايپ دستور زير ببينيد كه اتصالات SSH هنوز مجاز هستند:
# ufw status

Output
Status: active

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

از آنجا كه فايروال در حال حاضر همه اتصالات به جز SSH را مسدود مي كند ، اگر سرويس هاي اضافي را نصب و پيكربندي كنيد ، بايد تنظيمات فايروال را تنظيم كنيد تا ترافيك در آن وارد شود. شما مي توانيد برخي از عمليات معمول UFW را در راهنماي UFW Essentials ما بياموزيد.
مرحله 5 – فعال كردن دسترسي خارجي براي كاربر معمولي شما
اكنون كه ما يك كاربر معمولي براي استفاده روزانه داريم ، بايد اطمينان حاصل كنيم كه مي توانيم مستقيماً SSH را وارد حساب كاربري خود كنيم.
توجه: تا زماني كه تأييد نكنيد كه مي توانيد با كاربر جديد خود وارد سيستم شويد و از sudo استفاده كنيد ، توصيه مي كنيم به عنوان root وارد شويد. به اين ترتيب ، اگر مشكل داريد مي توانيد به عنوان ريشه عيب يابي كرده و هرگونه تغيير لازم را انجام دهيد. اگر از دراپلت vpsgol استفاده مي كنيد و با اتصال SSH ريشه خود مشكل داريد ، مي توانيد با استفاده از كنسول vpsgol وارد دراپلت شويد.
روند پيكربندي دسترسي SSH براي كاربر جديد شما به اين بستگي دارد كه آيا حساب ريشه سرور مجازي شما از رمز عبور يا كليدهاي SSH براي تأييد اعتبار استفاده مي كند.
اگر حساب root از احراز هويت رمز عبور استفاده مي كند
اگر با استفاده از گذرواژه وارد حساب ريشه خود شده ايد ، تأييد رمز عبور براي SSH فعال مي شود. با باز كردن بخش ترمينال جديد و استفاده از SSH با نام كاربري جديد خود مي توانيد به حساب كاربري جديد خود SSH كنيد:
$ssh sammy@your_server_ip

بعد از وارد كردن رمزعبور كاربر معمولي ، وارد سيستم مي شويد. به ياد داشته باشيد اگر نياز به اجراي يك فرمان با امتيازات ادمين داريد ، قبل از اين كار sudo را تايپ كنيد:
$ sudo command_to_run

براي اولين بار در هر بخش (و به صورت دوره اي بعد از آن) رمزعبور كاربر معمولي از شما خواسته مي شود.
براي تقويت امنيت سرور مجازي خود ، ما به شدت توصيه مي كنيم به جاي استفاده از احراز هويت رمز عبور ، كليدهاي SSH را تنظيم كنيد. براي يادگيري نحوه پيكربندي احراز هويت مبتني بر كليد ، راهنماي ما را در مورد تنظيم كليدهاي SSH در اوبونتو 20.04 دنبال كنيد.
اگر حساب ريشه از احراز هويت كليد SSH استفاده مي كند
اگر با استفاده از كليدهاي SSH به حساب ريشه خود وارد شده ايد ، تأييد رمز عبور براي SSH غيرفعال است. براي ورود موفقيت آميز به سيستم ، بايد يك نسخه از كليد عمومي محلي خود را در فايل كاربر new / .ssh / autor_keys كاربر جديد اضافه كنيد.
از آنجا كه كليد عمومي شما قبلاً در فايل ~/.ssh/authorized_keys حساب اصلي ريشه در سرور مجازي است ، مي توانيم در بخش موجود ، آن فايل و ساختار ديركتوري را در حساب كاربري جديد خود كپي كنيم.
ساده ترين روش براي كپي كردن فايل ها با مالكيت صحيح و مجوزها ، با دستور rsync است. اين كار دايركتوري .ssh كاربر ريشه را كپي مي كند ، مجوزها را نگه مي دارد و صاحبان فايل را اصلاح مي كند كه همه در يك دستور واحد انجام ميشوند. اطمينان حاصل كنيد كه قسمت هايلايت شده فرمان زير را تغيير دهيد تا با نام كاربر معمولي شما مطابقت داشته باشد:
توجه: فرمان rsync با منابع و مقاصدي كه با يك اسلش جدا شده اند متفاوت از مواردي كه اسلش ندارند ، برخورد مي كند. هنگام استفاده از rsync در زير ، مطمئن شويد كه ديركتوري منبع (~ / .ssh) شامل اسلش نيست (بررسي كنيد تا مطمئن شويد كه از ~ / .ssh /) استفاده نمي كنيد.
اگر به طور اتفاقي يك اسلش را به اين فرمان اضافه كنيد ، rsync محتويات ديركتوري ~ / .ssh حساب اصلي را به جاي كپي كردن كل ساختار ديركتوري/ .ssh در فهرست خانه اصلي كاربر sudo كپي مي كند. فايل ها در مكان اشتباه قرار دارند و SSH قادر به يافتن و استفاده از آنها نخواهد بود.
# rsync –archive –chown=sammy:sammy ~/.ssh /home/sammy

اكنون يك بخش ترمينال جديد را روي دستگاه محلي خود باز كنيد و از SSH با نام كاربري جديد خود استفاده كنيد:
$ ssh sammy@your_server_ip

بدون استفاده از رمز ورود بايد به حساب كاربري جديد وارد شويد. به ياد داشته باشيد ، اگر نياز به اجراي يك فرمان با امتيازات ادمين داريد ، sudo را قبل از آن تايپ كنيد:
$ sudo command_to_run

براي اولين بار در هر بخش (و به صورت دوره اي بعد از آن) از شما رمزعبور كاربر معمولي خواسته مي شود.
از اينجا به كجا برويم؟
در اين مرحله ، شما يك پايه محكم براي سرور مجازي خود داريد. اكنون مي توانيد هركدام از نرم افزارهاي مورد نياز خود را بر روي سرور مجازي خود نصب كنيد.

 

برچسب‌ها:UFW Essentials

تنظيم كليدهاي SSH در Ubuntu 20.04

SSH يا همان پوسته ايمن، پروتكل رمزگذاري شده است كه براي اداره و برقراري ارتباط با سرور مجازي ها استفاده مي شود. هنگام كار با سرور مجازي Ubuntu ، احتمال دارد بيشتر وقت خود را در يك بخش ترمينال متصل به سرور مجازي خود از طريق SSH بگذرانيد.
در اين راهنما ، ما روي تنظيم كليدهاي SSH براي نصب Ubuntu 20.04 تمركز خواهيم كرد. كليدهاي SSH روشي آسان و مطمئن براي ورود به سرور مجازي شما فراهم كرده و براي همه كاربران توصيه مي شود.
مرحله 1 – ايجاد جفت كليد
اولين قدم ايجاد يك جفت كليد در دستگاه كلاينت (معمولاً رايانه شما) ميباشد:
$ ssh-keygen

به طور پيش فرض نسخه هاي اخير ssh-keygen يك جفت كليد RSA ، 3072 بيتي ايجاد مي كنند ، كه براي بيشتر موارد استفاده به اندازه كافي ايمن است (ميتوانيد به صورت اختياري از پرچم -b 4096 عبور كنيد تا يك كليد بزرگتر 4096 بيتي ايجاد نماييد).
پس از وارد كردن دستور ، بايد خروجي زير را مشاهده كنيد:
Output
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):

Enter را فشار دهيد تا جفت كليد را در زيرديركتوري .ssh / در ديركتوري هوم خود ذخيره كنيد ، يا يك مسير جايگزين را مشخص كنيد.
اگر قبلاً يك جفت كليد SSH ايجاد كرده ايد ، ممكن است اعلان زير را مشاهده كنيد:
Output
/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?

اگر تصميم به بازنويسي كليد در ديسك داريد ، ديگر نمي توانيد با استفاده از كليد قبلي ، تأييد اعتبار كنيد. در انتخاب بله بسيار مراقب باشيد ، زيرا يك روند مخرب است كه قابل برگشت نخواهد بود.
سپس بايد اعلان زير را مشاهده كنيد:
Output
Enter passphrase (empty for no passphrase):

در اينجا ميتوانيد به صورت اختياري يك عبارت عبور مطمئن را وارد كنيد ، كه بسيار توصيه مي شود. عبارات عبور براي جلوگيري از ورود كاربران غيرمجاز ، يك لايه امنيتي ديگر اضافه مي كند. براي كسب اطلاعات بيشتر در مورد امنيت ، به آموزش ما در مورد چگونگي پيكربندي احراز هويت مبتني بر كليد SSH در سرور مجازي لينوكس مراجعه كنيد.
سپس بايد خروجي مشابه زير را مشاهده كنيد:
Output
Your identification has been saved in /your_home/.ssh/id_rsa
Your public key has been saved in /your_home/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks user@host
The key’s randomart image is:
+—[RSA 3072]—-+
| .|
| + |
| + |
| . o . |
|o S . o |
| + o. .oo. .. .o|
|o = oooooEo+ …o|
|.. o *o+=.*+o….|
| =+=ooB=o…. |
+—-[SHA256]—–+

اكنون يك كليد عمومي و خصوصي داريد كه مي توانيد از آن براي تأييد اعتبار استفاده كنيد. مرحله بعدي قرار دادن كليد عمومي روي سرور مجازي خود ميباشد تا بتوانيد براي ورود به سيستم از تأييد اعتبار مبتني بر SSH استفاده كنيد.
مرحله 2 – كپي كردن كليد عمومي روي سرور مجازي Ubuntu
سريع ترين راه براي كپي كردن كليد عمومي خود در هاست Ubuntu ، استفاده از ابزاري به نام ssh-copy-id است. به دليل سادگي ، اين روش در صورت وجود بسيار توصيه مي شود. اگر شناسه ssh-copy-id را در دستگاه كلاينت خود نداريد ، ميتوانيد از يكي از دو روش جايگزين ارائه شده در اين بخش استفاده كنيد (كپي كردن از طريق SSH مبتني بر رمز عبور ، يا كپي كردن كليد به صورت دستي).
كپي كردن كليد عمومي با استفاده از ssh-copy-id
ابزار ssh-copy-id بصورت پيش فرض در بسياري از سيستم عامل ها گنجانده شده است ، بنابراين احتمالا آن را در سيستم محلي خود در دسترس داشته باشيد. براي كار با اين روش ، بايد از قبل دسترسي SSH به سرور مجازي مبتني بر رمزعبور را داشته باشيد.
براي استفاده از اين ابزار ، هاست از راه دور را كه مي خواهيد به آن متصل شويد و حساب كاربري كه دسترسي SSH مبتني بر رمز عبور به آن داريد را تعيين مي كنيد. اين حسابي است كه كليد عمومي SSH شما كپي مي شود.
تركيب به اين صورت است:
$ ssh-copy-id username@remote_host

ممكن است پيام زير را مشاهده كنيد:
Output
The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

اين بدان معني است كه رايانه محلي شما هاست از راه دور را تشخيص نمي دهد. اگر اولين بار است كه به هاست جديد وصل مي شويد. “yes” را تايپ كنيد و ENTER را براي ادامه فشار دهيد.
در مرحله بعد ، ابزار، حساب محلي شما را براي كليد id_rsa.pub كه قبلاً ايجاد كرديم ، اسكن مي كند. وقتي كليد را پيدا كرد ، رمز ورود به حساب كاربري از راه دور را از شما ميخواهد:
Output
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
username@203.0.113.1’s password:

گذرواژه را وارد كنيد (تايپ شما براي اهداف امنيتي نمايش داده نمي شود) و ENTER را فشار دهيد. اين ابزار با استفاده از گذرواژه اي كه ارائه داده ايد ، به هاست از راه دور متصل مي شود. سپس محتويات كليد ~ / .ssh / id_rsa.pub شما را در فايلي در ديركتوري ~/.ssh هوم حساب كاربري از راه دور به نام authorized_keys كپي مي كند.
بايد خروجي زير را مشاهده كنيد:
Output
Number of key(s) added: 1

Now try logging into the machine, with: “ssh ‘username@203.0.113.1′”
and check to make sure that only the key(s) you wanted were added.

در اين مرحله ، كليد id_rsa.pub شما در حساب راه دور بارگذاري شده است. مي توانيد به مرحله 3 برويد.
كپي كردن كليد عمومي با استفاده از SSH
اگر ssh-copy-id را در دسترس نداريد ، اما دسترسي SSH مبتني بر رمز عبور به يك حساب كاربري روي سرور مجازي خود داريد ، مي توانيد كليدهاي خود را با استفاده از يك روش معمولي SSH بارگذاري كنيد.
ما مي توانيم اين كار را با استفاده از دستور cat انجام دهيم تا محتواي كليد عمومي SSH را در رايانه محلي خود بخوانيم و از طريق اتصال SSH به سرور مجازي از راه دور اتصال برقرار كنيم.
از طرف ديگر ، مي توانيم اطمينان حاصل كنيم كه ديركتوري ~ / .ssh وجود دارد و داراي مجوزهاي صحيح تحت اكانتي است كه ما از آن استفاده مي كنيم.
سپس مي توانيم محتوياتي را كه به آن پيوند زده ايم را درون يك فايل به نام authorized_keys در اين ديركتوري وارد كنيم. ما از نماد >> تغيير مسير براي افزودن محتوا به جاي نوشتن آن استفاده خواهيم كرد. اين به ما امكان مي دهد بدون از بين بردن كليدهاي قبلي اضافه شده ، كليدهايي را اضافه كنيم.
فرمان كامل مانند اين است:
ممكن است پيام زير را مشاهده كنيد:
$ cat ~/.ssh/id_rsa.pub | ssh username@remote_host “mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys”

اين بدان معني است كه رايانه محلي شما هاست از راه دور را تشخيص نمي دهد. اگر اولين بار است كه به هاست جديد وصل مي شويد. yes را تايپ كنيد و ENTER را براي ادامه فشار دهيد.
پس از آن ، از شما خواسته مي شود رمزعبور حساب كاربري از راه دور را وارد كنيد:
Output
username@203.0.113.1’s password:

پس از وارد كردن گذرواژه ، محتواي كليد id_rsa.pub شما در انتهاي فايل authorized_keys حساب كاربري از راه دور كپي مي شود. اگر موفقيت آميز بود ، به مرحله 3 برويد.
كپي كردن كليد عمومي به صورت دستي
اگر دسترسي SSH مبتني بر رمز عبور به سرور مجازي خود را نداريد ، بايد مراحل فوق را به صورت دستي انجام دهيد.
ما به طور دستي محتواي فايل id_rsa.pub خود را به فايل ~/.ssh/authorized_keys روي دستگاه از راه دور شما اضافه خواهيم كرد.
براي نمايش محتواي كليد id_rsa.pub ، اين دستور را در رايانه محلي خود تايپ كنيد:
$ cat ~/.ssh/id_rsa.pub

محتواي كليد را مشاهده خواهيد كرد ، كه بايد چيزي شبيه به اين باشد:
Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

با استفاده از روش ديگري كه در دسترس داريد ، به هاست راه دور خود دسترسي پيدا كنيد.
پس از دسترسي به حساب كاربري خود در سرور مجازي راه دور ، بايد اطمينان حاصل كنيد كه ديركتوري ~ / .ssh وجود دارد. اين دستور در صورت لزوم دايركتوري ايجاد مي كند يا در صورت وجود هيچ كاري انجام نمي دهد:
$ mkdir -p ~/.ssh

اكنون ، مي توانيد فايل authorized_keys را ايجاد كنيد و يا تغيير دهيد. مي توانيد مطالب مربوط به فايل id_rsa.pub خود را به انتهاي فايل authorized_keys اضافه كنيد و در صورت لزوم با استفاده از اين دستور آن را ايجاد كنيد:
$ echo public_key_string >> ~/.ssh/authorized_keys

در دستور فوق ، public_key_string را با خروجي دستور cat ~/.ssh/id_rsa.pub كه بر روي سيستم محلي خود اجرا كرده ايد ، جايگزين كنيد. بايد با ssh-rsa AAAA شروع شود …
سرانجام ، اطمينان خواهيم يافت كه ديركتوري ~ / .shsh و فايل authorized_keys مجموعه مجوزهاي مناسب را دارند:
$ chmod -R go= ~/.ssh

اين دستور به طور بازگشتي همه مجوزهاي “group” و “other” را براي ديركتوري ~ / .ssh / حذف مي كند.
اگر براي تنظيم كليدهاي يك حساب كاربري از كاربر ريشه استفاده مي كنيد ، مهم است كه ديركتوري ~ / .ssh متعلق به كاربر باشد و نه ريشه:
$ chown -R sammy:sammy ~/.ssh

در اين آموزش كاربر Sammy نامگذاري شده است اما بايد نام كاربري مناسب را در دستور فوق جايگزين كنيد.
اكنون مي توانيم با سرور مجازي Ubuntu ، احراز هويت بدون رمز عبور را امتحان كنيم.
مرحله 3 – تأييد اعتبار براي سرور مجازي Ubuntu با استفاده از كليدهاي SSH
اگر يكي از روشهاي فوق را با موفقيت انجام داده ايد ، بايد بتوانيد بدون ارائه رمز ورود به حساب راه دور ، وارد هاست راه دور شويد.
فرايند پايه يكسان است:
$ ssh username@remote_host

اگر اولين بار است كه به اين هاست متصل مي شويد (و در صورتي كه از آخرين روش در بالا استفاده كرديد) ، ممكن است چيزي شبيه به اين را مشاهده كنيد:
Output
The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

اين بدان معني است كه رايانه محلي شما هاست از راه دور را تشخيص نمي دهد. “yes” را تايپ كرده و ENTER را براي ادامه فشار دهيد.
اگر كلمه عبور براي كليد خصوصي خود ارائه نكرده ايد ، بلافاصله وارد سيستم مي شويد. اگر هنگام ايجاد كليد ، يك عبارت عبور را براي كليد خصوصي تهيه كرده باشيد ، از شما خواسته مي شود اكنون آن را وارد كنيد (توجه داشته باشيد كه كليدهايي گه فشار ميدهيد براي امنيت در بخش ترمينال نمايش داده نميشوند). پس از تأييد اعتبار ، بايد يك بخش پوسته جديد با حساب پيكربندي شده روي سرور مجازي Ubuntu باز شود.
اگر تأييد هويت مبتني بر كليد موفقيت آميز بود ، ادامه بدهيد تا ببينيد كه چگونه با غيرفعال كردن احراز هويت رمز عبور ، امنيت بيشتري در سيستم خود داشته باشيد.
مرحله 4 – غيرفعال كردن احراز هويت رمز عبور روي سرور مجازي خود
اگر توانستيد با استفاده از SSH بدون پسورد وارد حساب كاربري خود شويد ، تأييد هويت مبتني بر كليد SSH را با موفقيت پيكربندي كرده ايد. با اين حال ، مكانيسم تأييد اعتبار مبتني بر رمز عبور شما هنوز فعال است ، به اين معني كه سرور مجازي شما هنوز در معرض حملات خطرناك ميباشد.
قبل از انجام مراحل در اين بخش ، مطمئن شويد كه احراز هويت مبتني بر كليد SSH را براي حساب اصلي در اين سرور مجازي پيكربندي كرده ايد ، يا ترجيحاً احراز هويت مبتني بر كليد SSH را براي يك حساب غير ريشه با امتيازات sud در اين سرور مجازي پيكربندي كرده ايد. در اين مرحله ورود به سيستم هاي مبتني بر رمز عبور قفل خواهد شد ، بنابراين اطمينان از اينكه همچنان مي توانيد دسترسي ادمين داشته باشيد بسيار مهم است.
هنگامي كه تأييد كرديد كه حساب از راه دور شما داراي امتيازات ادمين است ، با كليدهاي SSH ، به صورت ريشه يا با يك حساب داراي امتيازات sudo وارد سرور مجازي راه دور خود شويد. سپس فايل پيكربندي Daemon SSH را باز كنيد:
$ sudo nano /etc/ssh/sshd_config

در داخل فايل ، يك دستورالعمل با نام PasswordAuthentication را جستجو كنيد. اين خط ممكن است در ابتدا با يك # شروع شود. خط را با حذف # باطل كرده ، و مقدار را بر روي no قرار دهيد. با اين كار توانايي ورود به سيستم از طريق SSH با استفاده از گذرواژه هاي حساب غيرفعال مي شود:
/etc/ssh/sshd_config
. . .
PasswordAuthentication no
. . .

پس از اتمام فايل را با فشار دادن CTRL + X ، سپس Y ذخيره كرده و آن را ببنديد تا تأييد كنيد كه فايل ذخيره شود و درنهايت ENTER را براي خروج از nano وارد كنيد. براي فعال كردن اين تغييرات ، بايد سرويس sshd را مجدداً راه اندازي كنيم:
$ sudo systemctl restart ssh

براي احتياط ، قبل از بستن بخش فعلي خود ، يك پنجره ترمينال جديد باز كنيد و آزمايش كنيد كه سرويس SSH به درستي كار مي كند:
$ ssh username@remote_host

پس از تأييد صحت عملكرد سرويس SSH ، مي توانيد با اطمينان تمام بخش هاي فعلي سرور مجازي را ببنديد.
اكنون SSH daemon در سرور مجازي Ubuntu شما فقط به احراز هويت مبتني بر كليد SSH پاسخ مي دهد. ورود به سيستم مبتني بر رمز عبور غيرفعال شده است.
نتيجه
اكنون بايد تأييد هويت مبتني بر كليد SSH را روي سرور مجازي خود پيكربندي كنيد كه به شما اجازه ميدهد بدون ارائه رمز ورود به حساب كاربري خود وارد شويد.
اگر مي خواهيد در مورد كار با SSH اطلاعات بيشتري كسب كنيد ، به راهنماي ضروريات SSH نگاهي بيندازيد.

 

برچسب‌ها:SSHUbuntu 20.04

نحوه نصب MySQL در اوبونتو 20.04

 يك سيستم مديريت پايگاه داده منبع باز است كه معمولاً به عنوان بخشي از پشته محبوب LAMP (Linux ، Apache ، MySQL ، PHP / Python / Perl) نصب مي شود. اين سيستم يك مدل رابطه اي را پياده سازي مي كند و براي مديريت داده هاي خود از زبان پرس و جوي ساختاريافته (معروف به SQL) استفاده مي كند.
در اين آموزش نحوه نصب MySQL نسخه 8 بر روي سرور مجازي Ubuntu 20.04 بررسي مي شود. با تكميل آن ، شما يك پايگاه داده رابطه اي در حال كار خواهيد داشت كه مي توانيد براي ساختن وب سايت يا برنامه بعدي خود استفاده كنيد.

پيش نيازها
براي دنبال كردن اين آموزش ، به موارد زير نياز داريد:
• يك سرور مجازي Ubuntu 20.04 با يك كاربر ادمين غير ريشه و فايروال تنظيم شده با UFW . براي راه اندازي ، راهنماي ستاپ اوليه سرور مجازي براي اوبونتو 20.04 را دنبال كنيد.

مرحله 1 – نصب MySQL
در Ubuntu 20.04 مي توانيد MySQL را با استفاده از مخزن بسته APT نصب كنيد. در زمان نوشتن اين مقاله، نسخه MySQL موجود در مخزن پيش فرض اوبونتو نسخه 8.0.19 است.
براي نصب آن ، اگر اخيراً اين كار را نكرده ايد ، فهرست بسته را روي سرور مجازي خود به روز كنيد:
$ sudo apt update

سپس بسته mysql-server را نصب كنيد:
$ sudo apt install mysql-server

اين كار MySQL را نصب مي كند ، اما از شما نميخواهد كه رمز عبوري تنظيم كنيد يا تغييرات ديگري در پيكربندي ايجاد كنيد. از آنجا كه اين امر باعث مي شود نصب MySQL ناامن باشد ، در ادامه به اين موضوع خواهيم پرداخت.

مرحله 2 – پيكربندي MySQL
براي نصب هاي جديد MySQL ، بهتر است اسكريپت امنيتي شامل DBMS را اجرا كنيد. اين اسكريپت برخي از گزينه هاي پيش فرض با ايمني كمتر را براي مواردي مانند ورود به سيستم ريشه از راه دور و كاربران نمونه تغيير مي دهد.
اسكريپت امنيتي را با sudo اجرا كنيد:
$ sudo mysql_secure_installation

اين امر مجموعه اي از اعلان ها را به شما نمايش ميدهد كه بتوانيد برخي از گزينه هاي امنيتي نصب MySQL خود را تغيير دهيد. اولين سؤال از شما ميپرسد كه آيا مي خواهيد افزونه Validate Password را تنظيم كنيد ، كه مي تواند براي تست قدرت رمز ورود MySQL استفاده شود.
اگر تصميم به تنظيم افزونه اعتبار سنجي گذرواژه بگيريد ، اسكريپت از شما مي خواهد كه يك سطح اعتبار رمز عبور را انتخاب كنيد. قوي ترين سطح – كه شما با وارد كردن 2 انتخاب مي كنيد – به حداقل 8 كاراكتر نياز دارد و شامل تركيبي از حروف بزرگ ، حروف كوچك ، عدد و علائم خاص است:
Output
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
2

صرف نظر از اين كه آيا مي خواهيد افزونه رمز عبور معتبر را انتخاب كنيد ، اعلان بعدي تعيين رمز عبور براي كاربر ريشه MySQL خواهد بود. Enter را بزنيد و رمز عبور ايمن را تاييد كنيد:
Output
Please set the password for root here.

New password:

Re-enter new password:

اگر از افزونه اعتبار سنجي گذرواژه استفاده كرده ايد ، در مورد قدرت رمزعبور جديد خود بازخورد دريافت خواهيد كرد. سپس اسكريپت از شما سؤال مي كند كه آيا مي خواهيد رمز عبوري را كه وارد كرده ايد ادامه دهيد يا مي خواهيد يك رمز جديد را وارد كنيد. با فرض اينكه از قدرت رمز عبوري كه تازه وارد كرده ايد راضي هستيد ، Y را براي ادامه اسكريپت وارد كنيد:
Output
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

از اينجا به بعد ، مي توانيد Y و سپس ENTER را فشار دهيد تا پيش فرض براي همه سؤالات بعدي را بپذيريد. با اين كار برخي از كاربران ناشناس و بانك اطلاعاتي تستي حذف مي شوند ، ورود به سيستم ريشه از راه دور غيرفعال مي شود و اين قوانين جديد را بارگذاري مي كند تا MySQL فوراً با تغييراتي كه ايجاد كرده ايد منطبق شود.
توجه داشته باشيد كه حتي اگر يك رمز عبور براي كاربر ريشه MySQL تنظيم كرده ايد ، اين كاربر براي تأييد اعتبار با گذرواژه هنگام اتصال به پوسته MySQL پيكربندي نشده است. در صورت تمايل مي توانيد با دنبال كردن مرحله 3 اين تنظيمات را اعمال كنيد.

مرحله 3 – تنظيم تأييد اعتبار و امتيازات كاربر (اختياري)
در سيستم هاي اوبونتو كه MySQL 5.7 را اجرا مي كند (و نسخه هاي بعدي) ، كاربر ريشه MySQL براي تأييد اعتبار با استفاده از افزونه auth_socket بصورت پيش فرض و نه با گذرواژه تنظيم شده است. اين امر امنيت و قابليت استفاده بيشتر را در بسياري از موارد امكان پذير مي كند ، اما همچنين مي تواند مواردي را پيچيده تر كند كه شما نياز به دسترسي به كاربر توسط يك برنامه خارجي (مانند phpMyAdmin) داريد.
به منظور استفاده از رمز عبور براي اتصال به MySQL به عنوان root ، بايد روش تأييد اعتبار آن را از auth_socket به افزونه ديگري مانند caching_sha2_password يا mysql_native_password تغيير دهيد. براي اين كار ، اعلان MySQL را از پايانه خود باز كنيد:
$ sudo mysql

سپس ، با دستور زير بررسي كنيد كه هر يك از حسابهاي كاربري MySQL شما از كدام روش تأييد اعتبار استفاده ميكند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output
+——————+————————————————————————+———————–+———–+
| user | authentication_string | plugin | host |
+——————+————————————————————————+———————–+———–+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+——————+————————————————————————+———————–+———–+
5 rows in set (0.00 sec)

در اين مثال ، مي بينيد كه كاربر ريشه با استفاده از افزونه auth_socket ، در واقع تأييد اعتبار مي كند. براي پيكربندي حساب ريشه براي تأييد اعتبار با رمز عبور ، عبارت ALTER USER را اجرا كنيد تا افزونه احراز هويت مورد استفاده خود را تغيير داده و يك رمز عبور جديد تنظيم كنيد.
مطمئن شويد كه رمز عبور را به رمز عبور قوي به انتخاب خود تغيير مي دهيد و آگاه باشيد كه اين دستور رمز ريشه را كه در مرحله 2 تنظيم كرده ايد تغيير مي دهد:
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘password’;

توجه: جمله قبلي ALTER USER كاربر ريشه MySQL را براي تأييد اعتبار با افزونه caching_sha2_password تنظيم مي كند. طبق مطالب رسمي MySQL ، caching_sha2_password افزونه ارجح تأييد هويت MySQL است ، زيرا رمزگذاري ايمن تر پسورد را نسبت به نسخه قديمي تر به همراه دارد ، اما هنوز هم به طور گسترده استفاده مي شود ، mysql_native_password.
با اين حال ، بسياري از برنامه هاي PHP براي مثال phpMyAdmin – با اطمينان با caching_sha2_password كار نمي كنند. اگر قصد استفاده از اين پايگاه داده را با برنامه PHP داريد ، بهتر است تأييد اعتبار ريشه را با mysql_native_password انجام دهيد:
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

سپس ، PRUSILEGES FLUSH را اجرا كنيد كه به سرور مجازي مي گويد جداول اعطاي امتياز را مجدد لود كرده و
تغييرات جديد را اعمال كند:
Mysql> FLUSH PRIVILEGES;

روش هاي تأييد اعتبار استفاده شده توسط هر يك از كاربران خود را دوباره بررسي كنيد تا تأييد كنيد كه ريشه ديگر با استفاده از افزونه auth_socket احراز هويت نمي كند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output
+——————+————————————————————————+———————–+———–+
| user | authentication_string | plugin | host |
+——————+————————————————————————+———————–+———–+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | caching_sha2_password | localhost |
+——————+————————————————————————+———————–+———–+
5 rows in set (0.00 sec)

در اين مثال مي توانيد مشاهده كنيد كه كاربر ريشه MySQL اكنون با استفاده از caching_sha2_password تأييد اعتبار مي كند. پس از تأييد اين موضوع روي سرور مجازي خود ، مي توانيد از پوسته MySQL خارج شويد:
Mysql> exit

از طرف ديگر ، به نظر برخي ممكن است اتصال به MySQL با يك كاربر اختصاصي براي گردش كارشان مناسب تر باشد. براي ايجاد چنين كاربري ، بار ديگر پوسته MySQL را باز كنيد:
$ sudo mysql

توجه: اگر احراز هويت رمز عبور را براي ريشه فعال كرده ايد ، همانطور كه در پاراگراف هاي قبلي توضيح داده شد ، براي دسترسي به پوسته MySQL بايد از دستور ديگري استفاده كنيد. موارد زير كلاينت MySQL شما را با حق امتياز كاربر به طور منظم اجرا مي كند و شما فقط با تأييد اعتبار ، امتيازات ادمين را در بانك اطلاعات دريافت خواهيد كرد:
$ mysql -u root -p

از آنجا ، يك كاربر جديد ايجاد كرده و يك رمزعبور قوي به آن بدهيد:
Mysql> CREATE USER ‘sammy’@’localhost’ IDENTIFIED BY ‘password’;

سپس امتيازات مناسب را به كاربر جديد خود اعطا كنيد. به عنوان مثال ، شما مي توانيد امتيازات كاربر را به تمام جداول موجود در ديتابيس و همچنين قدرت اضافه كردن ، تغيير و حذف امتيازهاي كاربر با اين دستور اعطا كنيد:
Mysql> GRANT ALL PRIVILEGES ON *.* TO ‘sammy’@’localhost’ WITH GRANT OPTION;

توجه داشته باشيد كه در اين مرحله ، ديگر نيازي به اجراي فرمان FLUSH PRIVILEGES نداريد. اين دستور فقط در صورت تغيير جدول هاي اعطاي امتياز با استفاده از عباراتي مانند INSERT ، UPDATE يا DELETE مورد نياز است. از آنجا كه شما به جاي تغيير يك كاربر موجود، كاربر جديدي ايجاد كرده ايد،FLUSH PRIVILEGES در اينجا غير ضروري است.
سپس ، از پوسته MySQL خارج شويد:
Mysql> exit

در آخر ، بياييد نصب MySQL را آزمايش كنيم.
مرحله 4 – تست MySQL
صرف نظر از نحوه نصب آن ، MySQL بايد به صورت خودكار شروع به كار كند. براي آزمايش اين موضوع ، وضعيت آن را بررسي كنيد.
$ systemctl status mysql.service

خروجي مشابه زير را مشاهده خواهيد كرد:
Output
● mysql.service – MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago
Main PID: 10382 (mysqld)
Status: “Server is operational”
Tasks: 39 (limit: 1137)
Memory: 370.0M
CGroup: /system.slice/mysql.service
└─10382 /usr/sbin/mysqld

اگر MySQL در حال اجرا نيست ، مي توانيد آن را با sudo systemctl start mysql شروع كنيد.
براي بررسي بيشتر، مي توانيد با استفاده از ابزار mysqladmin ، كه يك كلاينت است و به شما امكان اجراي دستورات ادمين را مي دهد ، به پايگاه داده وصل شويد. به عنوان مثال ، اين دستور مي گويد به عنوان ريشه به MySQL متصل شده (-u root) ، اعلان گذرواژه (-p) را پر كرده و نسخه را برگردانيد.
$ sudo mysqladmin -p -u root version

بايد خروجي مشابه اين را ببينيد:
Output
mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version 8.0.19-0ubuntu5
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 10 min 44 sec

Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038

اين بدان معني است كه MySQL در حال كار است.
نتيجه
اكنون يك ستاپ اوليه MySQL نصب شده در سرور مجازي خود داريد. در اينجا چند نمونه از مراحل بعدي كه مي توانيد انجام دهيد آورده شده است:
• يك پشته LAMP تنظيم كنيد
• پرس و جوهاي در حال اجرا را با SQL تمرين كنيد

 

برچسب‌ها:MySQLPython

نحوه نصب MySQL در اوبونتو 20.04

MySQL يك سيستم مديريت پايگاه داده منبع باز است كه معمولاً به عنوان بخشي از پشته محبوب LAMP (Linux ، Apache ، MySQL ، PHP / Python / Perl) نصب مي شود. اين سيستم يك مدل رابطه اي را پياده سازي مي كند و براي مديريت داده هاي خود از زبان پرس و جوي ساختاريافته (معروف به SQL) استفاده مي كند.
در اين آموزش نحوه نصب MySQL نسخه 8 بر روي سرور مجازي Ubuntu 20.04 بررسي مي شود. با تكميل آن ، شما يك پايگاه داده رابطه اي در حال كار خواهيد داشت كه مي توانيد براي ساختن وب سايت يا برنامه بعدي خود استفاده كنيد.

پيش نيازها
براي دنبال كردن اين آموزش ، به موارد زير نياز داريد:
• يك سرور مجازي Ubuntu 20.04 با يك كاربر ادمين غير ريشه و فايروال تنظيم شده با UFW . براي راه اندازي ، راهنماي ستاپ اوليه سرور مجازي براي اوبونتو 20.04 را دنبال كنيد.

مرحله 1 – نصب MySQL
در Ubuntu 20.04 مي توانيد MySQL را با استفاده از مخزن بسته APT نصب كنيد. در زمان نوشتن اين مقاله، نسخه MySQL موجود در مخزن پيش فرض اوبونتو نسخه 8.0.19 است.
براي نصب آن ، اگر اخيراً اين كار را نكرده ايد ، فهرست بسته را روي سرور مجازي خود به روز كنيد:
$ sudo apt update

سپس بسته mysql-server را نصب كنيد:
$ sudo apt install mysql-server

اين كار MySQL را نصب مي كند ، اما از شما نميخواهد كه رمز عبوري تنظيم كنيد يا تغييرات ديگري در پيكربندي ايجاد كنيد. از آنجا كه اين امر باعث مي شود نصب MySQL ناامن باشد ، در ادامه به اين موضوع خواهيم پرداخت.

مرحله 2 – پيكربندي MySQL
براي نصب هاي جديد MySQL ، بهتر است اسكريپت امنيتي شامل DBMS را اجرا كنيد. اين اسكريپت برخي از گزينه هاي پيش فرض با ايمني كمتر را براي مواردي مانند ورود به سيستم ريشه از راه دور و كاربران نمونه تغيير مي دهد.
اسكريپت امنيتي را با sudo اجرا كنيد:
$ sudo mysql_secure_installation

اين امر مجموعه اي از اعلان ها را به شما نمايش ميدهد كه بتوانيد برخي از گزينه هاي امنيتي نصب MySQL خود را تغيير دهيد. اولين سؤال از شما ميپرسد كه آيا مي خواهيد افزونه Validate Password را تنظيم كنيد ، كه مي تواند براي تست قدرت رمز ورود MySQL استفاده شود.
اگر تصميم به تنظيم افزونه اعتبار سنجي گذرواژه بگيريد ، اسكريپت از شما مي خواهد كه يك سطح اعتبار رمز عبور را انتخاب كنيد. قوي ترين سطح – كه شما با وارد كردن 2 انتخاب مي كنيد – به حداقل 8 كاراكتر نياز دارد و شامل تركيبي از حروف بزرگ ، حروف كوچك ، عدد و علائم خاص است:
Output
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
2

صرف نظر از اين كه آيا مي خواهيد افزونه رمز عبور معتبر را انتخاب كنيد ، اعلان بعدي تعيين رمز عبور براي كاربر ريشه MySQL خواهد بود. Enter را بزنيد و رمز عبور ايمن را تاييد كنيد:
Output
Please set the password for root here.

New password:

Re-enter new password:

اگر از افزونه اعتبار سنجي گذرواژه استفاده كرده ايد ، در مورد قدرت رمزعبور جديد خود بازخورد دريافت خواهيد كرد. سپس اسكريپت از شما سؤال مي كند كه آيا مي خواهيد رمز عبوري را كه وارد كرده ايد ادامه دهيد يا مي خواهيد يك رمز جديد را وارد كنيد. با فرض اينكه از قدرت رمز عبوري كه تازه وارد كرده ايد راضي هستيد ، Y را براي ادامه اسكريپت وارد كنيد:
Output
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

از اينجا به بعد ، مي توانيد Y و سپس ENTER را فشار دهيد تا پيش فرض براي همه سؤالات بعدي را بپذيريد. با اين كار برخي از كاربران ناشناس و بانك اطلاعاتي تستي حذف مي شوند ، ورود به سيستم ريشه از راه دور غيرفعال مي شود و اين قوانين جديد را بارگذاري مي كند تا MySQL فوراً با تغييراتي كه ايجاد كرده ايد منطبق شود.
توجه داشته باشيد كه حتي اگر يك رمز عبور براي كاربر ريشه MySQL تنظيم كرده ايد ، اين كاربر براي تأييد اعتبار با گذرواژه هنگام اتصال به پوسته MySQL پيكربندي نشده است. در صورت تمايل مي توانيد با دنبال كردن مرحله 3 اين تنظيمات را اعمال كنيد.

مرحله 3 – تنظيم تأييد اعتبار و امتيازات كاربر (اختياري)
در سيستم هاي اوبونتو كه MySQL 5.7 را اجرا مي كند (و نسخه هاي بعدي) ، كاربر ريشه MySQL براي تأييد اعتبار با استفاده از افزونه auth_socket بصورت پيش فرض و نه با گذرواژه تنظيم شده است. اين امر امنيت و قابليت استفاده بيشتر را در بسياري از موارد امكان پذير مي كند ، اما همچنين مي تواند مواردي را پيچيده تر كند كه شما نياز به دسترسي به كاربر توسط يك برنامه خارجي (مانند phpMyAdmin) داريد.
به منظور استفاده از رمز عبور براي اتصال به MySQL به عنوان root ، بايد روش تأييد اعتبار آن را از auth_socket به افزونه ديگري مانند caching_sha2_password يا mysql_native_password تغيير دهيد. براي اين كار ، اعلان MySQL را از پايانه خود باز كنيد:
$ sudo mysql

سپس ، با دستور زير بررسي كنيد كه هر يك از حسابهاي كاربري MySQL شما از كدام روش تأييد اعتبار استفاده ميكند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output
+——————+————————————————————————+———————–+———–+
| user | authentication_string | plugin | host |
+——————+————————————————————————+———————–+———–+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | | auth_socket | localhost |
+——————+————————————————————————+———————–+———–+
5 rows in set (0.00 sec)

در اين مثال ، مي بينيد كه كاربر ريشه با استفاده از افزونه auth_socket ، در واقع تأييد اعتبار مي كند. براي پيكربندي حساب ريشه براي تأييد اعتبار با رمز عبور ، عبارت ALTER USER را اجرا كنيد تا افزونه احراز هويت مورد استفاده خود را تغيير داده و يك رمز عبور جديد تنظيم كنيد.
مطمئن شويد كه رمز عبور را به رمز عبور قوي به انتخاب خود تغيير مي دهيد و آگاه باشيد كه اين دستور رمز ريشه را كه در مرحله 2 تنظيم كرده ايد تغيير مي دهد:
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘password’;

توجه: جمله قبلي ALTER USER كاربر ريشه MySQL را براي تأييد اعتبار با افزونه caching_sha2_password تنظيم مي كند. طبق مطالب رسمي MySQL ، caching_sha2_password افزونه ارجح تأييد هويت MySQL است ، زيرا رمزگذاري ايمن تر پسورد را نسبت به نسخه قديمي تر به همراه دارد ، اما هنوز هم به طور گسترده استفاده مي شود ، mysql_native_password.
با اين حال ، بسياري از برنامه هاي PHP براي مثال phpMyAdmin – با اطمينان با caching_sha2_password كار نمي كنند. اگر قصد استفاده از اين پايگاه داده را با برنامه PHP داريد ، بهتر است تأييد اعتبار ريشه را با mysql_native_password انجام دهيد:
Mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

سپس ، PRUSILEGES FLUSH را اجرا كنيد كه به سرور مجازي مي گويد جداول اعطاي امتياز را مجدد لود كرده و
تغييرات جديد را اعمال كند:
Mysql> FLUSH PRIVILEGES;

روش هاي تأييد اعتبار استفاده شده توسط هر يك از كاربران خود را دوباره بررسي كنيد تا تأييد كنيد كه ريشه ديگر با استفاده از افزونه auth_socket احراز هويت نمي كند:
Mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Output
+——————+————————————————————————+———————–+———–+
| user | authentication_string | plugin | host |
+——————+————————————————————————+———————–+———–+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.xXUq.crEqTjMvhgOIX7B/zki5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | caching_sha2_password | localhost |
+——————+————————————————————————+———————–+———–+
5 rows in set (0.00 sec)

در اين مثال مي توانيد مشاهده كنيد كه كاربر ريشه MySQL اكنون با استفاده از caching_sha2_password تأييد اعتبار مي كند. پس از تأييد اين موضوع روي سرور مجازي خود ، مي توانيد از پوسته MySQL خارج شويد:
Mysql> exit

از طرف ديگر ، به نظر برخي ممكن است اتصال به MySQL با يك كاربر اختصاصي براي گردش كارشان مناسب تر باشد. براي ايجاد چنين كاربري ، بار ديگر پوسته MySQL را باز كنيد:
$ sudo mysql

توجه: اگر احراز هويت رمز عبور را براي ريشه فعال كرده ايد ، همانطور كه در پاراگراف هاي قبلي توضيح داده شد ، براي دسترسي به پوسته MySQL بايد از دستور ديگري استفاده كنيد. موارد زير كلاينت MySQL شما را با حق امتياز كاربر به طور منظم اجرا مي كند و شما فقط با تأييد اعتبار ، امتيازات ادمين را در بانك اطلاعات دريافت خواهيد كرد:
$ mysql -u root -p

از آنجا ، يك كاربر جديد ايجاد كرده و يك رمزعبور قوي به آن بدهيد:
Mysql> CREATE USER ‘sammy’@’localhost’ IDENTIFIED BY ‘password’;

سپس امتيازات مناسب را به كاربر جديد خود اعطا كنيد. به عنوان مثال ، شما مي توانيد امتيازات كاربر را به تمام جداول موجود در ديتابيس و همچنين قدرت اضافه كردن ، تغيير و حذف امتيازهاي كاربر با اين دستور اعطا كنيد:
Mysql> GRANT ALL PRIVILEGES ON *.* TO ‘sammy’@’localhost’ WITH GRANT OPTION;

توجه داشته باشيد كه در اين مرحله ، ديگر نيازي به اجراي فرمان FLUSH PRIVILEGES نداريد. اين دستور فقط در صورت تغيير جدول هاي اعطاي امتياز با استفاده از عباراتي مانند INSERT ، UPDATE يا DELETE مورد نياز است. از آنجا كه شما به جاي تغيير يك كاربر موجود، كاربر جديدي ايجاد كرده ايد،FLUSH PRIVILEGES در اينجا غير ضروري است.
سپس ، از پوسته MySQL خارج شويد:
Mysql> exit

در آخر ، بياييد نصب MySQL را آزمايش كنيم.
مرحله 4 – تست MySQL
صرف نظر از نحوه نصب آن ، MySQL بايد به صورت خودكار شروع به كار كند. براي آزمايش اين موضوع ، وضعيت آن را بررسي كنيد.
$ systemctl status mysql.service

خروجي مشابه زير را مشاهده خواهيد كرد:
Output
● mysql.service – MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2020-04-21 12:56:48 UTC; 6min ago
Main PID: 10382 (mysqld)
Status: “Server is operational”
Tasks: 39 (limit: 1137)
Memory: 370.0M
CGroup: /system.slice/mysql.service
└─10382 /usr/sbin/mysqld

اگر MySQL در حال اجرا نيست ، مي توانيد آن را با sudo systemctl start mysql شروع كنيد.
براي بررسي بيشتر، مي توانيد با استفاده از ابزار mysqladmin ، كه يك كلاينت است و به شما امكان اجراي دستورات ادمين را مي دهد ، به پايگاه داده وصل شويد. به عنوان مثال ، اين دستور مي گويد به عنوان ريشه به MySQL متصل شده (-u root) ، اعلان گذرواژه (-p) را پر كرده و نسخه را برگردانيد.
$ sudo mysqladmin -p -u root version

بايد خروجي مشابه اين را ببينيد:
Output
mysqladmin Ver 8.0.19-0ubuntu5 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version 8.0.19-0ubuntu5
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 10 min 44 sec

Threads: 2 Questions: 25 Slow queries: 0 Opens: 149 Flush tables: 3 Open tables: 69 Queries per second avg: 0.038

اين بدان معني است كه MySQL در حال كار است.
نتيجه
اكنون يك ستاپ اوليه MySQL نصب شده در سرور مجازي خود داريد. در اينجا چند نمونه از مراحل بعدي كه مي توانيد انجام دهيد آورده شده است:
• يك پشته LAMP تنظيم كنيد
• پرس و جوهاي در حال اجرا را با SQL تمرين كنيد

 

برچسب‌ها:MySQLPython

نصب Python 3 روي سرور Ubuntu 18.04

پايتون يك زبان برنامه نويسي انعطاف پذير و همه كاره است كه مي تواند در بسياري از موارد به خاطر داشتن نقاط قوت در اسكريپت ، اتوماسيون ، تجزيه و تحليل داده ها ، يادگيري ماشين و توسعه back-end مورد استفاده قرار گيرد. تيم توسعه پايتون براي اولين بار در سال 1991 با نامي الهام گرفته از گروه طنز بريتانيايي مونتي پايتون، آن را منتشر كردند و ميخواستند پايتون را به زباني تبديل كنند كه استفاده از آن بسيار جالب باشد. ستاپ سريع و سبك نسبتاً ساده و بازخورد فوري در مورد خطاها، پايتون را به يك انتخاب عالي براي مبتديان و توسعه دهندگان با تجربه تبديل كرده است. پايتون 3 جديدترين نسخه اين زبان است و آينده پايتون به حساب مي آيد.
در اين آموزش سرور مجازي Ubuntu 18.04 شما با يك محيط برنامه نويسي Python 3 تنظيم مي شود. برنامه نويسي روي سرور مجازي مزاياي بسياري دارد و از همكاري در پروژه هاي توسعه پشتيباني مي كند. اصول كلي اين آموزش در مورد هرگونه توزيع Debian Linux كاربرد دارد.
پيش نيازها
براي تكميل اين آموزش ، شما بايد يك كاربر غير ريشه با امتيازات sudo در سرور مجازي Ubuntu 18.04 داشته باشيد. براي يادگيري چگونگي دستيابي به اين تنظيمات ، راهنماي ستاپ اوليه دستي سرور مجازي را دنبال كنيد يا اسكريپت خودكار ما را اجرا كنيد.
اگر قبلاً با محيط ترمينال آشنايي نداريد ، مي توانيد مقاله “مقدمه اي بر ترمينال لينوكس” را براي جهت گيري بهتر در مورد ترمينال مطالعه كنيد.
با راه اندازي سرور مجازي و كاربر ، آماده شروع كار هستيد.
مرحله 1 – تنظيم پايتون 3
اوبونتو 18.04 و ساير نسخه هاي دبيان لينوكس ، Python 3 و Python 2 را از قبل نصب شده دارد. براي اطمينان از به روز بودن نسخه هاي خود ، بياييد سيستم را با دستور APT به روز رساني كنيم تا با ابزار بسته بندي پيشرفته اوبونتو همكاري كند:
$ sudo apt update

$ sudo apt -y upgrade

پرچم -y تأييد خواهد كرد كه ما با نصب همه موارد موافق هستيم ، اما بسته به نسخه لينوكس شما ، ممكن است لازم باشد كه با به روزرساني و ارتقاي سيستم ، پيام هاي بيشتري را تأييد كنيد.
پس از اتمام روند ، مي توانيم با تايپ كردن دستور زير نسخه پايتون 3 كه در سيستم نصب شده است را بررسي كنيم:
$ python3 -V

در پنجره ترمينال خروجي دريافت خواهيد كرد كه شماره نسخه را به شما اطلاع مي دهد. در حالي كه ممكن است تعداد متفاوت باشد ، خروجي مشابه اين خواهد بود:
Output
Python 3.6.7

براي مديريت بسته هاي نرم افزاري براي پايتون ، بياييد pip را نصب كنيم ، ابزاري كه بسته هاي برنامه نويسي را كه ممكن است بخواهيم در پروژه هاي توسعه خود استفاده كنيم ، نصب و مديريت خواهد كرد. مي توانيد با خواندن “چگونگي وارد كردن ماژول ها در پايتون 3” در مورد ماژول ها يا بسته هايي كه مي توانيد با pip نصب كنيد اطلاعات كسب كنيد.
$ sudo apt install -y python3-pip

بسته هاي پايتون با تايپ اين دستور قابل نصب هستند:
$ pip3 install package_name

در اينجا ، pack_name مي تواند به هر بسته يا كتابخانه Python مانند Django براي توسعه وب يا NumPy براي محاسبات علمي اشاره كند. بنابراين اگر مي خواهيد NumPy را نصب كنيد ، مي توانيد با دستور pip3 install numpy اين كار را انجام دهيد.
چند بسته و ابزار توسعه ديگر وجود دارد كه بايد اطمينان حاصل شود كه يك مجموعه قوي براي محيط برنامه نويسي خود داريم:
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev

پس از راه اندازي پايتون و نصب pip و ساير ابزارها ، مي توانيم يك محيط مجازي براي پروژه هاي توسعه خود تنظيم كنيم.
مرحله 2 – تنظيم يك محيط مجازي
محيط هاي مجازي شما را قادر مي سازد براي پروژه هاي پايتون فضايي مجزا در سرور مجازي خود داشته باشيد ، اطمينان حاصل كنيد كه هر يك از پروژه هاي شما مي توانند مجموعه اي از متعلقات خاص خود را داشته باشند كه هيچ يك از پروژه هاي ديگر شما را مختل نمي كند.
تنظيم يك محيط برنامه نويسي ، كنترل بيشتري بر روي پروژه هاي Python و نحوه دستيابي به نسخه هاي مختلف بسته ها براي ما فراهم مي كند. اين امر به ويژه هنگام كار با بسته هاي شخص ثالث بسيار مهم است.
مي توانيد همانطور كه مي خواهيد محيط برنامه نويسي Python را تنظيم كنيد. هر محيط در واقع يك فهرست يا پوشه اي در سرور مجازي شماست كه چندين اسكريپت در آن وجود دارد تا بتواند به عنوان يك محيط عمل كند.
در حالي كه چند روش براي دستيابي به يك محيط برنامه نويسي در پايتون وجود دارد ، ما در اينجا از ماژول venv استفاده مي كنيم كه بخشي از كتابخانه استاندارد Python 3 است. بگذاريد venv را با تايپ كردن دستور زير نصب كنيم:
$ sudo apt install -y python3-venv

با استفاده از اين نصب ، آماده ايجاد محيط هستيم. بايد يا انتخاب كنيم كه مي خواهيم محيط هاي برنامه نويسي پايتون را در كدام ديركتوري قرار دهيم ، يا يك ديركتوري جديد با mkdir ايجاد كنيم ، مانند:
$ kdir environments

$ cd environments
وقتي در دايركتوري قرار گرفتيد كه ميخواهيد محيط در آن جا باشد ، مي توانيد با اجراي دستور زير محيطي ايجاد كنيد:
$ python3.6 -m venv my_env

در اصل ، pyvenv يك ديركتوري جديد ايجاد مي كند كه شامل چند آيتم است كه مي توانيم با دستور ls آنها را مشاهده كنيم:
$ ls my_env

Output
bin include lib lib64 pyvenv.cfg share

اين فايلها با هم كار مي كنند تا اطمينان حاصل كنند كه پروژه هاي شما از بستر وسيع دستگاه محلي شما جدا شده اند ، به گونه اي كه فايل هاي سيستم و فايل هاي پروژه مخلوط نشوند. اين روش خوبي براي كنترل نسخه و اطمينان از دسترسي هر يك از پروژه هاي شما به بسته هاي خاص مورد نياز خود است. Python Wheels يك فرمت بسته ساخته شده براي Python است كه مي تواند با كاهش تعداد دفعات لازم براي كامپايل ، باعث افزايش سرعت توليد نرم افزار شود ، و در ديركتوري share اوبونتو 18.04 قرار خواهد گرفت.
براي استفاده از اين محيط ، بايد آن را فعال كنيد ، كه مي توانيد با تايپ دستور زير كه اسكريپت activate  را فراخواني مي كند به آن دست پيدا كنيد.
$ source my_env/bin/activate

خط فرمان شما اكنون با نام محيط شما پيشوند داده مي شود ، در اين حالت my_env نام دارد. بسته به اينكه كدام نسخه لينوكس را اجرا ميكنيد، پيشوند شما ممكن است متفاوت باشد ، اما نام محيط شما در پرانتز بايد اولين چيزي باشد كه در خط python مشاهده مي كنيد:
(my_env) Sammy@ubuntu:~/environments$
اين پيشوند به ما اطلاع مي دهد كه محيط my_env در حال حاضر فعال است ، به اين معني كه وقتي ما در اينجا برنامه هايي را ايجاد مي كنيم آنها فقط از تنظيمات و بسته هاي خاص اين محيط استفاده مي كنند.
توجه: در محيط مجازي مي توانيد به جاي python3 از فرمان python استفاده كنيد و در صورت تمايل به جاي pip3 از pip استفاده كنيد. اگر در خارج از محيط خود از پايتون 3 در دستگاه خود استفاده مي كنيد ، لازم است كه از دستورات python3 و pip3 استفاده كنيد.

بعد از طي كردن اين مراحل ، محيط مجازي شما آماده استفاده است.
مرحله 3 – ايجاد يك برنامه ” hello, world ”
اكنون كه محيط مجازي ما تنظيم شده است ، بياييد يك برنامه ” “hello, world معمولي ايجاد كنيم. اين امر به ما امكان مي دهد تا محيط خود را مورد آزمايش قرار دهيم و اين امكان را براي ما فراهم مي كند كه اگر قبلاً با پايتون كار نكرده ايم، بيشتر با آن آشنا شويم.
براي اين كار ، يك ويرايشگر متن خط فرمان مانند nano را باز خواهيم كرد و يك فايل جديد ايجاد مي كنيم:
(my_env) Sammy@ubuntu:~/environments$ nano hello.py

پس از باز شدن فايل متني در پنجره ترمينال ، برنامه خود را تايپ مي كنيم:
print(“Hello, World!”)
Copy
با زدن كليدهاي CTRL و X از nano خارج شويد و هنگامي كه از شما خواسته شد فايل را ذخيره كنيد y را فشار دهيد.
پس از بيرون آمدن از nano و بازگشت به پوسته خود ، اجازه دهيد برنامه را اجرا كنيم:
(my_env) Sammy@ubuntu:~/environments$ python hello.py

برنامه hello.py كه به تازگي ايجاد كرده ايد بايد باعث شود ترمينال شما خروجي زير را توليد كند:
Output
Hello, World!

براي ترك محيط ، دستور deactivate را تايپ كنيد و به ديركتوري اصلي خود باز خواهيد گشت.
نتيجه
تبريك مي گويم! در اين مرحله شما يك محيط برنامه نويسي پايتون 3 در سرور مجازي Ubuntu Linux خود تنظيم كرده ايد و هم اكنون مي توانيد يك پروژه رمزگذاري را شروع كنيد!
اگر از يك دستگاه محلي به جاي سرور مجازي استفاده مي كنيد ، به مجموعه آموزشهاي مربوط به سيستم عامل خود در مجموعه “نحوه نصب و راه اندازي يك محيط برنامه نويسي محلي براي پايتون 3” مراجعه كنيد.
با آماده شدن سرور مجازي براي توسعه نرم افزار ، مي توانيد با خواندن كتاب الكترونيكي رايگان نحوه كد نويسي در Python 3 ، يا مراجعه به آموزش هاي پروژه برنامه نويسي ، اطلاعات بيشتري درباره كد نويسي در پايتون كسب كنيد.

 

برچسب‌ها:Debian LinuxDjangoNumPy

نحوه نصب Python 3 روي سرور Ubuntu 20.04

زبان برنامه نويسي پايتون يك انتخاب عالي هم براي مبتديان و هم توسعه دهندگان با تجربه ميباشد. اين زبان انعطاف پذير و همه كاره است و مي تواند در بسياري از موارد به خاطر داشتن نقاط قوت در اسكريپت ، اتوماسيون ، تجزيه و تحليل داده ها ، يادگيري ماشين و توسعه back-end مورد استفاده قرار گيرد. تيم توسعه پايتون براي اولين بار در سال 1991 با نامي الهام گرفته از گروه طنز بريتانيايي مونتي پايتون، آن را منتشر كردند و ميخواستند پايتون را به زباني تبديل كنند كه استفاده از آن بسيار جالب باشد.
در اين آموزش سرور مجازي Ubuntu 20.04 شما با يك محيط برنامه نويسي Python 3 تنظيم مي شود. برنامه نويسي روي سرور مجازي مزاياي بسياري دارد و از همكاري در پروژه هاي توسعه پشتيباني مي كند. اصول كلي اين آموزش در مورد هرگونه توزيع Debian Linux كاربرد دارد.
پيش نيازها
براي تكميل اين آموزش ، شما بايد يك كاربر غير ريشه با امتيازات sudo در سرور مجازي Ubuntu 20.04 داشته باشيد. براي يادگيري چگونگي دستيابي به اين راه اندازي ، راهنماي تنظيم اوليه سرور مجازي ما را دنبال كنيد.
اگر قبلاً با محيط ترمينال آشنايي نداريد ، مي توانيد مقاله “مقدمه اي بر ترمينال لينوكس” را براي جهت دهي بهتر مطالعه كنيد.
با راه اندازي سرور مجازي و كاربر ، آماده شروع كار هستيد.
مرحله 1 – تنظيم پايتون 3
اوبونتو 20.04 و ساير نسخه هاي دبيان لينوكس ، Python 3 و Python 2 را از قبل نصب شده دارد. براي اطمينان از به روز بودن نسخه هاي خود ، بياييد سيستم را با دستور APT به روز رساني كنيم تا با ابزار بسته بندي پيشرفته اوبونتو همكاري كند:
$ sudo apt update

$ sudo apt -y upgrade

پرچم -y تأييد خواهد كرد كه ما با نصب همه موارد موافق هستيم ، اما بسته به نسخه لينوكس شما ، ممكن است لازم باشد كه با به روزرساني و ارتقاي سيستم ، پيام هاي بيشتري را تأييد كنيد.
پس از اتمام روند ، مي توانيم با تايپ كردن دستور زير نسخه پايتون 3 كه در سيستم نصب شده است را بررسي كنيم:
$ python3 -V

در پنجره ترمينال خروجي دريافت خواهيد كرد كه شماره نسخه را به شما اطلاع مي دهد. در حالي كه ممكن است تعداد متفاوت باشد ، خروجي مشابه اين خواهد بود:
Output
Python 3.8.2

براي مديريت بسته هاي نرم افزاري براي پايتون ، بياييد pip را نصب كنيم ، ابزاري كه بسته هاي برنامه نويسي را كه ممكن است بخواهيم در پروژه هاي توسعه خود استفاده كنيم ، نصب و مديريت خواهد كرد. مي توانيد با خواندن “چگونگي وارد كردن ماژول ها در پايتون 3” در مورد ماژول ها يا بسته هايي كه مي توانيد با pip نصب كنيد اطلاعات كسب كنيد.
$ sudo apt install -y python3-pip

بسته هاي پايتون با تايپ اين دستور قابل نصب هستند:
$ pip3 install package_name

در اينجا ، pack_name مي تواند به هر بسته يا كتابخانه Python مانند Django براي توسعه وب يا NumPy براي محاسبات علمي اشاره كند. بنابراين اگر مي خواهيد NumPy را نصب كنيد ، مي توانيد با دستور pip3 install numpy اين كار را انجام دهيد.
چند بسته و ابزار توسعه ديگر وجود دارد كه بايد اطمينان حاصل شود كه يك مجموعه قوي براي محيط برنامه نويسي خود داريم:
$ sudo apt install -y build-essential libssl-dev libffi-dev python3-dev

پس از راه اندازي پايتون و نصب pip و ساير ابزارها ، مي توانيم يك محيط مجازي براي پروژه هاي توسعه خود تنظيم كنيم.
مرحله 2 – تنظيم يك محيط مجازي
محيط هاي مجازي شما را قادر مي سازد براي پروژه هاي پايتون فضايي مجزا در سرور مجازي خود داشته باشيد ، اطمينان حاصل كنيد كه هر يك از پروژه هاي شما مي توانند مجموعه اي از متعلقات خاص خود را داشته باشند كه هيچ يك از پروژه هاي ديگر شما را مختل نمي كند.
تنظيم يك محيط برنامه نويسي ، كنترل بيشتري بر روي پروژه هاي Python و نحوه دستيابي به نسخه هاي مختلف بسته ها براي ما فراهم مي كند. اين امر به ويژه هنگام كار با بسته هاي شخص ثالث بسيار مهم است.
مي توانيد همانطور كه مي خواهيد محيط برنامه نويسي Python را تنظيم كنيد. هر محيط در واقع يك ديركتوري يا پوشه اي در سرور مجازي شماست كه چندين اسكريپت در آن وجود دارد تا بتواند به عنوان يك محيط عمل كند.
در حالي كه چند روش براي دستيابي به يك محيط برنامه نويسي در پايتون وجود دارد ، ما در اينجا از ماژول venv استفاده مي كنيم كه بخشي از كتابخانه استاندارد Python 3 است. بگذاريد venv را با تايپ كردن دستور زير نصب كنيم:
$ sudo apt install -y python3-venv

با استفاده از اين نصب ، آماده ايجاد محيط هستيم. بايد يا انتخاب كنيم كه مي خواهيم محيط هاي برنامه نويسي پايتون را در كدام ديركتوري قرار دهيم ، يا يك ديركتوري جديد با mkdir ايجاد كنيم ، مانند:
$ kdir environments

$ cd environments
وقتي در دايركتوري قرار گرفتيد كه ميخواهيد محيط در آن جا باشد ، مي توانيد با اجراي دستور زير محيطي ايجاد كنيد:
$ python3.6 -m venv my_env

در اصل ، pyvenv يك ديركتوري جديد ايجاد مي كند كه شامل چند آيتم است كه مي توانيم با دستور ls آنها را مشاهده كنيم:
$ ls my_env

Output
bin include lib lib64 pyvenv.cfg share

اين فايلها با هم كار مي كنند تا اطمينان حاصل كنند كه پروژه هاي شما از بستر وسيع دستگاه محلي شما جدا شده اند ، به گونه اي كه فايل هاي سيستم و فايل هاي پروژه مخلوط نشوند. اين روش خوبي براي كنترل نسخه و اطمينان از دسترسي هر يك از پروژه هاي شما به بسته هاي خاص مورد نياز خود است. Python Wheels يك فرمت بسته ساخته شده براي Python است كه مي تواند با كاهش تعداد دفعات لازم براي كامپايل ، باعث افزايش سرعت توليد نرم افزار شود ، و در ديركتوري share اوبونتو 20.04 قرار خواهد گرفت.
براي استفاده از اين محيط ، بايد آن را فعال كنيد ، كه مي توانيد با تايپ دستور زير كه اسكريپت activate  را فراخواني مي كند به آن دست پيدا كنيد.
$ source my_env/bin/activate

خط فرمان شما اكنون با نام محيط شما پيشوند داده مي شود ، در اين حالت my_env نام دارد. بسته به اينكه كدام نسخه لينوكس را اجرا ميكنيد، پيشوند شما ممكن است متفاوت باشد ، اما نام محيط شما در پرانتز بايد اولين چيزي باشد كه در خط python مشاهده مي كنيد:
(my_env) Sammy@ubuntu:~/environments$
اين پيشوند به ما اطلاع مي دهد كه محيط my_env در حال حاضر فعال است ، به اين معني كه وقتي ما در اينجا برنامه هايي را ايجاد مي كنيم آنها فقط از تنظيمات و بسته هاي خاص اين محيط استفاده مي كنند.
توجه: در محيط مجازي مي توانيد به جاي python3 از فرمان python استفاده كنيد و در صورت تمايل به جاي pip3 از pip استفاده كنيد. اگر در خارج از محيط خود از پايتون 3 در دستگاه خود استفاده مي كنيد ، لازم است كه از دستورات python3 و pip3 استفاده كنيد.

بعد از طي كردن اين مراحل ، محيط مجازي شما آماده استفاده است.
مرحله 3 – ايجاد يك برنامه ” hello, world ”
اكنون كه محيط مجازي ما تنظيم شده است ، بياييد يك برنامه ” “hello, world معمولي ايجاد كنيم. اين امر به ما امكان مي دهد تا محيط خود را مورد آزمايش قرار دهيم و اين امكان را براي ما فراهم مي كند كه اگر قبلاً با پايتون كار نكرده ايم، بيشتر با آن آشنا شويم.
براي اين كار ، يك ويرايشگر متن خط فرمان مانند nano را باز خواهيم كرد و يك فايل جديد ايجاد مي كنيم:
(my_env) Sammy@ubuntu:~/environments$ nano hello.py

پس از باز شدن فايل متني در پنجره ترمينال ، برنامه خود را تايپ مي كنيم:
print(“Hello, World!”)
Copy
با زدن كليدهاي CTRL و X از nano خارج شويد و هنگامي كه از شما خواسته شد فايل را ذخيره كنيد y را فشار دهيد.
پس از بيرون آمدن از nano و بازگشت به پوسته خود ، اجازه دهيد برنامه را اجرا كنيم:
(my_env) Sammy@ubuntu:~/environments$ python hello.py

برنامه hello.py كه به تازگي ايجاد كرده ايد بايد باعث شود ترمينال شما خروجي زير را توليد كند:
Output
Hello, World!

براي ترك محيط ، دستور deactivate را تايپ كنيد و به ديركتوري اصلي خود باز خواهيد گشت.
نتيجه
تبريك مي گويم! در اين مرحله شما يك محيط برنامه نويسي پايتون 3 در سرور مجازي Ubuntu Linux خود تنظيم كرده ايد و هم اكنون مي توانيد يك پروژه رمزگذاري را شروع كنيد!
اگر از يك دستگاه محلي به جاي سرور مجازي استفاده مي كنيد ، به مجموعه آموزشهاي مربوط به سيستم عامل خود در مجموعه “نحوه نصب و راه اندازي يك محيط برنامه نويسي محلي براي پايتون 3” مراجعه كنيد.
با آماده شدن سرور مجازي براي توسعه نرم افزار ، مي توانيد با خواندن كتاب الكترونيكي رايگان نحوه كد نويسي در Python 3 ، يا مراجعه به آموزش هاي پروژه برنامه نويسي ، اطلاعات بيشتري درباره كد نويسي در پايتون كسب كنيد.

 

برچسب‌ها:Ubuntu Linuxاسكريپت activate

نصب Linux،Apache،MySQL،PHP LAMP در اوبونتو 20.04

پشته “LAMP” گروهي از نرم افزارهاي منبع باز است كه به طور معمول به منظور فعال كردن سرور مجازي براي ميزباني وب سايتهاي پويا و برنامه هاي وب كه به زبان PHP نوشته شده است ، با هم نصب مي شوند. اين اصطلاح مخفف سيستم عامل لينوكس داراي سرور مجازي وب Apache است. داده هاي سايت در يك پايگاه داده MySQL ذخيره مي شوند و محتواي پويا توسط PHP پردازش مي شود.
در اين راهنما ، يك پشته LAMP را روي يك سرور مجازي Ubuntu 20.04 نصب خواهيم كرد.
پيش نيازها
براي تكميل اين آموزش ، نياز به داشتن يك سرور مجازي اوبونتو 20.04 با يك حساب كاربري غير ريشه فعال با sudo و يك فايروال پايه داريد كه مي توان با استفاده از راهنماي تنظيم اوليه سرور مجازي ما براي اوبونتو 20.04 اين كار را انجام داد.
مرحله 1 – نصب Apache و به روزرساني فايروال
وب سرور مجازي Apache از محبوب ترين سرور مجازي هاي وب در جهان است. به خوبي مستند شده است ، جامعه فعالي از كاربران دارد و در بيشتر تاريخ وب مورد استفاده گسترده قرار گرفته است ، و اين باعث مي شود آن را به عنوان يك گزينه پيش فرض عالي براي ميزباني وب سايت انتخاب كنيم.
Apache را با استفاده از مدير بسته Ubuntu يعني apt نصب كنيد:
⦁ $ sudo apt update

⦁ $ sudo apt install apache2

اگر اولين بار است كه در اين بخش از sudo استفاده مي كنيد ، از شما خواسته مي شود كه رمزعبور كاربر خود را ارائه كنيد تا تأييد كنيد كه از امتيازات مناسب براي مديريت بسته هاي سيستم با apt برخوردار هستيد. از شما خواسته مي شود كه با فشار دادن Y ، سپس enter نصب Apache را تأييد كنيد.
پس از اتمام نصب ، بايد تنظيمات فايروال خود را تنظيم كنيد تا ترافيك HTTP و HTTPS امكان پذير باشد. UFW داراي پروفايل هاي متفاوتي است كه مي توانيد براي دستيابي به اين هدف اهرم كنيد. براي ليست كردن تمام پروفايل هاي برنامه UFW موجود ، مي توانيد اين دستور را اجرا كنيد:
⦁ $ sudo ufw app list

خروجي مانند اين را خواهيد ديد:
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

معني هر يك از اين پروفايل ها آورده شده است:
⦁ Apache: اين نمايه فقط پورت 80 (ترافيك وب عادي و بدون رمزگذاري) را باز مي كند.
⦁ Apache Full: اين پروفايل هر دو پورت 80 (ترافيك وب عادي و بدون رمزگذاري) و پورت 443 (ترافيك رمزگذاري شده TLS / SSL) را باز مي كند.
⦁ Apache Secure: اين نمايه فقط پورت 443 (ترافيك رمزگذاري شده TLS / SSL) را باز مي كند.
در حال حاضر ، بهتر است فقط اجازه دسترسي اتصالات در پورت 80 را بدهيد ، زيرا اين يك نصب جديد Apache است و هنوز گواهي TLS / SSL پيكربندي شده براي اجازه ترافيك HTTPS در سرور مجازي خود نداريد.
فقط براي ترافيك در پورت 80 ، از نمايه Apache استفاده كنيد:
⦁ $ sudo ufw allow in “Apache”

مي توانيد تغيير را با اين دستور تأييد كنيد:
⦁ $ sudo ufw status

Output
Status: active

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

ترافيك پورت 80 اكنون از طريق فايروال مجاز است.
با مراجعه به آدرس IP عمومي سرور مجازي خود در مرورگر وب ، مي توانيد بلافاصله بررسي را انجام دهيد تا تأييد كنيد كه همه چيز به درستي پيش ميرود ( اگر در حال حاضر اين اطلاعات را نداريد ، نوشته زير اين عنوان را ببينيد تا بفهميد آدرس IP عمومي تان چيست):
http://your_server_ip

صفحه پيش فرض Ubuntu 20.04 Apache را مشاهده مي كنيد ، كه براي اهداف اطلاع رساني و آزمايشي ميباشد. بايد چيزي شبيه به اين باشد:

اگر اين صفحه را مشاهده كرديد ، اكنون سرور مجازي وب شما به درستي از طريق فايروال نصب شده و در دسترس است.
چگونه آدرس IP عمومي سرور مجازي خود را پيدا كنيد
اگر نمي دانيد آدرس IP عمومي سرور مجازي شما چيست ، روش هاي مختلفي براي يافتن آن وجود دارد. معمولاً آدرسي است كه براي اتصال به سرور مجازي خود از طريق SSH استفاده مي كنيد.
چند روش مختلف براي انجام اين كار از خط فرمان وجود دارد. ابتدا مي توانيد با تايپ دستور زير از ابزار iproute2 براي دريافت آدرس IP خود استفاده كنيد:
⦁ $ ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s//.*$//’

اين دستور دو يا سه خط قبلي را به شما باز مي گرداند. همه آنها آدرس هاي صحيحي هستند ، اما رايانه شما فقط مي تواند از يكي از آنها استفاده كند ، بنابراين هر يك از آنها را امتحان كنيد.
روش ديگر استفاده از ابزار curl براي تماس با طرف خارجي است تا به شما بگويد سرور مجازي شما را چگونه مشاهده ميكند. اين كار با پرسيدن آدرس IP شما از يك سرور مجازي خاص انجام ميشود:
⦁ $ curl http://icanhazip.com

صرف نظر از روشي كه براي دريافت آدرس IP خود استفاده مي كنيد ، آن را در نوار آدرس مرورگر وب خود وارد كنيد تا صفحه پيش فرض Apache را مشاهده كنيد.
مرحله 2 – نصب MySQL
اكنون كه وب سرور خود را فعال و راه اندازي كرده ايد ، بايد سيستم پايگاه داده را نصب كنيد تا بتوانيد داده هاي سايت خود را ذخيره و مديريت كنيد. MySQL يك سيستم مديريت پايگاه داده محبوب است كه در محيط هاي PHP استفاده مي شود.
دوباره ، براي به دست آوردن و نصب اين نرم افزار از apt استفاده كنيد:
⦁ $ sudo apt install mysql-server

در صورت درخواست ، نصب را با تايپ Y و سپس ENTER تأييد كنيد.
پس از اتمام نصب ، توصيه مي شود اسكريپت امنيتي را اجرا كنيد كه از طريق MySQL از قبل نصب شده باشد. اين اسكريپت برخي از تنظيمات پيش فرض ناامن را حذف كرده و دسترسي به سيستم پايگاه داده شما را غيرفعال مي كند. اسكريپت تعاملي را با اجراي اين دستور شروع كنيد:
⦁ $ sudo mysql_secure_installation

با استفاده از اين گزينه مي توانيد پلاگين Validate PASSWORD را پيكربندي كنيد.
توجه: فعال كردن اين ويژگي چيزي مثل فراخواني قضاوت است. در صورت فعال بودن ، گذرواژهاي ناسازگار با معيارهاي مشخص توسط خطاي MySQL رد مي شوند. بهتر است اعتبارسنجي را غيرفعال رها كنيد ، اما هميشه بايد از رمز عبورهاي قوي و منحصر به فرد براي اعتبارات پايگاه داده استفاده كنيد.

براي بله yes را تايپ كنيد و يا هر چيز ديگري كه بدون فعال سازي كار را ادامه ميدهد.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

اگر yes را جواب بدهيد ، از شما خواسته مي شود يك سطح اعتبار گذرواژه را انتخاب كنيد. به خاطر داشته باشيد اگر 2 را براي قويترين سطح وارد كنيد ، بايد گذرواژه اي شامل اعداد ، حروف بزرگ و كوچك و علائم خاص وارد كنيد ، در غير اين صورت خطايي دريافت خواهيد كرد.
There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

صرف نظر از اين كه شما تصميم به تنظيم PLUGIN VALIDATE PASSWORD گرفته ايد ، سرور مجازي از شما درخواست مي كند كه يك رمز عبور را براي كاربر ريشه MySQL انتخاب و تأييد كنيد. اين كاربر نبايد با كاربر ريشه سيستم اشتباه گرفته شود. كاربر ريشه بانك اطلاعاتي يك كاربر ادمين با امتيازات كامل براي دسترسي به سيستم ديتابيس است. حتي اگر روش احراز هويت پيش فرض براي كاربر ريشه MySQL ، استفاده از يك رمزعبور را ناديده مي گيرد ، حتي اگر پسوردي تنظيم شده باشد ، بايد يك رمزعبور قوي را در اينجا به عنوان يك اقدام امنيتي اضافي تعريف كنيد. به صورت مختصر به اين مورد خواهيم پرداخت.
اگر اعتبار سنجي رمز عبور را فعال كرده باشيد ، قدرت رمز عبور براي رمز ريشه كه تازه وارد كرده ايد به شما نشان داده مي شود و سرور مجازي تان از شما سؤال مي كند كه آيا مي خواهيد با آن رمز عبور ادامه دهيد يا خير. اگر از گذرواژه فعلي خود راضي هستيد ، “yes” را وارد كنيد:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
براي بقيه سؤالات ، Y را فشار داده و در هر اعلان كليد ENTER را بزنيد. با اين كار برخي از كاربران ناشناس و بانك اطلاعاتي آزمايشي حذف مي شوند ، ورود به سيستم ريشه از راه دور غيرفعال مي شود و اين قوانين جديد بارگذاري مي شوند تا MySQL فوراً با تغييراتي كه ايجاد كرده ايد منطبق شود.
پس از اتمام ، مي توانيد با تايپ دستور زير بررسي كنيد كه آيا ميتوانيد به كنسول MySQL وارد شويد:
⦁ sudo mysql

با اين كار به سرور مجازي MySQL به عنوان كاربر ريشه پايگاه داده ادمين متصل مي شويد ، كه با استفاده از sudo هنگام اجراي اين دستور استنباط مي شود. بايد خروجي مانند اين را مشاهده كنيد:
Output
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 22
Server version: 8.0.19-0ubuntu5 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.

mysql>

براي خروج از كنسول MySQL ، اين دستور را تايپ كنيد:
mysql> exit

توجه كنيد كه لازم نيست براي اتصال به عنوان كاربر اصلي ، گذرواژه ارائه كنيد ، حتي اگر هنگام اجراي اسكريپت mysql_secure_installation ، پسوردي تعريف كرده باشيد. اين بدان دليل است كه روش تأييد اعتبار پيش فرض براي كاربر MySQL ادمين به جاي رمز عبور، روش unix_socket است. حتي اگر ممكن است اين مسئله در ابتدا يك نگراني امنيتي به نظر برسد ، باعث مي شود سرور مجازي پايگاه داده ايمن تر شود زيرا تنها كاربراني كه اجازه ورود به عنوان كاربر ريشه MySQL را دارند ، كاربران سيستم با امتيازات sudo هستند كه از طريق كنسول يا برنامه اي با همان امتيازات ، وارد سيستم مي شوند. در عمل ، اين بدان معناست كه شما قادر نخواهيد بود از كاربر ريشه پايگاه داده ادمين براي اتصال به برنامه PHP خود استفاده كنيد. در صورت تغيير روش احراز هويت پيش فرض از unix_socket به رمز عبور، تنظيم گذرواژه براي حساب ريشه MySQL به عنوان محافظ عمل مي كند.
براي افزايش امنيت ، بهتر است براي هر بانك اطلاعاتي ، حسابهاي كاربري اختصاصي با امتيازات گسترده تري تنظيم كنيد ، به خصوص اگر قصد داريد چندين پايگاه داده را در سرور مجازي خود داشته باشيد.
توجه: در زمان نوشتن اين راهنما، كتابخانه بومي MySQL PHP ، يعني mysqlnd از caching_sha2_authentication، روش احراز هويت پيش فرض براي MySQL 8، پشتيباني نمي كند. به همين دليل ، هنگام ايجاد كاربران ديتابيس براي برنامه هاي PHP در MySQL 8 ، بايد مطمئن باشيد كه به گونه اي پيكربندي كرده ايد كه به جاي آن از mysql_native_password استفاده كنند. ما در مرحله 6 نحوه انجام اين كار را نشان خواهيم داد.

سرور مجازي MySQL شما اكنون نصب و ايمن شده است. در مرحله بعد ، PHP ، مؤلفه نهايي را در پشته LAMP نصب خواهيم كرد.
مرحله 3 – نصب PHP
شما Apache را براي ارائه خدمات خود و MySQL را براي ذخيره سازي و مديريت داده هاي خود نصب كرده ايد. PHP مؤلفه اي از ستاپ ما است كه كد را براي نمايش محتواي پويا به كاربر نهايي پردازش مي كند. علاوه بر بسته php ، به php-mysql ، يك ماژول PHP نياز خواهيد داشت كه به PHP اجازه مي دهد تا با بانكهاي اطلاعاتي مبتني بر MySQL ارتباط برقرار كند. براي فعال سازي Apache براي مديريت فايل هاي PHP ، به libapache2-mod-php نيز نياز خواهيد داشت. بسته هاي اصلي PHP بصورت خودكار به عنوان متعلقات نصب مي شوند.
براي نصب اين بسته ها ، اين دستور را اجرا كنيد:
⦁ $ sudo apt install php libapache2-mod-php php-mysql

پس از اتمام نصب ، مي توانيد دستور زير را براي تأييد نسخه PHP خود اجرا كنيد:
⦁ $ php -v

Output
PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

در اين مرحله ، پشته LAMP شما كاملاً عملياتي است ، اما قبل از اينكه بتوانيد تنظيمات خود را با يك اسكريپت PHP تست كنيد ، بهتر است يك هاست مناسب Apache Virtual را براي نگهداري فايل ها و پوشه هاي وب سايت خود تنظيم كنيد. ما اين كار را در مرحله بعدي انجام خواهيم داد.
مرحله 4 – ايجاد يك هاست مجازي براي وب سايت خود
هنگام استفاده از وب سرور مجازي Apache ، مي توانيد هاست هاي مجازي (مشابه بلوك هاي سرور مجازي در Nginx) ايجاد كنيد تا جزئيات پيكربندي را كپسوله كنيد و هاست بيش از يك دامنه از يك سرور واحد باشيد. در اين راهنما دامنه اي به نام your_domain تنظيم خواهيم كرد ، اما شما بايد آن را با نام دامنه خود جايگزين كنيد.
Apache در Ubuntu 20.04 داراي يك بلوك سرور مجازي است كه بصورت پيش فرض فعال شده است تا براي ارائه اسناد از ديركتوري / var / www / html پيكربندي شود. اگرچه براي اين يك سايت واحد به خوبي كار مي كند ، اما اگر هاست چندين سايت باشيد ، مي تواند مشكل ساز شود. به جاي اصلاح / var / www / html ، يك ساختار دايركتوري را در / var / www براي سايت your_domain ايجاد خواهيم كرد ، و / var / www / html را در جاي خود به عنوان دايركتوري پيش فرض قرار مي دهيم كه در صورتي كه درخواست كلاينت با هيچ يك از سايت ها منطبق نبود، ارائه شود.
دايركتوري براي your_domain را به شرح زير ايجاد كنيد:
⦁ $ sudo mkdir /var/www/your_domain

در مرحله بعد ، مالكيت دايركتوري را به متغير محيط $USER اختصاص دهيد ، كه كاربر فعلي سيستم شما را ارجاع خواهد داد:
⦁ $ sudo chown -R $USER:$USER /var/www/your_domain

سپس ، با استفاده از ويرايشگر خط فرمان مورد نظر خود ، يك فايل پيكربندي جديد در ديركتوري sites-available Apache باز كنيد. در اينجا ، ما از nano استفاده خواهيم كرد:
⦁ $ sudo nano /etc/apache2/sites-available/your_domain.conf

با اين كار يك فايل جديد خالي ايجاد مي شود. پيكربندي بدون اسكلت زير را در آن قرار دهيد:
/etc/apache2/sites-available/your_domain.conf

ServerName your_domain
ServerAlias www.your_domain
ServerAdmin webmaster@localhost
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

پس از اتمام كار فايل را ذخيره كنيد و ببنديد. اگر از nano استفاده ميكنيد ميتوانيد با فشردن CTRL+X سپس Yو ENTERاين كار را انجام دهيد.
با استفاده از اين پيكربندي VirtualHost ، به Apache مي گوييم تا با استفاده از / var / www / your_domain به عنوان دايركتوري ريشه وب ، به your_domain سرويس دهي كند. اگر مي خواهيد Apache را بدون نام دامنه تست كنيد ، مي توانيد با اضافه كردن يك كاراكتر # در ابتداي خطوط هر گزينه ، گزينه هاي ServerName و ServerAlias ​​را حذف يا اضافه كنيد.
اكنون مي توانيد از a2ensite براي فعال كردن هاست مجازي جديد استفاده كنيد:
⦁ $ sudo a2ensite your_domain

ممكن است بخواهيد وب سايت پيش فرض نصب شده با Apache را غيرفعال كنيد. در صورت عدم استفاده از نام دامنه سفارشي لازم نيست زيرا در اين حالت پيكربندي پيش فرض Apache باعث مي شود هاست مجازي شما بازنويسي شود. براي غيرفعال كردن وب سايت پيش فرض Apache ، اين دستور را تايپ كنيد:
⦁ $ sudo a2dissite 000-default

براي اطمينان از اينكه فايل پيكربندي شما حاوي خطاهاي نحوي نيست ، اجرا كنيد:
⦁ $ sudo apache2ctl configtest

در آخر ، Apache را مجدد لود كنيد تا اين تغييرات به مرحله اجرا درآيند:
⦁ $ sudo systemctl reload apache2

وب سايت جديد شما اكنون فعال است ، اما ريشه وب / var / www / your_domain هنوز خالي است. يك فايل index.html در آن مكان ايجاد كنيد تا بتوانيم آزمايش كنيم كه هاست مجازي مطابق آنچه انتظار مي رود كار ميكند:
⦁ $ nano /var/www/your_domain/index.html

محتواي زير را در اين فايل وارد كنيد:
/var/www/your_domain/index.html


your_domain website


Hello World!

This is the landing page of your_domain.



اكنون به مرورگر خود برويد و يك بار ديگر به نام دامنه يا آدرس IP سرور مجازي خود دسترسي پيدا كنيد:
http://server_domain_or_IP

صفحه اي را به اين شكل مشاهده خواهيد كرد:

اگر اين صفحه را مشاهده كرديد ، به اين معني است كه هاست مجازي Apache شما مطابق آنچه انتظار مي رود كار مي كند.
مي توانيد تا زماني كه يك فايل index.php تنظيم كنيد تا جايگزين آن شود ، اين فايل را به صورت يك صفحه فرود موقت براي برنامه خود باقي بگذاريد. پس از انجام اين كار ، به ياد داشته باشيد كه فايل index.html را از ريشه سند خود حذف يا تغيير نام دهيد ، زيرا به طور پيش فرض بر يك فايل index.php پيشي مي گيرد.
نكته اي درباره DirectoryIndex در Apache
با تنظيمات پيش فرض DirectoryIndex در Apache ، فايلي با نام index.html هميشه بر فايل index.php اولويت خواهد داشت. اين ويژگي براي ايجاد صفحات نگهداري در برنامه هاي PHP ، با ايجاد يك فايل موقت index.html حاوي يك پيام آموزنده براي بازديد كنندگان ، مفيد است. از آنجا كه اين صفحه بر صفحه index.php ارجحيت دارد ، سپس به صفحه فرود برنامه تبديل خواهد شد. پس از اتمام نگهداري، index.html تغيير نام داده يا از ريشه سند خارج مي شود و صفحه برنامه معمولي را برمي گرداند.
اگر مي خواهيد اين رفتار را تغيير دهيد ، بايد فايل /etc/apache2/mods-enabled/dir.conf را ويرايش كرده و نظمي را كه در آن ديركتوري index.php در دستورالعمل DirectoryIndex ذكر شده است اصلاح كنيد:
⦁ $ sudo nano /etc/apache2/mods-enabled/dir.conf

/etc/apache2/mods-enabled/dir.conf

DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

پس از ذخيره و بستن فايل ، بايد Apache را مجدد لود كنيد تا تغييرات به مرحله اجرا در بيايند:
⦁ $ sudo systemctl reload apache2

در مرحله بعد ، ما يك اسكريپت PHP ايجاد خواهيم كرد تا آزمايش كنيم كه PHP به درستي روي سرور مجازي شما نصب شده و پيكربندي شده است.
مرحله 5 – تست پردازش PHP در وب سرور مجازي خود
اكنون كه يك مكان سفارشي براي ميزباني فايل ها و پوشه هاي وب سايت خود داريد ، يك اسكريپت تست PHP ايجاد خواهيم كرد تا تأييد كند كه Apache قادر به مديريت و پردازش درخواست هاي فايل هاي PHP است.
يك فايل جديد با نام info.php را در پوشه ريشه وب سفارشي خود ايجاد كنيد:
⦁ $ nano /var/www/your_domain/info.php

اين دستور يك فايل خالي را باز مي كند. متن زير را كه كد PHP معتبر است ، داخل فايل اضافه كنيد:
/var/www/your_domain/info.php
phpinfo();

پس از اتمام ، فايل را ذخيره كنيد و ببنديد.
براي تست اين اسكريپت ، به مرورگر وب خود برويد و به نام دامنه يا آدرس IP سرور مجازي خود ، كه پس از آن نام اسكريپت وجود دارد دسترسي پيدا كنيد ، كه در اين حالت info.php است:
http://server_domain_or_IP/info.php
صفحه اي شبيه به اين را مشاهده خواهيد كرد:

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

در صورت نياز به دسترسي مجدد به اطلاعات ، هميشه مي توانيد اين صفحه را مجدداً ايجاد كنيد.
مرحله 6 – آزمايش اتصال به بانك اطلاعاتي از PHP (اختياري)
اگر مي خواهيد تست كنيد كه آيا PHP قادر به اتصال به MySQL و اجراي پرس و جوهاي پايگاه داده است، مي توانيد يك جدول آزمايشي با داده هاي ساختگي و جستجوي مطالب آن از يك اسكريپت PHP ايجاد كنيد. قبل از اينكه بتوانيم اين كار را انجام دهيم ، بايد يك پايگاه داده آزمايشي و يك كاربر جديد MySQL براي دسترسي به آن را به درستي پيكربندي كنيم.
در زمان نوشتن اين مقاله، كتابخانه بومي MySQL PHP ، mysqlnd از caching_sha2_authentication، روش تأييد اعتبار پيش فرض براي MySQL 8 پشتيباني نمي كند. براي اينكه بتوانيم از PHP به آن متصل شويم ، نياز به ايجاد كاربر جديد با تاييد اعتبار mysql_native_password داريم.
يك ديتابيس با نام example_database و كاربري با نام example_user ايجاد خواهيم كرد ، اما مي توانيد اين نام ها را با مقادير مختلف جايگزين كنيد.
ابتدا با استفاده از حساب ريشه به كنسول MySQL وصل شويد:
⦁ $ sudo mysql

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

اكنون مي توانيد يك كاربر جديد ايجاد كنيد و در پايگاه داده سفارشي كه اخيراً ايجاد كرده ايد ، به آنها امتياز دهيد.
دستور زير با استفاده از mysql_native_password به عنوان يك روش تأييد اعتبار پيش فرض كاربر جديدي به نام example_user ايجاد مي كند. ما رمزعبور اين كاربر را به عنوان PASWORD تعريف مي كنيم ، اما شما بايد اين مقدار را با يك رمز عبور مطمئن به انتخاب خود جايگزين كنيد.
⦁ mysql> CREATE USER ‘example_user’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;

اكنون بايد به اين كاربر اجازه به پايگاه داده example_database را بدهيم:
⦁ mysql> GRANT ALL ON example_database.* TO ‘example_user’@’%’;

اين كار به كاربر example_user دسترسي كامل به بانك اطلاعاتي example_database را مي دهد ، در حالي كه از ايجاد يا تغيير ساير پايگاه هاي داده روي سرور مجازي شما جلوگيري مي كند.
اكنون از پوسته MySQL خارج شويد:
⦁ Mysql> exit

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

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

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

در مرحله بعد ، يك جدول آزمايشي با نام todo_list ايجاد خواهيم كرد. از كنسول MySQL عبارت زير را اجرا كنيد:
⦁ Mysql> CREATE TABLE example_database.todo_list (

⦁ Mysql> item_id INT AUTO_INCREMENT,

⦁ Mysql> content VARCHAR(255),

⦁ Mysql> PRIMARY KEY(item_id)

⦁ Mysql> );

چند رديف محتوا را در جدول آزمون وارد كنيد. ممكن است بخواهيد با استفاده از مقادير مختلف دستور بعدي را چند بار تكرار كنيد:
⦁ Mysql> INSERT INTO example_database.todo_list (content) VALUES (“My first important item”);

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

خروجي زير را مشاهده خواهيد كرد:
Output
+———+————————–+
| item_id | content |
+———+————————–+
| 1 | My first important item |
| 2 | My second important item |
| 3 | My third important item |
| 4 | and this one more thing |
+———+————————–+
4 rows in set (0.000 sec)

پس از تأييد اينكه داده هاي معتبري در جدول آزمون خود داريد ، مي توانيد از كنسول MySQL خارج شويد:
Mysql> exit
اكنون مي توانيد اسكريپت PHP را ايجاد كنيد كه به MySQL متصل شود و محتواي شمار را پرس و جو كنيد. با استفاده از ويرايشگر مورد نظر خود ، يك فايل PHP جديد را در ديركتوري ريشه وب خود ايجاد كنيد. ما براي اين كار از nano استفاده خواهيم كرد:
⦁ $ nano /var/www/your_domain/todo_list.php

اسكريپت PHP زير به پايگاه داده MySQL متصل ميشود و براي محتواي جدول todo_list پرس و جو ميكند و نتايج را در يك ليست نمايش مي دهد. اگر در ارتباط با بانك اطلاعاتي مشكلي وجود داشته باشد ، يك استثنا به وجود مي آورد.
اين محتوا را در متن todo_list.php كپي كنيد:
/var/www/your_domain/todo_list.php
$user = “example_user”;
$password = “password”;
$database = “example_database”;
$table = “todo_list”;

try {
$db = new PDO(“mysql:host=localhost;dbname=$database”, $user, $password);
echo “

TODO

    ”;
    foreach($db->query(“SELECT content FROM $table”) as $row) {
    echo “
  1. ” . $row[‘content’] . “
  2. ”;
    }
    echo “
”;
} catch (PDOException $e) {
print “Error!: ” . $e->getMessage() . “
”;
die();
}

پس از پايان ويرايش ، فايل را ذخيره كنيد و ببنديد.
اكنون مي توانيد با مراجعه به نام دامنه يا آدرس IP عمومي كه براي وب سايت شما پيكربندي شده و پس از آن /todo_list.php نوشته شده، به اين صفحه در مرورگر وب خود دسترسي پيدا كنيد :
http://your_domain_or_IP/todo_list.php

بايد صفحه اي مانند اين را مشاهده كنيد ، كه محتوياتي را كه در جدول آزمايش خود وارد كرده ايد نشان دهد:

اين بدان معناست كه محيط PHP شما آماده اتصال و تعامل با سرور مجازي MySQL است.
نتيجه
در اين راهنما ، ما با استفاده از Apache به عنوان سرور مجازي وب و MySQL به عنوان سيستم پايگاه داده ، پايه اي انعطاف پذير براي ارائه وب سايت ها و برنامه هاي PHP به بازديد كنندگان شما ايجاد كرده ايم.
به عنوان مرحله فوري بعدي ، بايد با ارائه اتصالات از طريق HTTPS اطمينان حاصل كنيد كه اتصالات به سرور مجازي وب شما ايمن هستند. به منظور تحقق اين امر ، مي توانيد از Let’s Encrypt براي امنيت سايت خود با مجوز TLS / SSL رايگان استفاده كنيد.

 

برچسب‌ها:ApacheLinuxMySQLPHP

نصب وب سرور Apache در CentOS 8

سرور مجازي Apache HTTP پركاربردترين وب سرور مجازي در جهان است. اين نرم افزار بسياري از ويژگي هاي قدرتمند از جمله ماژول هاي قابل لود پويا ، پشتيباني رسانه اي قوي و ادغام گسترده با ساير نرم افزارهاي محبوب را ارائه مي دهد.
در اين راهنما يك سرور مجازي وب Apache با هاست هاي مجازي روي سرور مجازي CentOS 8 خود نصب خواهيد كرد.
پيش نيازها
براي تكميل اين راهنما به موارد زير نياز داريد:
• يك كاربر غير ريشه با امتيازات sudo كه در سرور مجازي شما پيكربندي شده باشد ، و با دنبال كردن راهنماي اوليه ستاپ سرور مجازي براي CentOS 8 تنظيم شده باشد.
• با پيروي از مرحله 4 تنظيم اوليه سرور مجازي با CentOS 8 (مرحله توصيه شده) در راهنماي بالا ، اطمينان حاصل كنيد كه يك فايروال پايه پيكربندي شده است.
مرحله 1 – نصب Apache
Apache در مخازن پيش فرض نرم افزار CentOS موجود است ، به اين معني كه مي توانيد آن را با مدير بسته dnf نصب كنيد.
وقتي كه كاربر sudo غير ريشه در پيش نيازها پيكربندي شد ، بسته Apache را نصب كنيد:
⦁ $ sudo dnf install httpd

پس از تأييد نصب ، dnf ، Apache و كليه متعلقات مورد نياز را نصب مي كند.
با تكميل مرحله 4 راهنماي ستاپ اوليه سرور مجازي CentOS 8 ذكر شده در بخش پيش نيازها ، در حال حاضر firewalld  را بر روي سرور مجازي خود نصب كرده ايد تا درخواست هاي روي HTTP را انجام دهيد.
اگر همچنين قصد داريد Apache را براي ارائه محتوا از طريق HTTPS پيكربندي كنيد ، بهتر اسن با فعال كردن سرويس https ، پورت 443 را نيز باز كنيد:
⦁ $ sudo firewall-cmd –permanent –add-service=https

در مرحله بعد ، فايروال را مجدد لود كنيد تا اين قوانين جديد به مرحله اجرا در بيايند:
⦁ $ sudo firewall-cmd –reload

پس از لود مجدد فايروال ، شما آماده شروع سرويس و بررسي سرور مجازي وب هستيد.
مرحله 2 – بررسي سرور مجازي وب خود
Apache پس از اتمام نصب به طور خودكار از CentOS شروع نمي شود ، بنابراين شما نياز به شروع فرآيند Apache به صورت دستي داريد:
⦁ $ sudo systemctl start httpd

با دستور زير تأييد كنيد كه اين سرويس در حال اجرا است:
⦁ $ sudo systemctl status httpd

هنگام اجراي سرويس وضعيت فعال را دريافت خواهيد كرد:
Output
● httpd.service – The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa>
Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago
Docs: man:httpd.service(8)
Main PID: 14219 (httpd)
Status: “Running, listening on: port 80”
Tasks: 213 (limit: 5059)
Memory: 24.9M
CGroup: /system.slice/httpd.service
├─14219 /usr/sbin/httpd -DFOREGROUND
├─14220 /usr/sbin/httpd -DFOREGROUND
├─14221 /usr/sbin/httpd -DFOREGROUND
├─14222 /usr/sbin/httpd -DFOREGROUND
└─14223 /usr/sbin/httpd -DFOREGROUND

در اين مرحله، اين سرويس با موفقيت شروع شده است. با اين حال ، بهترين راه براي آزمايش، درخواست يك صفحه از Apache است.
براي تأييد صحت اجراي نرم افزار از طريق آدرس IP خود ، مي توانيد به صفحه فرود پيش فرض Apache دسترسي پيدا كنيد. اگر آدرس IP سرور مجازي خود را نمي دانيد ، مي توانيد آن را چند راه مختلف از خط فرمان دريافت كنيد.
براي بازگشت به خط فرمان q و سپس دستور زير را تايپ كنيد:
⦁ $ hostname -I

اين دستور همه آدرس هاي شبكه هاست را نشان مي دهد ، بنابراين شما چند آدرس IP را كه با space جدا شده اند ، دريافت خواهيد كرد. مي توانيد هر يك از مرورگرهاي وب خود را امتحان كنيد تا مشخص شود كه آيا كار مي كنند يا خير.
از طرف ديگر ، مي توانيد از Curl براي درخواست IP خود از icanhazip.com استفاده كنيد ، كه آدرس IPv4 عمومي شما را به عنوان خوانده شده از يك مكان ديگر در اينترنت به شما مي دهد:
⦁ $ curl -4 icanhazip.com

هنگامي كه آدرس IP سرور مجازي خود را پيدا كرديد ، آن را در نوار آدرس مرورگر خود وارد كنيد:
http://your_server_ip
صفحه پيش فرض CentOS 8 Apache را مشاهده خواهيد كرد:

اين صفحه نشان مي دهد كه Apache درست كار مي كند. اين برنامه همچنين شامل برخي از اطلاعات اوليه در مورد فايل هاي مهم Apache و مكان هاي دايركتوري است.
مرحله 3 – مديريت فرايند Apache
اكنون كه سرويس نصب و راه اندازي شده است ، مي توانيد از دستورات مختلف systemctl براي مديريت سرويس استفاده كنيد.
براي متوقف كردن سرور مجازي وب خود ، تايپ كنيد:
⦁ $ sudo systemctl stop httpd

براي شروع سرور مجازي وب وقتي متوقف است ، تايپ كنيد:
⦁ $ sudo systemctl start httpd

براي متوقف كردن و شروع مجدد سرويس ، تايپ كنيد:
⦁ $ sudo systemctl restart httpd

اگر به سادگي تغييرات پيكربندي را انجام مي دهيد ، Apache اغلب مي تواند بدون افت اتصالات مجدد لود شود. براي انجام اين كار ، از اين دستور استفاده كنيد:
⦁ $ sudo systemctl reload httpd

به طور پيش فرض ، Apache به گونه اي تنظيم مي شود كه به طور خودكار شروع به كار كند. اگر اين چيزي نيست كه مي خواهيد ، با تايپ كردن دستور زير اين رفتار را غيرفعال كنيد:
⦁ $ sudo systemctl disable httpd

براي فعال كردن مجدد سرويس در هنگام بوت، اين دستور را تايپ كنيد:
⦁ $ sudo systemctl enable httpd

با دوباره بوت شدن سرور مجازي ، Apache به طور خودكار شروع مي شود.
پيكربندي پيش فرض براي Apache به سرور مجازي شما امكان ميزباني وب سايت واحد را مي دهد. اگر قصد داريد هاست چندين دامنه در سرور مجازي خود باشيد ، بايد هاست هاي مجازي را در سرور مجازي وب Apache خود پيكربندي كنيد.
مرحله 4 – تنظيم هاست هاي مجازي (توصيه مي شود)
هنگام استفاده از وب سرور مجازي Apache ، براي كپسوله كردن جزئيات پيكربندي و ميزباني بيش از يك دامنه از يك سرور مجازي واحد مي توانيد از هاست هاي مجازي استفاده كنيد )اگر با Nginx بيشتر آشنا هستيد ، اين ها به بلوك هاي سرور مجازي شباهت دارند). در اين مرحله دامنه اي به نام example.com را تنظيم مي كنيد ، اما بايد اين نام را با نام دامنه خود جايگزين كنيد.
Apache در CentOS 8 داراي يك هاست مجازي است كه بصورت پيش فرض فعال شده است تا براي ارائه اسناد از دايركتوري / var / www / html پيكربندي شود. اگرچه براي يك سايت واحد به خوبي كار مي كند ، اگر هاست چندين سايت باشيد ، مي تواند مشكل آفرين شود. به جاي تغيير / var / www / html ، يك ساختار دايركتوري را در / var / www براي سايت example.com ايجاد خواهيد كرد ، و / var / www / html را در جاي خود به عنوان دايركتوري پيش فرض قرار مي دهيد كه در صورتي كه درخواست كلاينت با هيچ سايت ديگري مطابقت نداشت، ارائه شود.
دايركتوري html را براي example.com به شرح زير بسازيد ، از پرچم -p براي ايجاد دايركتوري هاي لازم استفاده كنيد:
⦁ $ sudo mkdir -p /var/www/example.com/html

دايركتوري ديگري را براي ذخيره فايل هاي ورود به سايت ايجاد كنيد:
⦁ $ sudo mkdir -p /var/www/example.com/log

سپس ، مالكيت دايركتوري html را به متغير محيطي $ USER اختصاص دهيد:
⦁ $ sudo chown -R $USER:$USER /var/www/example.com/html

مطمئن شويد كه ريشه وب شما داراي مجموعه مجوزهاي پيش فرض است
⦁ $ sudo chmod -R 755 /var/www

سپس ، با استفاده از vi يا ويرايشگر مورد علاقه خود ، صفحه index.html نمونه را ايجاد كنيد:
⦁ $ sudo vi /var/www/example.com/html/index.html

i را فشار دهيد تا به حالت INSERT برويد و نمونه HTML زير را به فايل اضافه كنيد:
/var/www/example.com/html/index.html


Welcome to Example.com!


Success! The example.com virtual host is working!



با فشردن ESC ، تايپwq و زدن ENTER فايل را ذخيره كنيد و ببنديد.
با وجود دايركتوري سايت و نمونه فايل درج شده ، تقريباً آماده ايجاد فايل هاي هاست مجازي هستيد. فايلهاي هاست مجازي پيكربندي سايتهاي جداگانه شما را مشخص مي كنند و به سرور مجازي وب Apache نشان مي دهند كه چگونه به درخواستهاي دامنه مختلف پاسخ دهد.
قبل از ايجاد هاست مجازي خود ، بايد يك دايركتوري sites-available ايجاد كنيد تا آنها را در آن ذخيره كنيد. همچنين دايركتوري sites-enabled ايجاد خواهيد كرد كه به Apache مي گويد يك هاست مجازي آماده خدمت به بازديد كنندگان است. دايركتوري sites-enabled پيوندهاي سمبوليكي را براي هاست هاي مجازي كه مي خواهيم منتشر كنيم ، نگه مي دارد. هر دو دايركتوري را با دستور زير ايجاد كنيد:
⦁ $ sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

در مرحله بعد ، به Apache مي گوييد كه در دايركتوري sites-enabled به دنبال هاست هاي مجازي باشد. براي دستيابي به اين هدف ، فايل پيكربندي اصلي Apache را با استفاده از vi يا ويرايشگر متن مورد علاقه خود ويرايش كنيد و خطي را اضافه كنيد كه يك دايركتوري اختياري براي فايل هاي پيكربندي اضافي اعلام ميكند:
⦁ $ sudo vi /etc/httpd/conf/httpd.conf

براي رفتن به انتهاي فايل ، G بزرگ را فشار دهيد. سپس i را فشار دهيد تا به حالت INSERT برويد و خط زير را به انتهاي فايل اضافه كنيد:
/etc/httpd/conf/httpd.conf

# Supplemental configuration
#
# Load config files in the “/etc/httpd/conf.d” directory, if any.
IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf
پس از افزودن آن خط ، فايل را ذخيره كنيد و ببنديد. اكنون كه دايركتوري هاست مجازي خود را در اختيار داريد ، فايل هاست مجازي خود را ايجاد خواهيد كرد.
با ايجاد يك فايل جديد در دايركتوري سايتهاي موجود شروع كنيد:
⦁ $ sudo vi /etc/httpd/sites-available/example.com.conf

بلوك پيكربندي زير را اضافه كنيد ، و دامنه example.com را به نام دامنه خود تغيير دهيد:
/etc/httpd/sites-available/example.com.conf

ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/example.com/html
ErrorLog /var/www/example.com/log/error.log
CustomLog /var/www/example.com/log/requests.log combined

با اين كار به Apache مي گوييد كه چگونه مستقيماً ريشه اي را كه در دسترس اسناد وب قرار دارد ، پيدا كند. همچنين به Apache مي گويد كه خطا و درخواست ورود به اين سايت خاص را كجا ذخيره كند.
پس از اتمام فايل را ذخيره كنيد و ببنديد.
اكنون كه فايلهاي هاست مجازي را ايجاد كرده ايد ، آنها را فعال خواهيد كرد تا Apache بداند كه مي تواند آنها را در اختيار بازديد كنندگان قرار دهد. براي انجام اين كار ، براي هر هاست مجازي در دايركتوري sites-enabled ، يك لينك نمادين ايجاد كنيد:
⦁ sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

هاست مجازي شما اكنون پيكربندي شده و آماده ارائه مطالب است. قبل از راه اندازي مجدد سرويس Apache ، مطمئن شويد كه SELinux سياست هاي صحيحي را براي هاست هاي مجازي شما اعمال كرده است.
مرحله 5 – تنظيم مجوزهاي SELinux براي هاست هاي مجازي (توصيه مي شود)
SELinux يك ماژول امنيتي هسته لينوكس است كه امنيت سيستم هاي لينوكس را افزايش مي دهد. CentOS 8 به SELinux پيكربندي شده براي كار با تنظيمات پيش فرض Apache مجهز شده است. از آنجا كه پيكربندي پيش فرض را با تنظيم دايركتوري ورود به سيستم سفارشي در فايل پيكربندي هاست مجازي تغيير داده ايد ، در صورت تلاش براي شروع سرويس Apache ، خطايي دريافت خواهيد كرد. براي رفع اين مشكل ، شما بايد رويكردهاي SELinux را به روز كنيد تا Apache بتواند در فايل هاي لازم بنويسد.
روشهاي مختلفي براي تنظيم رويكردها بر اساس نياز محيط شما وجود دارد زيرا SELinux به شما اجازه مي دهد سطح امنيتي خود را شخصي سازي كنيد. اين مرحله شامل دو روش تنظيم رويكردهاي Apache خواهد بود: جهاني و در يك دايركتوري خاص. تنظيم رويكرد در دايركتوري ها ايمن تر است ، و بنابراين رويكرد توصيه شده ميباشد.
تنظيم رويكردهاي Apache به صورت جهاني
تنظيم رويكردApache به صورت جهاني به SELinux مي گويد كه با استفاده از بولي httpd_unified ، با تمام مراحل Apache به طور يكسان رفتار كند. اگرچه اين رويكرد راحت تر است ، اما سطح كنترل يكسان با رويكردي كه روي يك فايل يا رويكرد دايركتوري تمركز دارد به شما نمي دهد.
دستور زير را براي تنظيم رويكرد عمومي Apache اجرا كنيد:
⦁ $ sudo setsebool -P httpd_unified 1

دستور setsebool مقادير بولي SELinux را تغيير مي دهد. پرچم -P مقدار زمان بوت را به روز مي كند ، و اين تغيير در ريبوت ادامه مي يابد. httpd_unified بولي است كه به SELinux مي گويد در تمام مراحل Apache به يك صورت رفتار كند ، بنابراين شما آن را با مقدار 1 فعال مي كنيد.
تنظيم رويكردهاي Apache در يك دايركتوري
تنظيم مجوزهاي SELinux به صورت جداگانه براي دايركتوري /var/www/example.com/log به شما امكان كنترل بيشتر روي رويكردهاي Apache را مي دهد ، اما ممكن است به نگهداري بيشتري نيز نياز داشته باشد. از آنجا كه اين گزينه رويكردهاي تنظيم جهاني نيست ، لازم است به طور دستي نوع متن را براي هر دايركتوري جديد وارد كنيد كه در تنظيمات هاست مجازي شما مشخص شده است.
ابتدا نوع زمينه اي را كه SELinux به دايركتوري /var/www/example.com/log داده است بررسي كنيد:
⦁ $ sudo ls -dlZ /var/www/example.com/log/

اين دستور محتواي SELinux دايركتوري را ليست و چاپ مي كند. خروجي مشابه زير را دريافت خواهيد كرد:
Output
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

زمينه فعلي httpd_sys_content_t است ، كه به SELinux مي گويد فرآيند Apache فقط مي تواند فايل هاي ايجاد شده در اين دايركتوري را بخواند. در اين آموزش ، نوع متن دايركتوري /var/www/example.com/log را به آدرس httpd_log_t تغيير مي دهيد. اين حالت به Apache امكان مي دهد فايل هاي ورود به سيستم برنامه وب را توليد و پيوست كند:
⦁ $ sudo semanage fcontext -a -t httpd_log_t “/var/www/example.com/log(/.*)?”

در مرحله بعدي ، از دستور restorecon براي اعمال اين تغييرات استفاده كنيد و آنها را در ريبوت ادامه دهيد:
⦁ $ sudo restorecon -R -v /var/www/example.com/log

پرچم -R اين دستور را به صورت بازگشتي اجرا مي كند ، به اين معني كه هر فايل موجود را براي استفاده از متن جديد به روز مي كند. پرچم -v تغييرات متني كه فرمان ايجاد كرده را چاپ مي كند. خروجي زير را دريافت خواهيد كرد
Output
Relabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0
براي ديدن تغييرات مي توانيد يك بار ديگر محتوا را ليست كنيد:
⦁ $ sudo ls -dlZ /var/www/example.com/log/

خروجي نوع متن به روز شده را منعكس مي كند:
Output
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

اكنون كه دايركتوري /var/www/example.com/log از نوع httpd_log_t استفاده مي كند ، آماده آزمايش پيكربندي هاست مجازي خود هستيد.
مرحله 6 – آزمايش هاست مجازي (توصيه مي شود)
پس از به روزرساني متن SELinux با هر روشي ، Apache مي تواند در دايركتوري /var/www/example.com/log بنويسد. اكنون مي توانيد سرويس Apache را با موفقيت مجدداً راه اندازي كنيد:
⦁ $ sudo systemctl restart httpd

محتويات دايركتوري /var/www/example.com/log را ليست كنيد تا ببينيد آيا Apache فايلهاي ورود را ايجاد كرده است:
⦁ $ ls -lZ /var/www/example.com/log

تأييديه اي دريافت خواهيد كرد كه Apache قادر به ايجاد فايل هاي error.log و requests.log مشخص شده در پيكربندي هاست مجازي است:
Output
-rw-r–r–. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log
-rw-r–r–. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log

اكنون كه هاست مجازي خود را تنظيم كرده و مجوزهاي SELinux را به روز كرده ايد ، Apache اكنون نام دامنه شما را ارائه مي دهد. مي توانيد با رفتن به http://example.com ، اين را آزمايش كنيد، كه بايد چيزي شبيه به اين را مشاهده كنيد:

اين عبارت تأييد مي كند كه هاست مجازي شما با موفقيت پيكربندي شده و محتوا را ارائه ميكند. مراحل 4 و 5 را تكرار كنيد تا هاست مجازي جديدي با مجوز SELinux براي دامنه هاي بيشتر ايجاد كنيد.
نتيجه
در اين آموزش وب سرور مجازي Apache را نصب و مديريت كرده ايد. اكنون كه سرور مجازي وب خود را نصب كرده ايد ، گزينه هاي بسياري را براي نوع محتوايي كه مي توانيد ارائه كنيد و فناوري هايي كه مي توانيد براي ايجاد يك تجربه بهتر استفاده نماييد ، در اختيار داريد.
اگر مي خواهيد يك برنامه كاربردي كاملتر ايجاد كنيد ، مي توانيد در اين مقاله به نحوه پيكربندي پشته LAMP در CentOS 8 مراجعه نماييد.

 

برچسب‌ها:Apachecentos 8HTTPS