เว็บนี้มีลิงก์ affiliate — หากสมัครผ่านลิงก์ เราได้รับค่าคอมมิชชัน · Affiliate links.

คู่มือติดตั้ง LEMP Stack บน DigitalOcean Droplet 2026

A complete step-by-step guide to setting up LEMP Stack (Linux + Nginx + MySQL + PHP-FPM) on a DigitalOcean Droplet with Virtual Hosts and free SSL.

คู่มือติดตั้ง LEMP Stack บน DigitalOcean Droplet 2026

LEMP Stack คือชุดซอฟต์แวร์ยอดนิยมสำหรับรันเว็บไซต์ PHP ประกอบด้วย Linux OS, Nginx web server, MySQL (หรือ MariaDB) และ PHP-FPM — ทั้งหมดโอเพนซอร์สและฟรี คู่มือนี้พาติดตั้งครบทุกชิ้นบน DigitalOcean Droplet ตั้งแต่สร้าง Droplet ใหม่จนถึงเปิดเว็บ PHP พร้อม SSL ใช้งานได้จริงภายใน 30 นาที

เตรียม Droplet

สร้าง Droplet บน DigitalOcean เลือก Ubuntu 24.04 LTS (Droplet Basic 1 GiB RAM / 1 vCPU / 25 GB SSD $6/เดือน เพียงพอสำหรับเว็บขนาดเล็ก-กลาง) เลือก region Singapore หรือ Bangalore เพื่อ latency ต่ำจากไทย เมื่อ SSH เข้าเครื่องแล้วอัปเดตก่อนเสมอ

Create a new Droplet — Ubuntu 24.04 LTS, Basic 1 GiB/$6/mo is fine for small to medium sites. Choose Singapore or Bangalore region. SSH in and update first.

apt update && apt upgrade -y
adduser deploy && usermod -aG sudo deploy

ติดตั้ง Nginx

Nginx (อ่านว่า engine-x) เป็น web server ที่ใช้หน่วยความจำต่ำ รับ concurrent connection สูง เหมาะกับ Droplet ขนาดเล็ก

Nginx handles concurrent connections efficiently with low memory — ideal for small Droplets.

apt install nginx -y
systemctl enable nginx
systemctl start nginx

เปิด firewall ให้ Nginx รับ traffic ได้

ufw allow 'Nginx Full'
ufw enable

ทดสอบเปิด http://<Droplet-IP> ในเบราว์เซอร์ — ควรเห็นหน้า "Welcome to nginx!"

ติดตั้ง MySQL / MariaDB

MariaDB เป็น fork ของ MySQL ที่เข้ากันได้ syntax แทบ 100% ติดตั้งง่ายกว่าบน Ubuntu

MariaDB is a drop-in MySQL replacement, easier to install on Ubuntu and actively maintained.

apt install mariadb-server -y
systemctl enable mariadb
mysql_secure_installation

รัน mysql_secure_installation แล้วตอบ Y ทุกข้อ: ตั้ง root password, ลบ anonymous users, ปิด remote root login, ลบ test database

Run mysql_secure_installation: set root password, remove anonymous users, disallow remote root login, remove test database.

mysql -u root -p
CREATE DATABASE mysite CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'SecurePassword!';
GRANT ALL PRIVILEGES ON mysite.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

ติดตั้ง PHP-FPM

Nginx ไม่รัน PHP โดยตรง ต้องผ่าน PHP-FPM (FastCGI Process Manager) ซึ่งเป็น interface ระหว่าง Nginx กับ PHP

Nginx cannot execute PHP natively — PHP-FPM bridges Nginx and PHP via FastCGI protocol.

apt install php8.3-fpm php8.3-mysql php8.3-xml php8.3-mbstring php8.3-curl php8.3-zip php8.3-gd php8.3-bcmath -y
systemctl enable php8.3-fpm
systemctl start php8.3-fpm

ตั้งค่า Nginx Virtual Host

สร้าง server block สำหรับแต่ละโดเมนใน /etc/nginx/sites-available/

Create a server block for each domain in /etc/nginx/sites-available/

nano /etc/nginx/sites-available/mysite.com

วางเนื้อหาต่อไปนี้:

server {
    listen 80;
    server_name mysite.com www.mysite.com;
    root /var/www/mysite.com;
    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 ~ /\.ht {
        deny all;
    }
}
mkdir -p /var/www/mysite.com
chown -R www-data:www-data /var/www/mysite.com
ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

ทดสอบ PHP

