رفتن به محتوای اصلی
دیدگاه کلود | ارائه‌کننده سرورهای ابری و اختصاصی
نحوه نصب لینوکس، 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 استفاده کنید)


مرحله ۱ – نصب وب‌سرور 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:

 
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 mysql
 
CREATE 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 مدرن را میزبانی کنید

  • به‌راحتی مقیاس‌پذیری و امنیت را مدیریت کنید

زیرساخت آماده است؛ حالا نوبت ساختن چیزهای جدی‌تر است.