استک LEMP یک بسته نرمافزاری متن باز شامل Linux (حرف L)، Nginx (حرف E)، MySQL یا MariaDB (حرف M) و PHP (حرف P) جایگزین استک LAMP با این تفاوت که وبسرور Nginx به جای Apache میباشد.
در این آموزش نحوه نصب و کانفیگ اولیه استک LEMP را در CentOS 7 آموزش خواهیم داد.
برای نصب استک LEMP بر روی سرور، مطمئن شوید که با یک کاربر با دسترسی sudo
به سرور وارد شدهاید.
وبسرور Nginx در مخزن یا Repository پیشفرض در CentOS 7 موجود نیست، پس میبایست از مخازن EPEL استفاده کنیم. برای افزودن مخزن EPEL از دستور زیر استفاده میکنیم.
yum install epel-release
سپس Nginx را با دستور زیر نصب میکنیم.
yum install nginx
پس از نصب Nginx، با دستورات زیر Nginx را استارت و فعال میکنیم.
systemctl start nginx systemctl enable nginx
به منظور بررسی اجرا و فعال شدن Nginx، میتوانید IP سرور را در مرورگر وارد نمایید.
جهت یافتن آدرس IP سرور، میتوان از یکی از دستورات زیر استفاده نمود.
ip a s | sed -ne '/127.0.0.1/!{s/^[ \t]*inet[ \t]*\([0-9.]\+\)\/.*$/\1/p}'
curl https://ipecho.net/plain; echo
curl https://icanhazip.com
پس از نصب موفقیت آمیز وب سرور (Nginx)، زمان نصب MariaDB میباشد. پکیج MariaDB در مخازن CentOS 7 وجود دارد.
با دستور زیر MariaDB را نصب میکنیم.
yum install mariadb-server mariadb
جهت استارت و فعال کردن MariaDB از دو دستور زیر استفاده میکنیم.
systemctl start mariadb systemctl enable mariadb
پس از نصب MariaDB، یک اسکریپت امنیتی ساده را جهت حذف برخی از محتویات پیشفرض و همچنین قفل کردن دسترسی به سیستم دیتابیس را اجرا میکنیم.
mysql_secure_installation
پس از اجرای دستور، اعلان از شما رمز عبور فعلی MySQL را میخواهد. با توجه به اینکه در حال حاضر MySQL بدون رمز عبور میباشد، با یک Enter به مرحله بعد میرویم. پس از سوال تنظیم رمز عبور، Y را بزنید و برای روت MySQL خود یک رمز وارد نمایید.
برای بقیه سوالات فقط کافیست Enter بزنید تا مقادیر پیشفرض ذخیره شود. این کار باعث حذف برخی از کاربران و دیتابیسهای نمونه، غیر فعال کردن ورود از راه دور به دیتابیس خواهد شد.
نمونه خروجی:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. 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!
بصورت پیشفرض در مخازن CentOS 7 از PHP 5.4 استفاده میشود. بنابراین ما از مخازن Remi جهت نصب PHP 7.2 استفاده خواهیم کرد.
دستور زیر مخازن Remi را به سرور CentOS 7 اضافه خواهد کرد.
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
پس از اضافه شدن مخازن Remi، بسته yum-utils
را نصب میکنیم و remi-php72
را فعال میکنیم.
yum install yum-utils yum-config-manager --enable remi-php72
اکنون میتوانیم PHP-FPM و چند ماژول متداول PHP را با دستور زیر نصب نماییم.
yum install php php-mysql php-fpm
با استفاده از دستور sed
میتوانیم تغییرات مورد نظر را در فایلهای php.ini
و www.conf
انجام دهیم.
sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /etc/php.ini sed -i 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf sed -i 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf
همچنین میتوانید با استفاده از ویرایشگری نظیر vi یا nano تغییرات را بصورت زیر اعمال نماییم.
فایل php.ini
را بصورت زیر ویرایش میکنیم.
vi /etc/php.ini
خط زیر را پیدا میکنیم.
;cgi.fix_pathinfo=1
و بصورت زیر ویرایش میکنیم.
cgi.fix_pathinfo=0
سپس فایل کانفیگ PHP-FPM که www.conf
میباشد را ویرایش میکنیم.
vi /etc/php-fpm.d/www.conf
خطی که شامل پارامتر listen
میباشد را پیدا کنید و بصورت زیر ویرایش نمایید.
listen = /var/run/php-fpm/php-fpm.sock
سپس خطوطی که تنظیمات مربوط به listen.owner
و listen.group
را شامل میباشد را پیدا کنید و بصورت زیر ویرایش کنید.
listen.owner = nginx listen.group = nginx
و در آخر خطوطی که مربوط به تنظیمات user
و group
میباشد را از apache
به nginx
تغییر دهید.
و در نهایت با دستورات زیر PHP-FPM را استارت و فعال کنید. منظور از فعال کردن، قرار دادن سرویس در استارتآپ CentOS 7 میباشد.
systemctl enable php-fpm systemctl start php-fpm
در این مرحله میبایست فایل کانفیگ بلاک server
وبسرور Nginx را ویرایش کنیم تا Nginx بتواند فایلهای PHP را پردازش کند.
ابتدا دستور زیر را جهت ویرایش فایل default.conf
اجرا میکنیم.
vi /etc/nginx/conf.d/default.conf
در صورتی که محتوایی در این فایل وجود داشت، تمامی خطوط را حذف مینماییم. سپس محتویات زیر را به فایل اضافه و فایل را ذخیره میکنیم.
server { listen 80; server_name server_domain_name_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; } }
نکته: مقدار server_name
را با IP یا نام دامین خود جایگزین نمایید.
در پایان Nginx را با دستور زیر ریستارت میکنیم.
systemctl restart nginx
دستور زیر را جهت ایجاد فایل info.php
وارد نمایید.
vi /usr/share/nginx/html/info.php
عبارت زیر را درون فایل ایجاد شده کپی و فایل را ذخیره کنید.
<?php phpinfo();
سپس در مرورگر خود IP سرور را وارد و در انتها info.php/ اضافه نمایید. (بصورت زیر)
http://your_server_IP_address/info.php