ตั้งเว็บ WordPress บน VPS เอง ทีละขั้น (มือใหม่ทำได้)
หลายคนคิดว่าการ ติดตั้ง wordpress vps เป็นเรื่องของโปรแกรมเมอร์เท่านั้น จริง ๆ แล้วถ้าคุณทำตามลำดับถูกต้องและ copy คำสั่งเป็น มันใช้เวลาไม่ถึงหนึ่งชั่วโมงก็ได้เว็บ WordPress ที่รันบนเครื่องของคุณเอง เร็วและควบคุมได้เต็มที่
บทความนี้จะพาไปทีละขั้นตั้งแต่เตรียมเครื่อง เลือก OS รันคำสั่งติดตั้ง Nginx, PHP-FPM, MariaDB, Certbot ตั้ง server block ติดตั้ง WordPress จนถึงตั้ง SSL พร้อมตาราง checklist และข้อผิดพลาดที่มือใหม่เจอบ่อยที่สุด
เตรียมอะไรก่อนเริ่ม
ก่อนแตะคำสั่งอะไร ควรมีของครบ 3 อย่างนี้ก่อน
1. VPS ที่มีสิทธิ์ root — เลือกสเปกขั้นต่ำสำหรับ WordPress 1 เว็บคือ 1 vCPU / 1 GB RAM / 20 GB NVMe ถ้าจะรัน WooCommerce หรือมีปลั๊กอินเยอะ แนะนำ 2 vCPU / 2–4 GB RAM ระบบปฏิบัติการเลือก Ubuntu 22.04 LTS หรือ 24.04 LTS
ถ้ายังไม่มี VPS สามารถดูสเปกและราคาได้ที่ https://www.skyfast.co.th/ ก่อนตัดสินใจ
2. โดเมนที่ชี้ DNS แล้ว — ไปตั้ง A record ให้ example.com และ www.example.com ชี้ไปที่ IP ของ VPS ถ้าใช้ Cloudflare ให้ตั้ง DNS only ก่อนช่วงติดตั้ง แล้วค่อยเปิด proxy ทีหลัง
3. SSH client — บน macOS/Linux ใช้ Terminal ได้เลย บน Windows ใช้ PowerShell หรือ PuTTY
เลือก OS แบบไหนดี
| ระบบ | ข้อดี | เหมาะกับ |
|---|---|---|
| Ubuntu 22.04 / 24.04 LTS | เอกสารเยอะที่สุด แพ็กเกจใหม่ | มือใหม่ แนะนำที่สุด |
| Debian 12 | เบา เสถียรสูง | คนมีประสบการณ์ |
| AlmaLinux 9 | แนว RHEL เสถียรยาว | องค์กรที่ถนัด CentOS |
บทความนี้ใช้คำสั่งของ Ubuntu/Debian ทั้งหมด
ขั้นตอนที่ 1 — เข้าเครื่องและอัปเดตระบบ
เชื่อมต่อด้วย SSH
ssh [email protected]
ก่อนอื่นสร้างผู้ใช้ใหม่และปิดการ login ด้วย root จะปลอดภัยกว่ามาก
adduser skyuser
usermod -aG sudo skyuser
คัดลอก SSH key ไปให้ผู้ใช้ใหม่ แล้วทดสอบ login ด้วยผู้ใช้ใหม่ก่อนปิด root login
rsync --archive --chown=skyuser:skyuser ~/.ssh /home/skyuser
อัปเดตระบบและเปิด firewall
sudo apt update && sudo apt upgrade -y
sudo apt install ufw -y
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
ขั้นตอนที่ 2 — ติดตั้ง Nginx
sudo apt install nginx -y
sudo systemctl enable --now nginx
เปิดเบราว์เซอร์ไปที่ IP ของ VPS ควรเห็นหน้า “Welcome to nginx!” ถ้าไม่เห็นให้เช็ค firewall
ขั้นตอนที่ 3 — ติดตั้ง MariaDB
sudo apt install mariadb-server -y
sudo mysql_secure_installation
ตอบคำถามตามนี้: ตั้ง root password, ตอบ Y ให้ลบ anonymous user, Y ปิด remote root login, Y ลบ test database, Y reload
สร้างฐานข้อมูลและผู้ใช้สำหรับ WordPress
sudo mysql -u root -p
CREATE DATABASE wpdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'รหัสผ่านที่แข็งแรงมาก';
GRANT ALL PRIVILEGES ON wpdb.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
ขั้นตอนที่ 4 — ติดตั้ง PHP-FPM และส่วนขยาย
sudo apt install php8.2-fpm php8.2-mysql php8.2-xml php8.2-curl \
php8.2-gd php8.2-mbstring php8.2-zip php8.2-intl php8.2-imagick -y
ตรวจว่า PHP-FPM ทำงานอยู่
systemctl status php8.2-fpm
ถ้าใช้ Ubuntu 24.04 จะได้ PHP 8.3 ให้เปลี่ยนเลขเวอร์ชันในคําสั่งให้ตรงกัน
ระหว่างนี้ควรตั้งค่า PHP ให้เหมาะสมกับ WordPress ด้วย เพราะค่า default ของ PHP-FPM ตั้งมาเพื่อความเข้ากันได้มากกว่าประสิทธิภาพ
sudo nano /etc/php/8.2/fpm/php.ini
ปรับค่าต่อไปนี้ให้เหมาะกับเว็บ WordPress ทั่วไป
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
แก้เสร็จแล้วอย่าลืม reload บริการ
sudo systemctl restart php8.2-fpm
ส่วน PHP-FPM pool ให้ปรับจำนวน process ตาม RAM ที่มี สำหรับ VPS 2 GB แนะนำให้ตั้ง pm แบบ dynamic และจำกัดจำนวน child ไว้ไม่ให้ RAM หมด
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
ไฟล์ pool อยู่ที่ /etc/php/8.2/fpm/pool.d/www.conf ถ้าตั้ง max_children สูงเกิน RAM ที่มี จะเจอปัญหา OOM จนเว็บล่มทั้งเว็บ ซึ่งเป็นสาเหตุที่มือใหม่เจอบ่อยหลังเปิดทราฟฟิกสูง
ขั้นตอนที่ 5 — สร้าง Nginx server block
สร้างโฟลเดอร์เว็บและตั้งสิทธิ์
sudo mkdir -p /var/www/example.com/public_html
sudo chown -R skyuser:www-data /var/www/example.com
sudo chmod -R 755 /var/www/example.com
สร้างไฟล์ config
sudo nano /etc/nginx/sites-available/example.com
วางเนื้อหานี้
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/public_html;
index index.php index.html;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; }
}
เปิดใช้งานและทดสอบ
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx
จุดที่มือใหม่พลาดบ่อยคือ Nginx กับ PHP-FPM ใช้ socket คนละเวอร์ชัน ให้เช็คให้ตรงด้วย ls /var/run/php/
ขั้นตอนที่ 6 — ติดตั้ง WordPress
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
sudo cp -a /tmp/wordpress/. /var/www/example.com/public_html/
sudo mkdir -p /var/www/example.com/public_html/wp-content/uploads
sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo find /var/www/example.com/public_html -type d -exec chmod 755 {} \;
sudo find /var/www/example.com/public_html -type f -exec chmod 644 {} \;
ตั้งค่า wp-config.php
cd /var/www/example.com/public_html
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
กรอกข้อมูลที่ตรงกับที่สร้างไว้ใน MariaDB และเพิ่มค่าเหล่านี้หลังบรรทัด WP_DEBUG เพื่อความปลอดภัยและประสิทธิภาพ
define('FS_METHOD', 'direct');
define('WP_MEMORY_LIMIT', '256M');
define('DISALLOW_FILE_EDIT', true);
ตั้ง salt keys ให้ไม่ซ้ำกับเว็บอื่น โดยดึงจาก API ของ WordPress
curl -s https://api.wordpress.org/secret-key/1.1/salt/
นำผลลัพธ์ไปแทนที่บล็อก AUTH_KEY ทั้งแปดบรรทัดในไฟล์ wp-config.php
สุดท้ายเปิดเบราว์เซอร์ไปที่ http://example.com จะเจอหน้าติดตั้งภาษาของ WordPress กรอกชื่อเว็บ ผู้ใช้แอดมิน และอีเมลเป็นอันเสร็จ
ขั้นตอนที่ 7 — ตั้ง SSL ด้วย Certbot
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
Certbot จะแก้ config ให้และตั้ง redirect HTTPS อัตโนมัติ ตรวจว่าการต่ออายุทำงาน
sudo certbot renew --dry-run
ขั้นตอนที่ 8 — ปิดงานด้วยการตั้งค่าความปลอดภัย
หลังเว็บขึ้นแล้ว อย่าหยุดแค่ตรงนี้ เพราะเว็บที่เพิ่งติดตั้งเสร็จใหม่คือเป้าที่ระบบสแกนอัตโนมัติในอินเทอร์เน็ตยิงเข้ามาทันทีในไม่กี่ชั่วโมง ให้ปิดงานด้วยสามอย่างนี้
อย่างแรกคือเปิด fail2ban เพื่อแบน IP ที่พยายาม SSH ผิดซ้ำ ๆ
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
อย่างที่สองคือตั้ง backup อัตโนมัติ อย่ารอให้ข้อมูลหายก่อนค่อยคิด
mkdir -p /home/backup
แล้วใส่สคริปต์สำรองฐานข้อมูลกับไฟล์เว็บลงใน crontab ตามที่อธิบายไว้ในบทความเรื่องแผน backup 3-2-1 ของเรา
อย่างที่สามคือลบไฟล์ที่ไม่ใช้ทิ้ง เช่น readme.html, license.txt และโฟลเดอร์ wp-content/plugins/hello.php เพื่อลดเบาะแสที่บอกเวอร์ชัน WordPress ให้โจมตีง่ายขึ้น
ตาราง checklist ทั้งหมด
| ขั้น | สิ่งที่ต้องทำ | คำสั่ง/จุดตรวจสอบ | เสร็จ |
|---|---|---|---|
| 1 | สร้างผู้ใช้ sudo + ปิด root SSH | adduser skyuser |
☐ |
| 2 | เปิด firewall เปิดเฉพาะ SSH/Nginx | ufw status |
☐ |
| 3 | ติดตั้ง Nginx | เห็นหน้า Welcome | ☐ |
| 4 | ติดตั้ง MariaDB + สร้าง DB | SHOW DATABASES; |
☐ |
| 5 | ติดตั้ง PHP-FPM + ส่วนขยาย | php -m |
☐ |
| 6 | สร้าง server block | nginx -t ผ่าน |
☐ |
| 7 | ดาวน์โหลด WordPress | เห็นหน้าติดตั้ง | ☐ |
| 8 | สร้าง wp-config + salt | ไม่มีบ่อ warning | ☐ |
| 9 | ตั้ง SSL | https:// เข้าได้ | ☐ |
| 10 | ตั้ง backup อัตโนมัติ | มีไฟล์ .sql ทุกวัน | ☐ |
checklist ข้อ 10 สำคัญไม่แพ้ข้ออื่น อย่าลืมอ่านบทความเรื่องแผน backup 3-2-1 ในชุดเดียวกันของเรา
ข้อผิดพลาดที่พบบ่อย
- 502 Bad Gateway — Nginx กับ PHP-FPM ไม่ตรง socket หรือ permission ของไฟล์ผิด ให้ดู log ที่
/var/log/nginx/error.log - 403 Forbidden — สิทธิ์โฟลเดอร์ไม่ถูก หรือ index ไม่ครบ ให้ตั้งโฟลเดอร์ 755 ไฟล์ 644 และ owner เป็น www-data
- ติดตั้งธีม/ปลั๊กอินไม่ได้ ถามหา FTP — ลืมใส่
define('FS_METHOD', 'direct'); - อัปโหลดรูปใหญ่ไม่ผ่าน — ต้องปรับ
client_max_body_size,upload_max_filesizeและpost_max_sizeพร้อมกันทั้งสามที่ - เขียน permalink แล้ว 404 — ต้องมี
try_files $uri $uri/ /index.php?$args;ใน location / - เว็บเข้าได้ด้วย IP แต่เข้าไม่ได้ด้วยโดเมน — DNS ยังไม่ propagate หรือ server_name เขียนผิด
FAQ
ไม่มีพื้นฐาน Linux เลยจะทำได้ไหม?
ทำได้ ถ้าคัดลอกคำสั่งตามบทความนี้และทำความเข้าใจว่าทำอะไรอยู่ แต่ควรทดลองบน VPS ราคาถูกก่อน ไม่ใช่ย้ายเว็บจริงมาวันแรก
ใช้ Ubuntu 24.04 แล้วต้องแก้ตรงไหน?
เปลี่ยนเลขเวอร์ชัน PHP จาก 8.2 เป็น 8.3 ทั้งในคำสั่ง apt และ fastcgi_pass ให้ตรงกัน
ต้องใช้ cPanel ไหม?
ไม่จำเป็น การใช้ SSH ตรง ๆ ประหยัดค่าไลเซนส์และได้ความเร็วที่ดีกว่า ถ้าถนัดแผงจัดการมี aaPanel หรือ Webmin ให้ใช้ฟรี
RAM เท่าไหร่พอสำหรับ WordPress 1 เว็บ?
1 GB ใช้ได้แต่คับแคบ แนะนำ 2 GB ขึ้นไปเพื่อให้มีพื้นที่ให้ MariaDB cache และไม่ OOM เมื่อมีทราฟฟิกกระชาก
ต้องทำอะไรต่อหลังติดตั้งเสร็จ?
ตั้ง backup อัตโนมัติ เปิด fail2ban จำกัดการพยายาม login และตั้ง cron อัปเดตความปลอดภัยสม่ำเสมอ — ดูรายละเอียดในบทความ “ป้องกันเว็บโดนแฮก” ในชุดนี้
สรุป
การ ติดตั้ง wordpress vps เป็นงานที่ทำครั้งเดียวแล้วได้ประโยชน์ยาว ส่วนที่ยากไม่ใช่คำสั่ง แต่คือความละเอียดเรื่องสิทธิ์ไฟล์ การตั้ง backup และการดูแลต่อเนื่อง ถ้าคุณทำตามขั้นตอนด้านบนได้ครบ คุณจะได้เว็บที่เร็วและควบคุมได้เองเต็มที่
แต่ถ้ายังไม่พร้อมดูแลระบบเอง การเลือกแพ็กเกจที่มีผู้ดูแลให้จะประหยัดเวลาไปมาก
จดโดเมน/เช่าโฮสติ้ง/VPS กับ Skyfast — https://www.skyfast.co.th/ โทร 095-441-3694