استک LEMP یک بسته نرمافزاری متن باز شامل Linux (حرف L)، Nginx (حرف E)، MySQL یا MariaDB (حرف M) و PHP (حرف P) جایگزین استک LAMP با این تفاوت که وبسرور Nginx به جای Apache میباشد.
در این آموزش نحوه نصب و کانفیگ اولیه استک LEMP را در Ubuntu 18.04 آموزش خواهیم داد.
برای نصب استک LEMP بر روی سرور، مطمئن شوید که با یک کاربر با دسترسی sudo
به سرور وارد شدهاید.
وبسرور Nginx در مخزن (Repository) پیشفرض در Ubuntu 18.04 موجود است. با توجه به این مسئله میتوانیم با استفاده از پکیج منیجر apt نسبت به نصب Nginx اقدام نماییم.
ابتدا با استفاده از دستور sudo apt update
ایندکس پکیجهای موجود بر روی سرور را آپدیت میکنیم و پس از آن اقدام به نصب Nginx میکنیم.
sudo apt update sudo apt install nginx
به منظور بررسی اجرا و فعال شدن Nginx، میتوانید IP سرور را در مرورگر وارد نمایید.
جهت یافتن آدرس IP سرور، میتوان از یکی از دستورات زیر استفاده نمود.
ip a s | sed -ne '/127.0.0.1/!{s/^[ \t]*inet[ \t]*\([0-9.]\+\)\/.*$/\1/p}'
curl https://kernel.ir/ip
پس از نصب موفقیت آمیز وب سرور (Nginx)، زمان نصب MariaDB میباشد. پکیج MariaDB نیز مانند Nginx در مخزن Ubuntu 18.04 وجود دارد.
با استفاده از دستور زیر 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!
در Ubuntu 18.04 بصورت پیشفرض PHP نسخه 7.2 ارائه شده است، بدین منظور برای نصب 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 index.nginx-debian.html; 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; } location ~ /\.ht { deny all; } }
توجه نمایید که مقدار 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
استک LEMP بصورت کامل نصب شده است. جهت بررسی اجرای صحیح فایل PHP بر روی Nginx میتوانیم یک فایل PHP جهت مشاهده اطلاعات PHP ایجاد نماییم.
sudo vi /var/www/html/info.php
محتویات زیر را در فایل وارد میکنیم.
<?php phpinfo();
فایل را ذخیره و از آن خارج میشویم.
سپس در مرورگر خود IP سرور را وارد و در انتها info.php/ اضافه نمایید. (بصورت زیر)
http://your_server_IP_address/info.php
میبایست با صفحهای مانند اسکرین شات زیر روبرو شویم.