# ⚙️ آموزش نصب پشته LEMP در لینوکس (Nginx + MySQL + PHP)
پشتهی LEMP یکی از محبوبترین زیرساختها برای میزبانی وبسایتهای پویا است. برخلاف LAMP که از Apache استفاده میکند، در LEMP از **Nginx** بهعنوان وبسرور استفاده میشود.
---
## 🧩 اجزای پشته LEMP چیست؟
| مولفه | وظیفه |
| ------------------- | ---------------------------------------------- |
| **Linux** | سیستمعامل پایه (Ubuntu, Debian, CentOS و ...) |
| **Nginx** | وبسرور قدرتمند و سبک |
| **MySQL / MariaDB** | سیستم پایگاهداده |
| **PHP** | زبان اسکریپتنویسی برای پردازش سمت سرور |
---
## 📦 نصب پشته LEMP در Ubuntu / Debian
### 1. نصب Nginx
```bash
sudo apt update
sudo apt install nginx -y
sudo systemctl enable --now nginx
```
تست در مرورگر:
`http://your-server-ip`
---
### 2. نصب MySQL یا MariaDB
```bash
sudo apt install mysql-server -y
sudo mysql_secure_installation
```
بررسی:
```bash
mysql -u root -p
```
---
### 3. نصب PHP + FPM
```bash
sudo apt install php-fpm php-mysql -y
```
بررسی نسخه:
```bash
php -v
```
---
### 4. پیکربندی Virtual Host برای استفاده از PHP
```bash
sudo nano /etc/nginx/sites-available/example.com
```
نمونه کانفیگ:
```nginx
server {
listen 80;
server_name example.com;
root /var/www/example.com;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}
```
فعالسازی سایت:
```bash
sudo mkdir -p /var/www/example.com
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```
---
## 📦 نصب LEMP در CentOS / AlmaLinux / Rocky
### 1. نصب Nginx
```bash
sudo dnf install nginx -y
sudo systemctl enable --now nginx
```
---
### 2. نصب MariaDB
```bash
sudo dnf install mariadb-server -y
sudo systemctl enable --now mariadb
sudo mysql_secure_installation
```
---
### 3. نصب PHP و PHP-FPM
```bash
sudo dnf install php php-mysqlnd php-fpm -y
sudo systemctl enable --now php-fpm
```
بررسی فایل `/etc/php-fpm.d/www.conf` و تنظیم کاربر:
```ini
user = nginx
group = nginx
```
---
### 4. پیکربندی Nginx برای PHP
```bash
sudo nano /etc/nginx/conf.d/example.com.conf
```
محتوا:
```nginx
server {
listen 80;
server_name example.com;
root /usr/share/nginx/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
```
بارگذاری مجدد:
```bash
sudo nginx -t
sudo systemctl reload nginx
```
---
## ✅ تست عملکرد PHP
فایل زیر را بسازید:
```bash
echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/info.php
```
در مرورگر باز کنید:
`http://your-server-ip/info.php`
---
## 🔒 اقدامات امنیتی پیشنهادی
* حذف فایل `info.php` پس از تست
* فعالسازی فایروال (UFW یا firewalld)
* استفاده از HTTPS با Let’s Encrypt
* محدود کردن دسترسی به phpMyAdmin در صورت نصب
---
## 🟢 نتیجهگیری
با انجام مراحل بالا، شما یک پشتهی کامل LEMP راهاندازی کردهاید که توانایی اجرای سایتهای PHP را با سرعت و بهرهوری بالا دارد.