استک LEMP یک بسته نرم‌افزاری متن باز شامل Linux (حرف L)، Nginx (حرف E)، MySQL یا MariaDB (حرف M) و PHP (حرف P) جایگزین استک LAMP با این تفاوت که وب‌سرور Nginx به جای Apache می‌باشد.

در این آموزش نحوه نصب و کانفیگ اولیه استک LEMP را در Debian 10 آموزش خواهیم داد.

پیش نیازها

برای نصب استک LEMP بر روی سرور، مطمئن شوید که با یک کاربر با دسترسی sudo به سرور وارد شده‌اید.

مرحله 1 – نصب Nginx

وب‌سرور Nginx در مخزن (Repository) پیش‌فرض در Debian 10 موجود است. با توجه به این مسئله می‌توانیم با استفاده از پکیج منیجر apt نسبت به نصب Nginx اقدام نماییم.

ابتدا با استفاده از دستور sudo apt update ایندکس پکیج‌های موجود بر روی سرور را آپدیت می‌کنیم و پس از آن اقدام به نصب Nginx می‌کنیم.

sudo apt update
sudo apt install nginx

به منظور بررسی اجرا و فعال شدن Nginx، می‌توانید IP سرور را در مرورگر وارد نمایید.

آموزش پیدا کردن IP سرور

جهت یافتن آدرس IP سرور، می‌توان از یکی از دستورات زیر استفاده نمود.

ip a s | sed -ne '/127.0.0.1/!{s/^[ \t]*inet[ \t]*\([0-9.]\+\)\/.*$/\1/p}'
curl https://kernel.ir/ip

مرحله 2 – نصب MySQL یا MariaDB

پس از نصب موفقیت آمیز وب سرور (Nginx)، زمان نصب MariaDB می‌باشد. پکیج MariaDB نیز مانند Nginx در مخزن Debian 10 وجود دارد.

با استفاده از دستور زیر MariaDB را نصب می‌کنیم.

sudo apt install mariadb-server

نصب MariaDB با دستور بالا به اتمام رسیده است ولی جهت کانفیگ اولیه و انجام تنظیمات امنیتی دستور زیر را اجرا می‌کنیم.

sudo 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!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] 
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] 
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] 
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] 
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

مرحله 3 – نصب PHP و کانفیگ Nginx جهت پردازش فایل‌های PHP

در Debian 10 بصورت پیش‌فرض PHP نسخه 7.3 ارائه شده است، بدین منظور برای نصب PHP FPM و برخی از ماژول‌های متداول PHP از دستور زیر استفاده می‌کنیم.

sudo apt install php-fpm php-mysql

تقریباً نصب و کانفیگ موارد مورد نیاز به اتمام رسیده است. در حال حاضر می‌بایست یک سری تغییرات در کانفیگ Nginx جهت اجرای فایل‌های داینامیک PHP اعمال نماییم.

بدین منظور می‌بایست تغییراتی را در بلاک server ایجاد نماییم. بدین منظور یک فایل در دایرکتوری /etc/nginx/sites-available/ ایجاد می‌کنیم. در این مثال از فایل example.com استفاده می‌کنیم.

sudo vi /etc/nginx/sites-available/example.com

با ویرایش یک فایل کانفیگ جدید به جای ایجاد تغییرات در فایل کانفیگ پیش‌فرض، در هر زمان که نیاز به ایجاد تغییرات داشته باشیم به راحتی می‌توانیم فایل ایجاد شده را ویرایش یا حذف نماییم.

محتویات زیر را در فایل کانفیگ وارد می‌کنیم.

server {
        listen 80;
        root /var/www/html;
        index index.php index.html index.htm;
        server_name example.com;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }
}

توجه نمایید که مقدار server_name را بصورت صحیح وارد نماییم. (آی‌پی یا نام دامنه)

پس از افزودن محتوای بالا، فایل را ذخیره و از آن خارج می‌شویم. و با استفاده از ایجاد یک لینک از فایل موجود دایرکتوری site-available به دایرکتوری site-enabled کانفیگ ایجاد شده را فعال می‌کنیم.

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

سپس لینک پیش‌فرض را با استفاده از دستور زیر حذف می‌نماییم.

sudo unlink /etc/nginx/sites-enabled/default

نکته: در صورت نیاز به بازگردانی کانفیگ پیش‌فرض می‌توانیم از دستور زیر لینک را مجدداً ایجاد نماییم.

sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

با استفاده از دستور زیر می‌توانیم محتوای فایل کانفیگ خود را جهت بررسی خطاهای احتمالی بررسی نماییم.

sudo nginx -t

در صورتی که با خطایی مواجه نشدیم، دستور زیر را جهت اعمال تغییرات بر روی Nginx اجرا می‌کنیم.

sudo systemctl reload nginx

مرحله 4 – بررسی اجرای صحیح PHP بر روی Nginx

استک LEMP بصورت کامل نصب شده است. جهت بررسی اجرای صحیح فایل PHP بر روی Nginx می‌توانیم یک فایل PHP جهت مشاهده اطلاعات PHP ایجاد نماییم.

sudo vi /var/www/html/info.php

محتویات زیر را در فایل وارد می‌کنیم.

<?php
phpinfo();

فایل را ذخیره و از آن خارج می‌شویم.

سپس در مرورگر خود IP سرور را وارد و در انتها info.php/ اضافه نمایید. (بصورت زیر)

http://your_server_IP_address/info.php

می‌بایست با صفحه‌ای مانند اسکرین شات زیر روبرو شویم.