ตั้งเว็บ WordPress บน VPS เอง ทีละขั้น (มือใหม่ทำได้)

รูปปกบทความ ตั้งเว็บ WordPress บน VPS เอง ทีละขั้น (มือใหม่ทำได้)

ตั้งเว็บ 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

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *