در این مقاله ما درباره نحوه نصب یک سرور LEMP (عبارت است از Linux, Nginx, MariaDB, PHP) به همراه PHP-FPM روی سرورهای RedHat/CentOS 7-6 و Fedora 20-24 با استفاده از ابزارهای مدیریت پکیج yum و dnf صحبت خواهیم کرد.
در طول مقاله ما ریپازیتوری های Remi و Nginx را به منظور نصب آخرین ورژن این پکیج ها فعال خواهیم کرد.
همچنین توصیه میشود مطالعه کنید :
آموزش نصب و راه اندازی LEMP (مخفف Nginx, MariaDB 10, PHP 7) در اوبونتو 16.04/16.10
آموزش نصب و راه اندازی LEMP (مخفف Linux, Nginx, MariaDB, PHP-FPM) در دبیان 9
Nginx چیست ؟
Nginx (یا Engine X) یک وب سرور، پراکسی سرور reverse و همچنین پروکسی سرور Mail (برای پروتکل های HTTP, SMTP, POP3 و IMAP) میباشد که بسیار کارآمد، سبک، روان و open source میباشد. برای کسب جزئیات بیشتر پیشنهاد میشود لینک زیر را مطالعه بفرمایید.
PHP-FPM چیست ؟
PHP-FPM مخفف FastCGI Process Manager میباشد. و در حقیقت یکی از ورژن های PHP FastCGI به همراه قابلیت های مفید اضافه برای وب سایت های با لود بالا و سنگین میباشد. برای کسب اطلاعات بیشتر پیشنهاد میشود لینک زیر را مطالعه بفرمایید.
مرحله اول : نصب ریپازیتوری Remi
Remi یک ریپازیتوری میباشد که شما میتوانید در آن آخرین ورژن های نرم افزار PHP (به همراه تمام امکانات) را برای نصب در توزیع های لینوکسی Enterprise و فدورا پیدا کنید.
در RHEL/CentOS 7
در RHEL/CentOS 6
در Fedora 24
در Fedora 23
در Fedora 22
بقیه ورژن های فدورا (21 و قبل از آن) دیگر پشتیبانی نمیشوند. به هر حال شما میتوانید با تغییر شماره ورژن در دستور بالا ریپازیتوری را نصب کنید.
برای مثال، به منظور فعال کردن ریپازیتوری Remi در یک سرور Fedora 20 از دستور زیر استفاده میکنیم.
در Fedora 20
مرحله دوم : نصب ریپازیتوری های Nginx و MariaDB
ریپازیتوری Nginx تنها در توزیع ها CentOS و RedHat مورد نیاز است. فایلی به نام /etc/yum.repos.d/nginx.repo ایجاد کنید و خط های زیر را به آن اضافه کنید.
در RHEL 7/6 :
برای CentOS 7/6 :
برای فعال کردن ریپازیتوری MariaDB فایلی به نام /etc/yum.repos.d/mariadb.repo ایجاد کنید و محتوای زیر را به آن اضافه نمایید.
همچنین توصیه میشود مطالعه کنید :
آموزش نصب آخرین ورژن MariaDB 10 در لینوکس Debian, Ubuntu, RedHat, Fedora, CentOS
مرحله سوم : فعال کردن ریپازیتوری Remi
ریپازیتوری Remi به صورت پیش فرض PHP ورژن 5.4 را ارائه میدهد، اگر شما میخواهید که PHP 5.5 یا PHP 5.6 را نصب کنید باید در فایل /etc/yum.repos.d/remi.repo برای بخش [remi-php55] و [remi-php56] خط enabled=0 را به enabled=1 جهت فعال کردن ریپازیتوری تغییر دهید.
برای نصب PHP 5.5 در CentOS/RHEL 7 و Fedora
برای نصب PHP 5.6 در CentOS/RHEL 7 و Fedora
همچنین توصیه میشود مطالعه بفرمایید :
آموزش نصب PHP 7.X در CentOS 7 و RedHat 7
مرحله چهارم : نصب Nginx, MariaDB, PHP & PHP-FPM
مرحله پنجم : نصب ماژول های PHP
مرحله ششم : متوقف و غیرفعال کردن سرویس Apache
به صورت پیش فرض آپاچی و انجین ایکس روی پورت یکسانی (TCP 80) در حال Listen کردن میباشند. به همین دلیل به منظور استفاده کردن از Nginx، اگر apache روی سرورتان نصب باشد شما نیاز دارید آنرا stop و disable/mask کنید (mask یک ورژن قوی تری از disable است که سرویس را به/dev/null لینک میکند) یا در صورتیکه قصد ندارید بعدا از آن استفاده کنید میتوانید آنرا حذف کنید.
مرحله هفتم : Start/Stop کردن سرویس Nginx, MariaDB & PHP-FPM
مرحله هشتم : پیکربندی Nginx و PHP-FPM
اکنون ساختار دایرکتوری را تحت /srv/www برای وب سایت تان ایجاد کنید (یک ویرچوال هاست یا همانطور که در Nginx نامیده میشود یک Server block) در این مثال ما از linux-zone.org استفاده میکنیم اما شما میتوانید دامین دیگری را انتخاب کنید و یا حتیی دایرکتوری اصلی مورد نظر خود را برای وب سایت تان در نظر بگیرید.
مرحله نهم : تنظیمات دایرکتوری های Virtual Host در Nginx
همانطور که شما میدانید توانایی پیاده سازی چندین سایت از یک ماشین یکسان یکی از قابلیت های بارز وب سرورهای مهم میباشد. اکنون با ایجاد دایرکتوری ها برای ذخیره بلاک های سرورمان (با عنوان virtual host در آپاچی نیز شناخته میشود) تحت مسیر /etc/nginx/ کار را ادامه میدهیم.
کد زیر که باید در فایل /etc/nginx/nginx.conf قبل از بستن بلاک HTTP وارد شود، ما را مطمئن میسازد که فایل های کانفیگ درون دایرکتوری /etc/nginx/sites-enabled هنگامیکه انجین اکس در حال اجراست لحاظ خواهد شد.
برای ایجاد بلاک Server برای linux-zone.org کدهای زیر را به فایل /etc/nginx/sites-available/linux-zone اضافه کنید (این فایل زمانیکه شما مسیر کامل را با ادیتور مورد نظرتان تایپ میکنید ایجاد خواهد شد). این تنظیمات نمونه ابتدایی از فایل کانفیگ virtuall host میباشد.
پروسه فعال سازی یک ویرچوال هاست شامل ایجاد یک symbolic link از ویرچوال هاست linux-zone به /etc/nginx/sites-enabled میباشد.
به منظور اعمال واقعی تغییراتی که انجام دادیم اکنون نیاز داریم که Nginx را restart کنیم. بررسی فایل های کانفیگ به منظور پیدا کردن هر گونه خطای syntax قبل از ادامه به هر کاری گاهی اوقات مفید میباشد.
برای دسترسی به ویرچوال هاست جدیدا ایجاد شده خود نیاز دارید که خط زیر را به فایل /etc/hosts به عنوان روش ساده ای برای resolve کردن domain name اضافه کنید.
مرحله دهم : تست کردن Nginx, MySQL, PHP & PHP-FPM
اجازه دهید شیوه کلاسیک تست کردن php را استفاده کنیم. فایلی به نام test.php تحت پوشه /srv/www/linux-zone/public_html/ ایجاد کنید و کدهای زیر را در آن اضافه کنید.
فانکشن phpinfo() حجم عظیمی از اطلاعات درباره ورژن PHP موجودتان به شما نمایش میدهد.
اکنون در مرورگرتان http://linux-zone.org/test.php را وارد کرده و از موجود بودن ماژول ها و نرم افزارهای اضافی نصب شده مطمئن شوید.
همچنین توصیه میشود مطالعه کنید.
نحوه رمزگذاری دایرکتوری ها در وب سرور Nginx
راه اندازی Virtual Hosting بر پایه Name و IP در وب سرور انجین ایکس
آموزش نصب SSL (تنظیمات https به همراه گواهینامه SSL) در وب سرور nginx روی RHEL/CentOS 7/6
آموزش امن کردن و بالا بردن سرعت وب سرور Nginx
شما اکنون یک سرور LEMP در حال اجرا دارید. اگر به هنگام مراحل بالا با مشکلی روبه رو شدید آنرا در اینجا مطرح کنید. هر گونه سوال و پیشنهادی مورد استقبال قرار خواهد گرفت.
در طول مقاله ما ریپازیتوری های Remi و Nginx را به منظور نصب آخرین ورژن این پکیج ها فعال خواهیم کرد.
همچنین توصیه میشود مطالعه کنید :
آموزش نصب و راه اندازی LEMP (مخفف Nginx, MariaDB 10, PHP 7) در اوبونتو 16.04/16.10
آموزش نصب و راه اندازی LEMP (مخفف Linux, Nginx, MariaDB, PHP-FPM) در دبیان 9
Nginx چیست ؟
Nginx (یا Engine X) یک وب سرور، پراکسی سرور reverse و همچنین پروکسی سرور Mail (برای پروتکل های HTTP, SMTP, POP3 و IMAP) میباشد که بسیار کارآمد، سبک، روان و open source میباشد. برای کسب جزئیات بیشتر پیشنهاد میشود لینک زیر را مطالعه بفرمایید.
PHP-FPM چیست ؟
PHP-FPM مخفف FastCGI Process Manager میباشد. و در حقیقت یکی از ورژن های PHP FastCGI به همراه قابلیت های مفید اضافه برای وب سایت های با لود بالا و سنگین میباشد. برای کسب اطلاعات بیشتر پیشنهاد میشود لینک زیر را مطالعه بفرمایید.
مرحله اول : نصب ریپازیتوری Remi
Remi یک ریپازیتوری میباشد که شما میتوانید در آن آخرین ورژن های نرم افزار PHP (به همراه تمام امکانات) را برای نصب در توزیع های لینوکسی Enterprise و فدورا پیدا کنید.
در RHEL/CentOS 7
کد PHP:
# yum update && yum install epel-release
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
--------- For RHEL Only ---------
# subscription-manager repos --enable=rhel-7-server-optional-rpms
در RHEL/CentOS 6
کد PHP:
# yum update && yum install epel-release
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
--------- For RHEL Only ---------
# subscription-manager repos --enable=rhel-6-server-optional-rpms
در Fedora 24
کد PHP:
# wget http://rpms.remirepo.net/fedora/remi-release-24.rpm
# dnf install remi-release-24.rpm
در Fedora 23
کد PHP:
# wget http://rpms.remirepo.net/fedora/remi-release-23.rpm
# dnf install remi-release-23.rpm
در Fedora 22
کد PHP:
# wget http://rpms.remirepo.net/fedora/remi-release-22.rpm
# dnf install remi-release-22.rpm
برای مثال، به منظور فعال کردن ریپازیتوری Remi در یک سرور Fedora 20 از دستور زیر استفاده میکنیم.
در Fedora 20
کد PHP:
# wget http://rpms.remirepo.net/fedora/remi-release-20.rpm
# yum install remi-release-20.rpm
مرحله دوم : نصب ریپازیتوری های Nginx و MariaDB
ریپازیتوری Nginx تنها در توزیع ها CentOS و RedHat مورد نیاز است. فایلی به نام /etc/yum.repos.d/nginx.repo ایجاد کنید و خط های زیر را به آن اضافه کنید.
در RHEL 7/6 :
کد PHP:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1
برای CentOS 7/6 :
کد PHP:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
کد PHP:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
همچنین توصیه میشود مطالعه کنید :
آموزش نصب آخرین ورژن MariaDB 10 در لینوکس Debian, Ubuntu, RedHat, Fedora, CentOS
مرحله سوم : فعال کردن ریپازیتوری Remi
ریپازیتوری Remi به صورت پیش فرض PHP ورژن 5.4 را ارائه میدهد، اگر شما میخواهید که PHP 5.5 یا PHP 5.6 را نصب کنید باید در فایل /etc/yum.repos.d/remi.repo برای بخش [remi-php55] و [remi-php56] خط enabled=0 را به enabled=1 جهت فعال کردن ریپازیتوری تغییر دهید.
برای نصب PHP 5.5 در CentOS/RHEL 7 و Fedora
کد PHP:
[remi-php55]
name=Remi's PHP 5.5 RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/php55/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/php55/mirror
# NOTICE: common dependencies are in "remi-safe"
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
برای نصب PHP 5.6 در CentOS/RHEL 7 و Fedora
کد PHP:
[remi-php56]
name=Remi's PHP 5.6 RPM repository for Enterprise Linux 6 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/6/php56/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/6/php56/mirror
# NOTICE: common dependencies are in "remi-safe"
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
همچنین توصیه میشود مطالعه بفرمایید :
آموزش نصب PHP 7.X در CentOS 7 و RedHat 7
مرحله چهارم : نصب Nginx, MariaDB, PHP & PHP-FPM
کد PHP:
----------- Installing on RHEL/CentOS 7/6 -----------
# yum --enablerepo=remi install nginx MariaDB-client MariaDB-server php php-common php-fpm
----------- Installing on Fedora 22-24 -----------
# dnf --enablerepo=remi install nginx MariaDB-client MariaDB-server php php-common php-fpm
----------- Installing on Fedora 20-21 -----------
# yum --enablerepo=remi install nginx MariaDB-client MariaDB-server php php-common php-fpm
مرحله پنجم : نصب ماژول های PHP
کد PHP:
----------- Installing on RHEL/CentOS 7/6 -----------
# yum --enablerepo=remi install php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo
----------- Installing on Fedora 22-24 -----------
# dnf --enablerepo=remi install php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo
----------- Installing on Fedora 20-21 -----------
# yum --enablerepo=remi install php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml php-pecl-apc php-cli php-pear php-pdo
مرحله ششم : متوقف و غیرفعال کردن سرویس Apache
به صورت پیش فرض آپاچی و انجین ایکس روی پورت یکسانی (TCP 80) در حال Listen کردن میباشند. به همین دلیل به منظور استفاده کردن از Nginx، اگر apache روی سرورتان نصب باشد شما نیاز دارید آنرا stop و disable/mask کنید (mask یک ورژن قوی تری از disable است که سرویس را به/dev/null لینک میکند) یا در صورتیکه قصد ندارید بعدا از آن استفاده کنید میتوانید آنرا حذف کنید.
کد PHP:
# systemctl stop httpd
# systemctl disable httpd
or
# systemctl mask httpd
مرحله هفتم : Start/Stop کردن سرویس Nginx, MariaDB & PHP-FPM
کد PHP:
----------- Enable Nginx, MariaDB and PHP-FPM on Boot -----------
# systemctl enable nginx
# systemctl enable mariadb
# systemctl enable php-fpm
----------- Start Nginx, MariaDB and PHP-FPM -----------
# systemctl start nginx
# systemctl start mariadb
# systemctl start php-fpm
مرحله هشتم : پیکربندی Nginx و PHP-FPM
اکنون ساختار دایرکتوری را تحت /srv/www برای وب سایت تان ایجاد کنید (یک ویرچوال هاست یا همانطور که در Nginx نامیده میشود یک Server block) در این مثال ما از linux-zone.org استفاده میکنیم اما شما میتوانید دامین دیگری را انتخاب کنید و یا حتیی دایرکتوری اصلی مورد نظر خود را برای وب سایت تان در نظر بگیرید.
کد PHP:
# mkdir -p /srv/www/linux-zone/public_html
# mkdir /srv/www/linux-zone/logs
# chown -R nginx:nginx /srv/www/linux-zone
مرحله نهم : تنظیمات دایرکتوری های Virtual Host در Nginx
همانطور که شما میدانید توانایی پیاده سازی چندین سایت از یک ماشین یکسان یکی از قابلیت های بارز وب سرورهای مهم میباشد. اکنون با ایجاد دایرکتوری ها برای ذخیره بلاک های سرورمان (با عنوان virtual host در آپاچی نیز شناخته میشود) تحت مسیر /etc/nginx/ کار را ادامه میدهیم.
کد PHP:
# mkdir /etc/nginx/sites-available
# mkdir /etc/nginx/sites-enabled
کد PHP:
## Load virtual host conf files. ##
include /etc/nginx/sites-enabled/*;
برای ایجاد بلاک Server برای linux-zone.org کدهای زیر را به فایل /etc/nginx/sites-available/linux-zone اضافه کنید (این فایل زمانیکه شما مسیر کامل را با ادیتور مورد نظرتان تایپ میکنید ایجاد خواهد شد). این تنظیمات نمونه ابتدایی از فایل کانفیگ virtuall host میباشد.
کد PHP:
server {
listen 80 default;
server_name linux-zone;
access_log /srv/www/linux-zone/logs/access.log;
error_log /srv/www/linux-zone/logs/error.log;
root /srv/www/linux-zone/public_html;
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
کد PHP:
# ln -s /etc/nginx/sites-available/linux-zone /etc/nginx/sites-enabled/linux-zone
کد PHP:
# nginx -t
# systemctl restart nginx
# systemctl status nginx
برای دسترسی به ویرچوال هاست جدیدا ایجاد شده خود نیاز دارید که خط زیر را به فایل /etc/hosts به عنوان روش ساده ای برای resolve کردن domain name اضافه کنید.
کد PHP:
192.168.10.240 www.linux-zone.org linux-zone.org
مرحله دهم : تست کردن Nginx, MySQL, PHP & PHP-FPM
اجازه دهید شیوه کلاسیک تست کردن php را استفاده کنیم. فایلی به نام test.php تحت پوشه /srv/www/linux-zone/public_html/ ایجاد کنید و کدهای زیر را در آن اضافه کنید.
فانکشن phpinfo() حجم عظیمی از اطلاعات درباره ورژن PHP موجودتان به شما نمایش میدهد.
کد PHP:
<?php
phpinfo();
?>
همچنین توصیه میشود مطالعه کنید.
نحوه رمزگذاری دایرکتوری ها در وب سرور Nginx
راه اندازی Virtual Hosting بر پایه Name و IP در وب سرور انجین ایکس
آموزش نصب SSL (تنظیمات https به همراه گواهینامه SSL) در وب سرور nginx روی RHEL/CentOS 7/6
آموزش امن کردن و بالا بردن سرعت وب سرور Nginx
شما اکنون یک سرور LEMP در حال اجرا دارید. اگر به هنگام مراحل بالا با مشکلی روبه رو شدید آنرا در اینجا مطرح کنید. هر گونه سوال و پیشنهادی مورد استقبال قرار خواهد گرفت.
کامنت