انتخاب زیرساخت نرمافزاری پایدار و سریع برای میزبانی وب سایتهای پویا و اپلیکیشنهای تحت وب، اولین گام در مدیریت سرور لینوکسی محسوب میشود. تفاوت کلیدی مجموعه LEMP با LAMP، استفاده از وب سرور Nginx است که باعث میشود نصب LEMP stack برای پروژههایی که نیاز به مدیریت ترافیک بالا دارند، اولویت پیدا کند. این معماری، منابع سرور را بهینهتر مصرف کرده و سرعت پاسخدهی را افزایش میدهد. در این راهنما، تمام مراحل پیادهسازی و پیکربندی صحیح این محیط را روی اوبونتو ۲۲.۰۴ بررسی میکنیم. با ما همراه باشید تا نحوه نصب LEMP stack را به صورت عملی بیاموزید و سرور خود را آماده کنید.
LEMP استک چیست؟
LEMP استک در واقع جایگزینی برای استک محبوب LAMP محسوب میشود. هر دوی این پشتههای نرمافزاری شامل سیستم عامل لینوکس، یک وب سرور، پایگاه داده و یک زبان برنامهنویسی هستند که امکان میزبانی وباپلیکیشنها و ایجاد یک محیط برنامهنویسی کامل را فراهم میکنند. تمامی اجزای اصلی این دو استک از طریق مخازن نرمافزاری پیشفرض اوبونتو قابل نصب هستند.
تفاوت اصلی اینجاست که در LAMP از آپاچی استفاده میشود، اما در LEMP استک، وب سرور Nginx جایگزین آن شده. به همین دلیل است که از حرف E (اول کلمه Engine-x) در مخفف LEMP استفاده میشود. اگرچه در اکثر موارد از دیتابیس MariaDB استفاده میشود، اما امکان استفاده از MySQL نیز وجود دارد. همچنین در کنار PHP، گاهی از زبانهایی مثل پایتون یا پرل نیز استفاده میشود، اما تمرکز ما در اینجا روی PHP است.
اجزای تشکیلدهنده این استک عبارتند از:
- Linux: اوبونتو یکی از توزیعهای محبوب لینوکس است که کتابخانههای نرمافزاری خاص خود را دارد. اگر یک سرور مجازی لینوکس تهیه کردهاید، این سیستم عامل پایه و اساس نصب سایر اجزا خواهد بود.
- Nginx Server: این نرمافزار یکی از محبوبترین وب سرورهای متنباز جهان شناخته میشود. برخلاف آپاچی که پردازش محور است، Nginx از معماری رویداد محور استفاده میکند. این ویژگی باعث میشود Nginx سریعتر و کارآمدتر از آپاچی باشد، هرچند که از پیکربندی سایت به سایت (مشابه .htaccess) پشتیبانی نمیکند. استفاده از این وب سرور دلیل اصلی محبوبیت نصب LEMP stack به شمار میرود.
- MariaDB: یک سیستم مدیریت پایگاه داده رابطهای (RDBMS) و انشعابی از MySQL است که توسط بنیاد MariaDB توسعه یافته و کاملا رایگان است. برخلاف MySQL که تحت مالکیت اوراکل قرار دارد، MariaDB به فلسفه متنباز پایبندتر است. این دیتابیس از همان دستورات SQL استفاده میکند اما ویژگیهای جدیدتری دارد و از نظر عملکرد و کارایی برتر از MySQL در نظر گرفته میشود.
- PHP: زبان برنامهنویسی سمت سرور که کدهای آن درون فایلهای HTML قرار میگیرند و توسط پردازنده PHP در اوبونتو تفسیر میشوند. این زبان به صورت رایگان قابل نصب است و به خوبی با سایر اجزای LEMP روی یک سرور مجازی کار میکند.
پیشنیازهای نصب LEMP روی سرور اوبونتو
قبل از شروع مراحل آموزش نصب LEMP، مطمئن شوید که موارد زیر آماده باشند:
- یک سرور با سیستم عامل اوبونتو ۲۲.۰۴
- یک یوزر با دسترسی sudo (غیر از یوزر root)
- فعال بودن فایروال
نصب استک LEMP
برای پیادهسازی این محیط قدرتمند، باید مراحل را به دقت دنبال کنید. در این آموزش نصب LEMP، ما از مدیر بسته apt که ابزار پیشفرض اوبونتو است استفاده خواهیم کرد.
۱. بهروزرسانی سیستم
اولین و مهمترین قدم پس از ورود به سرور، بهروزرسانی مخازن نرمافزاری و پکیجهای سیستم است تا از سازگاری کامل اطمینان حاصل شود. برای این کار دستور زیر را اجرا کنید:
sudo apt update && sudo apt upgrade
۲. نصب وب سرور
هسته اصلی این استک، Nginx است؛ یک وب سرور با کارایی بالا که برای میزبانی وب سایتهای پر ترافیک و به عنوان پروکسی معکوس استفاده میشود. خوشبختانه Nginx در مخازن پیشفرض اوبونتو موجود است و میتوانید آن را به سادگی نصب کنید:
sudo apt install nginx
پس از اتمام نصب، سرویس Nginx به صورت خودکار اجرا میشود. برای اطمینان از فعال بودن سرویس، دستور زیر را وارد کنید:
sudo systemctl status nginx
خروجی این دستور باید نشان دهد که وضعیت سرویس active (یا running) است. علاوه بر این، برای تایید نهایی عملکرد صحیح وب سرور، میتوانید آدرس IP سرور یا نام دامنه خود را در مرورگر وارد کنید:
http://server-ip or domain name
اگر با وارد کردن آدرس بالا صفحهای مشاهده نکردید، احتمالا فایروال مانع دسترسی شده است و باید ترافیک HTTP را مجاز کنید. برای اینکه اجازه عبور ترافیک HTTP و HTTPS را در فایروال UFW صادر کنید، دستور زیر را اجرا نمایید:
sudo ufw allow 'Nginx Full'
نکته: اگر فقط میخواهید یکی از پروتکلهای HTTP یا HTTPS را مجاز کنید، میتوانید به جای ‘Nginx Full’ از ‘Nginx HTTP’ یا ‘Nginx HTTPS’ استفاده کنید.
سپس برای اعمال تغییرات، فایروال را ریلود کنید:
sudo ufw reload
۳. نصب سرور پایگاه داده MariaDB
جزء بعدی در نصب LEMP stack، سیستم مدیریت پایگاه داده است. MariaDB یک سرور دیتابیس رابطهای متنباز محسوب میشود که دادهها را در جداول ذخیره میکند. برای نصب آن دستور زیر را اجرا کنید:
sudo apt install mariadb-server mariadb-client -y
پس از نصب، وضعیت سرویس را بررسی کنید:
sudo systemctl status mariadb
خروجی باید نشان دهد که سرویس در حال اجرا (active/running) است.
اگر سرویس فعال نبود، با دستور زیر آن را استارت کنید:
sudo systemctl start mariadb
برای اینکه مطمئن شوید پس از هر بار ریستارت شدن سرور مجازی، دیتابیس به طور خودکار اجرا میشود، دستور زیر را وارد کنید:
sudo systemctl enable mariadb
تنظیمات پیشفرض MariaDB ایمن نیستند و ممکن است دیتابیس را در معرض نفوذ قرار دهند. بنابراین باید یک اسکریپت امنیتی اجرا کنیم:
sudo mysql_secure_installation
در این مرحله از شما خواسته میشود یک رمز عبور برای روت تنظیم کنید.
پس از تنظیم رمز، برای سایر پرسشها کافیست کلید Y را فشار دهید تا تنظیمات پیشنهادی و امن اعمال شوند.
در نهایت برای ورود به محیط مدیریت دیتابیس دستور زیر را بزنید:
sudo mysql -u root -p
۴. نصب PHP
به طور پیشفرض، اوبونتو ۲۲.۰۴ نسخه PHP ۸.۱ را ارائه میدهد که نسبت به نسخه ۸.۰ بهبودهای چشمگیری در عملکرد داشته است. از آنجا که Nginx برخلاف آپاچی پردازشگر PHP داخلی ندارد، ما باید PHP-FPM را نصب کنیم تا کدهای PHP پردازش و به وب سرور تحویل داده شوند.
برای نصب PHP ۸.۱ و ماژولهای ضروری آن دستور زیر را اجرا کنید:
sudo apt install php8.1 php8.1-fpm php8.1-mysql php-common php8.1-cli php8.1-common php8.1-opcache php8.1-readline php8.1-mbstring php8.1-xml php8.1-gd php8.1-curl
سپس سرویس PHP-FPM را استارت کرده و آن را برای اجرا در زمان بوت سیستم فعال کنید:
sudo systemctl start php8.1-fpm sudo systemctl enable php8.1-fpm
برای اطمینان از صحت اجرا، وضعیت را چک کنید:
sudo systemctl status php8.1-fpm
برای دریافت بهترین عملکرد از نصب LEMP stack، بهتر است برخی مقادیر پیشفرض را در فایل تنظیمات تغییر دهیم. فایل php.ini را با ویرایشگر نانو باز کنید:
sudo nano /etc/php/8.1/fpm/php.ini
مقادیر زیر را در فایل پیدا کرده و به شکل زیر تغییر دهید (این کار باعث بهینهسازی منابع در سرور مجازی لینوکس شما میشود):
upload_max_filesize = 32M post_max_size = 48M memory_limit = 256M max_execution_time = 600 max_input_vars = 3000 max_input_time = 1000
پس از ذخیره تغییرات، سرویس را ریستارت کنید تا تنظیمات اعمال شوند:
sudo systemctl restart php8.1-fpm
۵. پیکربندی VirtualHost در Nginx
اکنون لازم است تغییراتی در فایل پیکربندی پیشفرض Nginx ایجاد شود تا این وب سرور بتواند فایلهای PHP را شناسایی و پردازش کند. برای دسترسی به فایل تنظیمات، دستور زیر را وارد کنید:
sudo nano /etc/nginx/sites-enabled/default
به بلوک server بروید و محتویات آن را بررسی کنید تا دقیقا مشابه نمونه زیر باشد (دقت کنید که بخش location ~ \.php$ برای پردازش PHP مهم است):
server {
listen 80;
root /var/www/html;
index index.php;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
}
نکته: در قسمت server_name میتوانید نام دامنه یا IP خود را جایگزین کنید.
تغییرات را ذخیره کرده و از ویرایشگر خارج شوید. سپس برای اطمینان از اینکه هیچ خطای نگارشی در تنظیمات وجود ندارد، دستور زیر را اجرا کنید:
nginx -t
اگر پیامی مبنی بر موفقیتآمیز بودن تست دریافت نمودید، سرویسهای Nginx و PHP-FPM را ریستارت کنید تا تغییرات اعمال شوند:
sudo systemctl restart nginx php8.1-fpm
۶. تست پردازش PHP در Nginx
حال که PHP به طور کامل روی Nginx فعال شده است، باید از صحت عملکرد آن مطمئن شویم. برای این کار یک فایل نمونه PHP ایجاد میکنیم:
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
پس از ایجاد فایل، مرورگر خود را باز کرده و به آدرس زیر بروید (به جای server-ip آدرس آیپی سرور خود را وارد کنید):
http://server-ip/info.php
اگر مشابه تصویر زیر، صفحهای حاوی اطلاعات کامل نسخه PHP و تنظیمات سرور مشاهده کردید، به این معنی است که نصب LEMP stack روی اوبونتو ۲۲.۰۴ با موفقیت کامل انجام شده.
جمع بندی
پیادهسازی و نصب LEMP stack روی سیستم عامل اوبونتو ۲۲.۰۴، زیرساختی قدرتمند و مقیاس پذیر را برای میزبانی وب سایتهای پویا فراهم میکند. با کنار هم قرار گرفتن لینوکس، وب سرور پرسرعت Nginx، پایگاه داده MariaDB و زبان PHP، محیطی ایدهآل برای مدیریت ترافیکهای سنگین با مصرف منابع بهینه ایجاد میشود.
اهمیت آموزش نصب LEMP در این است که جایگزینی Nginx به جای آپاچی، سرعت پردازش درخواستها را به طرز چشمگیری افزایش میدهد. اکنون با انجام صحیح پیکربندیها و اطمینان از صحت عملکرد تمام اجزای LEMP استک، بستر لازم برای توسعه و استقرار اپلیکیشنهای تحت وب مدرن با پایداری و امنیت بالا کاملا مهیا شده است.












