คู่มือติดตั้ง 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 คือชุดซอฟต์แวร์ยอดนิยมสำหรับรันเว็บไซต์ 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.
- สร้าง database และ user สำหรับแต่ละเว็บแยกกัน ห้ามใช้ root กับ application
- Create separate database and user per site — never use root for applications
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
php8.3-mysql— เชื่อมต่อ MySQL/MariaDBphp8.3-xml,php8.3-mbstring— ต้องการสำหรับ WordPressphp8.3-gd— ประมวลผลรูปภาพ
ตั้งค่า 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
รัน 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
- ใช้
wp-cliติดตั้งและจัดการ WordPress ผ่าน command line ได้เร็วกว่า - ตั้ง PHP upload limit: แก้
/etc/php/8.3/fpm/php.iniค่าupload_max_filesizeและpost_max_size - เปิด PHP OPcache: แก้
opcache.enable=1ใน php.ini เพื่อเพิ่ม performance
สมัคร DigitalOcean รับ $200 Free Credit →