نصب LEMP Stack روی اوبونتو (nginx، MySQL، PHP)

LEMP مخفف Linux، Nginx، MySQL و PHP است و رایج‌ترین ترکیب برای میزبانی وردپرس، لاراول و برنامه‌های PHP است. این راهنما همهٔ اجزا را به‌ترتیب نصب می‌کند و یک صفحهٔ تست می‌سازد.

وب‌سرور و SSLمقدماتی15 دقیقه

۱به‌روزرسانی و نصب nginx

پس از نصب و باز کردن پورت‌ها صفحهٔ خوش‌آمد nginx باید دیده شود.

bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y nginx
sudo ufw allow 'Nginx Full'
systemctl status nginx --no-pager

۲نصب MySQL و امن‌سازی

بعد از نصب، اسکریپت امن‌سازی رمز و تنظیمات پیش‌فرض ناامن را اصلاح می‌کند.

bash
sudo apt install -y mysql-server
sudo systemctl enable --now mysql
sudo mysql_secure_installation

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

به‌جای root از کاربر جدا برای هر برنامه استفاده کنید.

sql
sudo mysql

CREATE DATABASE mysite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mysite'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON mysite.* TO 'mysite'@'localhost';
FLUSH PRIVILEGES;
EXIT;

۴نصب PHP-FPM و افزونه‌ها

افزونه‌های لازم وردپرس و لاراول را یک‌جا نصب کنید.

bash
sudo apt install -y php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-gd php-intl php-bcmath
php -v
ls /run/php/

۵کانفیگ nginx برای PHP

نام سوکت را با خروجی ls /run/php/ تطبیق دهید (مثلاً php8.3-fpm.sock).

nginx
sudo nano /etc/nginx/sites-available/mysite

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/mysite;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location ~ /\.(?!well-known).* { deny all; }
}

۶فعال‌سازی و تست صفحهٔ PHP

یک فایل info.php بسازید، تست کنید و بلافاصله حذفش کنید، چون اطلاعات حساس نمایش می‌دهد.

bash
sudo mkdir -p /var/www/mysite
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
echo '<?php phpinfo();' | sudo tee /var/www/mysite/info.php
sudo nginx -t && sudo systemctl reload nginx
curl -I http://example.com/info.php
sudo rm /var/www/mysite/info.php

فایل phpinfo را هرگز روی سرور عمومی باقی نگذارید.

۷دسترسی و مالک فایل‌ها

PHP-FPM با کاربر www-data اجرا می‌شود؛ پوشه‌های نوشتنی را به آن بدهید.

bash
sudo chown -R www-data:www-data /var/www/mysite
sudo find /var/www/mysite -type d -exec chmod 755 {} \;
sudo find /var/www/mysite -type f -exec chmod 644 {} \;

۸SSL رایگان و بکاپ

پس از راه‌اندازی، گواهی SSL بگیرید و بکاپ خودکار تنظیم کنید (راهنماهای مرتبط پایین صفحه).

bash
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

پرسش‌های پرتکرار دربارهٔ نصب LEMP Stack روی اوبونتو (nginx، MySQL، PHP)

LEMP بهتر است یا LAMP؟

LAMP از Apache و LEMP از nginx استفاده می‌کند. nginx معمولاً با حافظهٔ کمتر ترافیک بیشتری را تحمل می‌کند و برای سرورهای کوچک محبوب‌تر است. Apache از .htaccess پشتیبانی می‌کند که برای بعضی پلاگین‌ها راحت‌تر است.