LEMP | Nginx | PHP | MySQL | Ubuntu 22.04 | Ubuntu
از Ubuntu 22.04 استفاده نمیکنید؟
میتوانید نسخه یا توزیع دیگری را انتخاب کنید.
مقدمه
پشته نرمافزاری LEMP برای ارائه صفحات وب پویا و برنامههای وب نوشتهشده با PHP استفاده میشود. این نام مخفف موارد زیر است:
-
Linux: سیستمعامل
-
Nginx (تلفظ: Engine-X): وبسرور
-
MySQL: پایگاه داده
-
PHP: پردازش محتوای پویا
در این راهنما، نصب کامل پشته LEMP روی یک سرور Ubuntu را بررسی میکنیم. سیستمعامل اوبونتو بخش لینوکس را پوشش میدهد و در ادامه نصب و پیکربندی سایر اجزا توضیح داده میشود.
نکته: این آموزش عمدتاً برای Ubuntu 22.04 LTS با PHP 8.1 نوشته شده است.
اگر از Ubuntu 24.04 LTS استفاده میکنید، در تمام دستورات:
php8.1-fpmرا باphp8.3-fpmجایگزین کنیدمسیر سوکت PHP-FPM را به
/run/php/php8.3-fpm.sockتغییر دهید
سرفصلها
-
نصب Nginx
-
نصب MySQL
-
نصب PHP
-
پیکربندی Nginx برای استفاده از PHP
-
تست PHP با Nginx
-
تست اتصال پایگاه داده از PHP
پیشنیازها
-
یک کاربر غیر root با دسترسی sudo
-
فایروال UFW فعال
-
سرور Ubuntu
(میتوانید از راهنمای نصب اولیه سرور Ubuntu استفاده کنید)
اگر هنوز سرور اوبونتوی خود را راهاندازی نکردهاید، ابتدا راهنمای کامل نصب Ubuntu 24 را ببینید.
مرحله ۱ – نصب وبسرور Nginx
ابتدا فهرست بستهها را بهروزرسانی کنید:
sudo apt updateسپس Nginx را نصب کنید:
sudo apt install nginxپس از نصب، وضعیت سرویس را بررسی کنید:
sudo systemctl status nginxاگر خروجی نشان دهد که سرویس active (running) است، همهچیز درست پیش رفته.
باز کردن پورت HTTP در فایروال
نمایش پروفایلهای موجود:
sudo ufw app listفعالسازی فقط HTTP:
sudo ufw allow 'Nginx HTTP'بررسی وضعیت فایروال:
sudo ufw statusتست Nginx
اگر دامنه ندارید، IP سرور را پیدا کنید:
ip addr show
hostname -Iیا از بیرون:
curl -4 icanhazip.comدر مرورگر باز کنید:
http://IP_یا_دامنهاگر صفحه پیشفرض Nginx را دیدید، نصب موفق بوده است.
مرحله ۲ – نصب MySQL
نصب MySQL:
sudo apt install mysql-serverاجرای اسکریپت امنیتی:
sudo mysql_secure_installationدر این مرحله:
-
میتوانید پلاگین بررسی قدرت رمز عبور را فعال یا غیرفعال کنید
-
رمز عبور قوی برای کاربر root دیتابیس تنظیم میشود
-
کاربران ناشناس و دیتابیس تست حذف میشوند
-
لاگین ریموت root غیرفعال میشود
ورود به MySQL
sudo mysqlخروج:
exitنکته امنیتی: در Ubuntu، احراز هویت root بهصورت پیشفرض با
auth_socketانجام میشود، نه رمز عبور. این موضوع امنیت را افزایش میدهد.
مرحله ۳ – نصب PHP
نصب PHP-FPM و افزونه MySQL:
پس از نصب PHP، برای شروع توسعه میتوانید از فریمورکهای محبوب PHP نیز استفاده کنید.
sudo apt install php8.1-fpm php-mysqlبررسی وضعیت:
sudo systemctl status php8.1-fpm
php -vمرحله ۴ – پیکربندی Nginx برای PHP
ساخت دایرکتوری سایت
sudo mkdir /var/www/your_domain
sudo chown -R $USER:$USER /var/www/your_domainساخت فایل تنظیمات Nginx
sudo nano /etc/nginx/sites-available/your_domainمحتوا:
server {
listen 80;
server_name your_domain www.your_domain;
root /var/www/your_domain;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}فعالسازی پیکربندی:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/defaultبررسی و ریلود:
sudo nginx -t
sudo systemctl reload nginxساخت صفحه تست
nano /var/www/your_domain/index.htmlمحتوا:
<h1>Hello World!</h1>
<p>This is the landing page of your_domain.</p>مرحله ۵ – تست PHP با Nginx
ساخت فایل info.php:
nano /var/www/your_domain/info.php<?php
phpinfo();در مرورگر:
http://IP_یا_دامنه/info.phpپس از تست، فایل را حذف کنید:
sudo rm /var/www/your_domain/info.phpمرحله ۶ – تست اتصال پایگاه داده از PHP (اختیاری)
ساخت دیتابیس و کاربر
sudo mysqlCREATE DATABASE example_database;
CREATE USER 'example_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL ON example_database.* TO 'example_user'@'%';
exitساخت جدول نمونه
CREATE TABLE example_database.todo_list (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);اسکریپت PHP اتصال به MySQL
nano /var/www/your_domain/todo_list.php<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";
try {
$db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
echo "<h2>TODO</h2><ol>";
foreach($db->query("SELECT content FROM $table") as $row) {
echo "<li>" . $row['content'] . "</li>";
}
echo "</ol>";
} catch (PDOException $e) {
echo "Error: " . $e->getMessage();
}در مرورگر:
http://IP_یا_دامنه/todo_list.phpپرسشهای متداول (FAQ)
LEMP برای چه استفاده میشود؟
برای اجرای وبسایتها و اپلیکیشنهای PHP مانند WordPress، Laravel، Magento و Drupal.
تفاوت LEMP و LAMP چیست؟
LEMP از Nginx (غیرهمزمان و سریعتر برای ترافیک بالا) استفاده میکند، LAMP از Apache.
کدام نسخه Ubuntu مناسب است؟
-
Ubuntu 22.04 → PHP 8.1
-
Ubuntu 24.04 → PHP 8.3
خطای 502 Bad Gateway چرا رخ میدهد؟
معمولاً به دلیل:
-
اجرا نبودن PHP-FPM
-
مسیر اشتباه سوکت
-
مشکل دسترسی یا مجوزها
راهحل:
sudo systemctl restart php8.1-fpm nginxجمعبندی
با انجام این مراحل، پشته LEMP بهطور کامل روی سرور Ubuntu شما راهاندازی شده است. حالا میتوانید:
-
چندین وبسایت روی یک سرور اجرا کنید
-
پروژههای PHP مدرن را میزبانی کنید
-
بهراحتی مقیاسپذیری و امنیت را مدیریت کنید
زیرساخت آماده است؛ حالا نوبت ساختن چیزهای جدیتر است.
برای مدیریت بکاپگیری و انتقال دادههای پایگاه داده MySQL خود نیز آموزش ایمپورت و اکسپورت دیتابیس در MySQL را مطالعه کنید.