สร้างไฟล์ทดสอบ PHP info ก่อนเสมอ หลังยืนยันว่าทำงานได้ให้ลบออก เพราะเปิดเผยข้อมูล server

Create a PHP info test file, verify it works, then delete it — it exposes server details.

echo "<?php phpinfo(); ?>" > /var/www/mysite.com/info.php

เปิด http://mysite.com/info.php ในเบราว์เซอร์ ควรเห็นหน้า PHP Information สีเขียว-ม่วง

rm /var/www/mysite.com/info.php

เปิด SSL ด้วย Let's Encrypt

Certbot ออก SSL certificate ฟรีจาก Let's Encrypt อายุ 90 วัน ต่ออายุอัตโนมัติ ก่อนรันต้องชี้ DNS A record ของโดเมนมาที่ IP Droplet ก่อน

Certbot issues free 90-day SSL from Let's Encrypt with auto-renewal. DNS A record must point to Droplet IP first.

apt install certbot python3-certbot-nginx -y
certbot --nginx -d mysite.com -d www.mysite.com

Certbot จะถาม email และแก้ไข Nginx config ให้อัตโนมัติ รวมถึงเพิ่ม redirect จาก HTTP ไป HTTPS

certbot renew --dry-run
สำคัญ: port 80 ต้องเปิดไว้เสมอแม้ใช้ HTTPS แล้ว เพราะ Let's Encrypt ใช้ HTTP-01 challenge ในการต่ออายุ certificate อัตโนมัติ

รัน WordPress บน LEMP

หลังติดตั้ง LEMP เสร็จ สามารถ deploy WordPress ได้ทันที

Once LEMP is ready, deploying WordPress takes just a few commands.

cd /var/www/mysite.com
wget https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz --strip-components=1
chown -R www-data:www-data .
cp wp-config-sample.php wp-config.php
nano wp-config.php

แก้ค่า DB_NAME, DB_USER, DB_PASSWORD ให้ตรงกับที่สร้างใน MariaDB แล้วเข้า http://mysite.com เพื่อทำ WordPress installation wizard

สมัคร DigitalOcean รับ $200 Free Credit →

คำถามที่พบบ่อย (FAQ)

LEMP Stack ต่างจาก LAMP Stack อย่างไร?
LAMP ใช้ Apache เป็น web server ส่วน LEMP ใช้ Nginx (E มาจาก engine-x) Nginx มีประสิทธิภาพสูงกว่าสำหรับ static file และรับ concurrent connection ได้มากกว่าด้วย memory น้อยกว่า เหมาะกับ Droplet ขนาดเล็ก
PHP-FPM คืออะไรและทำไมต้องใช้?
PHP-FPM (FastCGI Process Manager) เป็น interface ระหว่าง Nginx กับ PHP เนื่องจาก Nginx ไม่รัน PHP โดยตรงแบบ Apache จึงต้องส่ง request ผ่าน FastCGI protocol ไปให้ PHP-FPM ประมวลผลแทน
Droplet ขนาดไหนเหมาะกับ LEMP Stack?
สำหรับ WordPress หรือเว็บขนาดเล็ก-กลาง Basic Droplet 1 GiB RAM / 1 vCPU / 25 GB SSD ($6/เดือน) เพียงพอ ถ้ามี traffic มากหรือรันหลายเว็บแนะนำ 2 GiB RAM / 2 vCPU ($18/เดือน)
ใช้ MySQL หรือ MariaDB ดีกว่ากัน?
สำหรับงานทั่วไปผลลัพธ์ใกล้เคียงกัน MariaDB เป็น fork ของ MySQL พัฒนาโดย community เปิด syntax เข้ากันได้เกือบ 100% MariaDB มักอัปเดตเร็วกว่าและบน Ubuntu apt install mariadb-server ง่ายกว่า
เปิด SSL ฟรีได้ไหมบน DigitalOcean Droplet?
ได้ ใช้ Certbot + Let's Encrypt ออก SSL certificate ฟรีอายุ 90 วัน ต่ออายุอัตโนมัติผ่าน systemd timer ต้องมีโดเมนที่ชี้ DNS A record มาที่ IP Droplet ก่อน
ติดตั้ง LEMP Stack หลายเว็บบน Droplet เดียวได้ไหม?
ได้ ใช้ Nginx Virtual Host (server block) สร้างแยกตาม domain แต่ละเว็บ ชี้ root path ต่างกัน และ certbot ออก certificate แยกให้แต่ละ domain ได้เช่นกัน