ติดตั้ง LEMP Stack บน Ubuntu VPS — Linux, Nginx, MySQL, PHP ครบในครั้งเดียว

LEMP Stack คือชุดซอฟต์แวร์พื้นฐานสำหรับ Web Hosting ประกอบด้วย Linux, Nginx (Engine-X), MySQL/MariaDB และ PHP เป็นทางเลือกยอดนิยมสำหรับการ Deploy เว็บไซต์ เช่น WordPress, Laravel หรือเว็บแอปลิเคชัน PHP ทั่วไป

ก่อนเริ่ม

  • Ubuntu 22.04 LTS (แนะนำ) หรือ Ubuntu 20.04
  • VPS ที่มี RAM อย่างน้อย 1 GB
  • เข้าถึงได้ด้วย SSH ในฐานะ root หรือ sudo user

ขั้นตอนที่ 1 — อัปเดต System

sudo apt update && sudo apt upgrade -y

ขั้นตอนที่ 2 — ติดตั้ง Nginx

sudo apt install nginx -y

# เปิดใช้งานและตั้งให้เริ่มอัตโนมัติเมื่อ Boot
sudo systemctl enable nginx
sudo systemctl start nginx

# ตรวจสอบ
sudo systemctl status nginx

เปิด Browser แล้วพิมพ์ IP Address ของ VPS ควรเห็นหน้า Welcome to nginx!

ขั้นตอนที่ 3 — ติดตั้ง MySQL

sudo apt install mysql-server -y

sudo systemctl enable mysql
sudo systemctl start mysql

# ตั้งค่าความปลอดภัย MySQL
sudo mysql_secure_installation

ระหว่าง mysql_secure_installation แนะนำให้:

  • VALIDATE PASSWORD: Y (เปิดใช้ password policy)
  • Remove anonymous users: Y
  • Disallow root login remotely: Y
  • Remove test database: Y
  • Reload privilege tables: Y

สร้าง Database และ User

sudo mysql

-- สร้าง database
CREATE DATABASE mysite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- สร้าง user และกำหนดสิทธิ์
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON mysite.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

ขั้นตอนที่ 4 — ติดตั้ง PHP

# ติดตั้ง PHP 8.3 และ Extensions ที่จำเป็น
sudo apt install php8.3-fpm php8.3-mysql php8.3-xml php8.3-curl \
  php8.3-gd php8.3-mbstring php8.3-zip php8.3-bcmath php8.3-intl -y

# ตรวจสอบเวอร์ชัน
php --version

# เปิดใช้งานและตั้งให้เริ่มอัตโนมัติ
sudo systemctl enable php8.3-fpm
sudo systemctl start php8.3-fpm

ขั้นตอนที่ 5 — ตั้งค่า Nginx สำหรับ PHP

สร้างไฟล์ Config สำหรับเว็บไซต์:

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

ใส่เนื้อหาดังนี้:

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?$query_string;
    }

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

    location ~ /\.ht {
        deny all;
    }

    # Security headers
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
}
# เปิดใช้งาน site config
sudo ln -s /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/

# ตรวจสอบ syntax
sudo nginx -t

# Reload Nginx
sudo systemctl reload nginx

# สร้างโฟลเดอร์ web root
sudo mkdir -p /var/www/mysite
sudo chown -R www-data:www-data /var/www/mysite

ขั้นตอนที่ 6 — ทดสอบ PHP ทำงานผ่าน Nginx

# สร้างไฟล์ทดสอบ
echo '' | sudo tee /var/www/mysite/info.php

# เปิด Browser ไปที่
# http://YOUR_VPS_IP/info.php

# ลบไฟล์หลังทดสอบ
sudo rm /var/www/mysite/info.php

ตั้งค่า PHP เพิ่มเติม

sudo nano /etc/php/8.3/fpm/php.ini

ค้นหาและปรับค่าเหล่านี้:

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
date.timezone = Asia/Bangkok
# Restart PHP-FPM หลังแก้ไข
sudo systemctl restart php8.3-fpm

สรุป: สังเกต LEMP Stack

Component Package คำสั่งตรวจสอบ
Linux Ubuntu 22.04 uname -a
Nginx nginx nginx -v
MySQL mysql-server mysql –version
PHP php8.3-fpm php –version

สรุป

หลังติดตั้ง LEMP Stack เสร็จ VPS ของคุณพร้อมสำหรับการ Deploy เว็บไซต์ PHP ทุกประเภท ไม่ว่าจะเป็น WordPress, Laravel, Symfony หรือแอปพลิเคชัน PHP ที่ฮอดเอง ขั้นตอนถัดไปคือติดตั้ง SSL Certificate ด้วย Certbot เพื่อเปิดใช้งาน HTTPS