رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
نحوه نصب لینوکس، Nginx، MySQL و PHP (پشته LEMP) روی اوبونتو

نحوه نصب لینوکس، Nginx، MySQL و PHP (پشته LEMP) روی اوبونتو

پشته LEMP شامل Linux، Nginx، MySQL و PHP است و برای اجرای وب‌سایت‌ها و برنامه‌های PHP روی سرور Ubuntu استفاده می‌شود. در این آموزش، نصب، پیکربندی و تست کامل LEMP با PHP-FPM و Nginx آموزش داده شده است. با راه‌اندازی این پشته، می‌توانید سایت‌ها و پروژه‌های PHP را امن، پایدار و آماده مقیاس‌پذیری اجرا کنید.


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 سرور را پیدا کنید:

2 خط
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
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

بررسی وضعیت:

2 خط
sudo systemctl status php8.1-fpm
php -v
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

مرحله ۴ – پیکربندی Nginx برای PHP

ساخت دایرکتوری سایت

2 خط
sudo mkdir /var/www/your_domain
sudo chown -R $USER:$USER /var/www/your_domain
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ساخت فایل تنظیمات Nginx

sudo nano /etc/nginx/sites-available/your_domain
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

محتوا:

20 خط
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;
    }
}
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

فعال‌سازی پیکربندی:

2 خط
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

بررسی و ری‌لود:

2 خط
sudo nginx -t
sudo systemctl reload nginx
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ساخت صفحه تست

nano /var/www/your_domain/index.html
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

محتوا:

2 خط
<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
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
2 خط
<?php
phpinfo();
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

در مرورگر:

http://IP_یا_دامنه/info.php
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

پس از تست، فایل را حذف کنید:

sudo rm /var/www/your_domain/info.php
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

مرحله ۶ – تست اتصال پایگاه داده از PHP (اختیاری)

ساخت دیتابیس و کاربر

sudo mysql
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
4 خط
CREATE DATABASE example_database;
CREATE USER 'example_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL ON example_database.* TO 'example_user'@'%';
exit
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ساخت جدول نمونه

5 خط
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
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید
16 خط
<?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 را مطالعه کنید.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS