วิธีติดตั้ง LAMP Stack บน Ubuntu VPS

LAMP Stack คือชุดซอฟต์แวร์ Open Source สี่ตัวที่ทำงานร่วมกันเพื่อให้บริการเว็บไซต์ ได้แก่ Linux (ระบบปฏิบัติการ), Apache (เว็บเซิร์ฟเวอร์), MySQL หรือ MariaDB (ฐานข้อมูล) และ PHP (ภาษาโปรแกรม) เป็นพื้นฐานที่เว็บ PHP ส่วนใหญ่ — รวมถึง WordPress — ทำงานอยู่ บทความนี้พาติดตั้ง LAMP บน VPS Ubuntu ทีละขั้น พร้อมอธิบายว่าแต่ละชั้นทำหน้าที่อะไร

ความต้องการระบบ

ขั้นตอนที่ 1: อัปเดตระบบ

SSH เข้า VPS แล้วรันคำสั่ง:

apt update && apt upgrade -y

ขั้นตอนที่ 2: ติดตั้ง Apache

apt install apache2 -y

เปิด UFW Firewall:

ufw allow 'Apache Full'

ufw enable

ทดสอบโดยเปิด Browser ไปที่ http://YOUR_VPS_IP ควรเห็นหน้า Apache Default Page

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

apt install mysql-server -y

รัน Security Script:

mysql_secure_installation

ทำตามคำถาม: ตั้งรหัสผ่าน root, ลบ Anonymous Users, ปิด Remote root login

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

apt install php libapache2-mod-php php-mysql php-cli php-curl php-zip php-gd -y

ตรวจสอบเวอร์ชัน: php -v

สร้างไฟล์ทดสอบ:

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

เปิด http://YOUR_VPS_IP/info.php ควรเห็นหน้า PHP Info

ขั้นตอนที่ 5: สร้าง Virtual Host

สร้างโฟลเดอร์และ Virtual Host Config:

mkdir -p /var/www/yourdomain.com/public_html

nano /etc/apache2/sites-available/yourdomain.com.conf

เพิ่มเนื้อหา:

<VirtualHost *:80>

ServerName yourdomain.com

DocumentRoot /var/www/yourdomain.com/public_html

</VirtualHost>

Enable Site: a2ensite yourdomain.com.conf && systemctl reload apache2

ขั้นตอนถัดไป: หลังติดตั้ง LAMP แล้ว ลบไฟล์ /var/www/html/info.php ออกก่อนเสมอ เพราะแสดงข้อมูล PHP Configuration ที่ไม่ควรเปิดเผยต่อสาธารณะ: rm /var/www/html/info.php

คำสั่งติดตั้ง LAMP แบบละเอียดทีละส่วน

ในส่วนนี้เราจะลงรายละเอียดคำสั่งของแต่ละชั้นให้ครบถ้วนกว่าเดิม เพื่อให้คุณติดตั้ง LAMP Stack บน Ubuntu VPS ได้อย่างมั่นใจ พร้อมเข้าใจว่าแต่ละแพ็กเกจมีไว้ทำอะไร เริ่มจากอัปเดตระบบและติดตั้ง Apache เป็นเว็บเซิร์ฟเวอร์ก่อน:

sudo apt update && sudo apt upgrade -y
sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl status apache2

คำสั่ง systemctl enable จะตั้งให้ Apache เริ่มทำงานอัตโนมัติทุกครั้งที่รีบูตเครื่อง ส่วน systemctl status ใช้ตรวจว่าเซอร์วิสทำงานปกติ (ควรเห็นสถานะ active (running)) ถ้าสถานะเป็นสีแดงหรือ failed ให้ดูบันทึกข้อผิดพลาดด้วย journalctl -u apache2 เพื่อหาสาเหตุก่อนไปขั้นถัดไป เหตุที่ต้องเริ่มจาก Apache ก่อนเพราะมันคือชั้นที่รับคำขอ (request) จากผู้ใช้ผ่านพอร์ต 80 และ 443 แล้วส่งต่อไฟล์หรือผลลัพธ์จาก PHP กลับไปยังเบราว์เซอร์ หาก Apache ยังไม่พร้อม ขั้นตอนทดสอบที่เหลือก็จะไม่เห็นผล ต่อมาติดตั้งฐานข้อมูล ซึ่งบน Ubuntu รุ่นใหม่แนะนำ MariaDB ที่เข้ากันได้กับ MySQL เต็มรูปแบบและเป็น Open Source ทั้งหมด:

sudo apt install mariadb-server mariadb-client -y
sudo systemctl enable mariadb
sudo mysql_secure_installation

ระหว่างรัน mysql_secure_installation ระบบจะถามทีละข้อ ให้ตอบดังนี้: ตั้งรหัสผ่าน root ที่คาดเดายาก, ลบ Anonymous Users (Y), ปิด Remote root login (Y), ลบฐานข้อมูล test (Y) และ Reload privilege tables (Y) ขั้นตอนนี้สำคัญมากเพราะปิดช่องโหว่ค่าเริ่มต้นที่แฮกเกอร์มักสแกนหา จากนั้นติดตั้ง PHP พร้อมโมดูลที่เว็บส่วนใหญ่ต้องใช้:

sudo apt install php libapache2-mod-php php-mysql php-cli \
  php-curl php-zip php-gd php-mbstring php-xml php-intl php-bcmath -y
php -v

โมดูลแต่ละตัวจำเป็นต่างกัน เช่น php-mysql ให้ PHP คุยกับฐานข้อมูลได้, php-gd สำหรับประมวลผลรูปภาพ, php-mbstring รองรับภาษาไทย/Unicode, php-curl สำหรับเรียก API ภายนอก ส่วน php-zip และ php-xml เป็นที่ต้องการของ WordPress และปลั๊กอินจำนวนมาก หลังติดตั้งเสร็จให้รีโหลด Apache ด้วย sudo systemctl reload apache2 เพื่อให้โมดูล PHP ทำงาน

ทดสอบ LAMP ด้วย info.php และตั้งค่า Virtual Host

เมื่อติดตั้งครบทั้งสามชั้นแล้ว ขั้นตอนต่อไปคือทดสอบว่า PHP ทำงานร่วมกับ Apache ได้จริง วิธีที่นิยมคือสร้างไฟล์ info.php ที่เรียกฟังก์ชัน phpinfo() เพื่อแสดงข้อมูลการตั้งค่า PHP ทั้งหมด:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
# เปิดเบราว์เซอร์ไปที่ http://YOUR_VPS_IP/info.php

หากเห็นตารางสีม่วงแสดงเวอร์ชัน PHP, โมดูลที่เปิดใช้ และค่าคอนฟิกต่าง ๆ แสดงว่า LAMP Stack พร้อมใช้งานสมบูรณ์ จากนั้นตั้งค่า Virtual Host เพื่อให้ VPS หนึ่งเครื่องโฮสต์หลายเว็บไซต์/หลายโดเมนได้ โดยแยกโฟลเดอร์และไฟล์คอนฟิกของแต่ละโดเมน:

sudo mkdir -p /var/www/yourdomain.com/public_html
sudo chown -R $USER:$USER /var/www/yourdomain.com/public_html
sudo nano /etc/apache2/sites-available/yourdomain.com.conf

วางคอนฟิกต่อไปนี้ลงในไฟล์ ปรับ ServerName และพาธให้ตรงกับโดเมนของคุณ:

<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DocumentRoot /var/www/yourdomain.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/yourdomain_error.log
    CustomLog ${APACHE_LOG_DIR}/yourdomain_access.log combined
</VirtualHost>

เปิดใช้งานไซต์ ปิด Default Site เดิม แล้วรีโหลด Apache:

sudo a2ensite yourdomain.com.conf
sudo a2dissite 000-default.conf
sudo apache2ctl configtest   # ตรวจ syntax ก่อน เห็น Syntax OK ค่อยรีโหลด
sudo systemctl reload apache2

หลังจากนี้เมื่อชี้ DNS ของโดเมนมาที่ IP ของ VPS เว็บไซต์ของคุณก็จะเปิดได้ทันที และอย่าลืมลบไฟล์ info.php ออกหลังทดสอบเสร็จเสมอ ข้อดีของการใช้ Virtual Host คือคุณสามารถโฮสต์หลายโดเมนบน VPS เครื่องเดียวได้ โดยสร้างไฟล์คอนฟิกแยกแต่ละโดเมน แต่ละเว็บมีไดเรกทอรีและไฟล์บันทึก (log) ของตัวเอง ทำให้จัดการและแก้ปัญหาได้ง่ายเมื่อมีหลายไซต์ หากภายหลังต้องการเปิด HTTPS ก็เพียงติดตั้ง Certbot แล้วรัน sudo certbot --apache เครื่องมือจะอ่านค่า ServerName จาก Virtual Host ที่ตั้งไว้และออกใบรับรอง SSL ฟรีให้โดยอัตโนมัติ พร้อมตั้งค่าให้ Apache redirect จาก HTTP ไป HTTPS ให้ด้วย

LAMP vs LEMP (Apache vs Nginx) ต่างกันอย่างไร

นอกจาก LAMP แล้ว อีกชุดที่ได้รับความนิยมมากคือ LEMP ความต่างหลักอยู่ที่ตัวเว็บเซิร์ฟเวอร์: LAMP ใช้ Apache ส่วน LEMP ใช้ Nginx (อ่านว่า "เอนจินเอกซ์" จึงเขียนย่อเป็นตัว E) ทั้งสองโฮสต์เว็บ PHP ได้เหมือนกัน แต่มีจุดเด่นต่างกัน ดูตารางเปรียบเทียบด้านล่าง:

หัวข้อ LAMP (Apache) LEMP (Nginx)
การตั้งค่า ง่ายกว่า รองรับ .htaccess รายโฟลเดอร์ ตั้งค่ารวมศูนย์ ต้อง reload ทุกครั้งที่แก้
ทราฟฟิกพร้อมกันสูง ใช้ RAM ต่อ connection มากกว่า รับ connection จำนวนมากได้ดีกว่า
ไฟล์ Static ดีพอใช้ เสิร์ฟไฟล์ static เร็วและประหยัดทรัพยากร
เหมาะกับ WordPress, เว็บทั่วไป, มือใหม่ เว็บทราฟฟิกสูง, reverse proxy, API

สำหรับผู้เริ่มต้นและเว็บ WordPress ทั่วไป LAMP เป็นตัวเลือกที่ลงตัวเพราะตั้งค่าง่ายและมี .htaccess ให้ปรับแต่ง Rewrite Rule ได้ในระดับโฟลเดอร์ ส่วนเว็บที่คาดว่าจะมีทราฟฟิกสูงมากหรือต้องทำ reverse proxy LEMP จะได้เปรียบเรื่องประสิทธิภาพมากกว่า อย่างไรก็ตามทั้งสองชุดสามารถเปลี่ยนไปมาได้ภายหลัง เพราะส่วนของฐานข้อมูลและ PHP ใช้ร่วมกันได้ จึงไม่จำเป็นต้องตัดสินใจตายตัวตั้งแต่แรก หากเริ่มต้นด้วย LAMP แล้วเว็บโตขึ้นจนต้องการประสิทธิภาพมากขึ้น ก็ค่อยพิจารณาย้ายไป Nginx หรือใช้ Nginx เป็น reverse proxy หน้า Apache ในภายหลังได้ ทั้งหมดนี้ทำได้เพราะคุณมีสิทธิ์ root เต็มบน VPS

ปัญหาที่พบบ่อยและความปลอดภัยเบื้องต้น

หลังติดตั้ง LAMP เสร็จ มักเจอปัญหาเดิม ๆ ที่แก้ได้ไม่ยาก ตัวอย่างที่พบบ่อย:

เรื่องความปลอดภัยเป็นสิ่งที่ห้ามมองข้าม ขั้นต่ำที่ควรทำหลังตั้ง LAMP ได้แก่ ตั้งค่า Firewall ให้เปิดเฉพาะพอร์ตที่จำเป็น (80, 443 และ SSH):

sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status

นอกจากนี้ควรรัน mysql_secure_installation ให้ครบทุกข้อ (ดังที่กล่าวไปด้านบน) เพื่อปิด Remote root login และลบบัญชี Anonymous, ติดตั้ง SSL ฟรีด้วย Let's Encrypt ผ่าน Certbot เพื่อเปิด HTTPS, ปิด ServerTokens และ ServerSignature ไม่ให้เปิดเผยเวอร์ชัน Apache และอัปเดตแพ็กเกจระบบสม่ำเสมอด้วย sudo apt update && sudo apt upgrade เพื่อรับแพตช์ความปลอดภัยล่าสุด การวาง LAMP บน VPS ที่มี Full Root Access เช่นของ AsiaGB ที่เริ่มต้นเพียง 500 บาท/เดือน ทำให้คุณควบคุมการตั้งค่าความปลอดภัยเหล่านี้ได้เองทั้งหมด

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

LAMP กับ LEMP ต่างกันอย่างไร

LAMP ใช้ Apache เป็นเว็บเซิร์ฟเวอร์ ส่วน LEMP ใช้ Nginx (ออกเสียง "เอนจินเอกซ์") Nginx มักจัดการทราฟฟิกพร้อมกันสูง ๆ ได้ดีกว่า แต่ Apache ตั้งค่าง่ายและรองรับ .htaccess

ต้องใช้ VPS หรือ Shared Hosting ก็พอ

การติดตั้ง LAMP เองต้องมีสิทธิ์ root จึงต้องใช้ VPS ถ้าใช้ Shared Hosting ผู้ให้บริการติดตั้ง LAMP มาให้แล้ว ไม่ต้องทำเอง

ติดตั้ง LAMP แล้วลง WordPress ต่อได้เลยไหม

ได้ เมื่อ LAMP พร้อม ก็สร้างฐานข้อมูล MySQL แล้วติดตั้ง WordPress ลงในไดเรกทอรีเว็บได้ทันที

ควรเลือก MySQL หรือ MariaDB

บน Ubuntu รุ่นใหม่แนะนำ MariaDB เพราะเป็น Open Source เต็มตัว เข้ากันได้กับ MySQL เกือบ 100% ใช้คำสั่งและไวยากรณ์ SQL เหมือนกัน เว็บแอปอย่าง WordPress ทำงานกับ MariaDB ได้โดยไม่ต้องแก้อะไร

ต้องการสเปก VPS เท่าไรสำหรับ LAMP

เว็บขนาดเล็กถึงกลางเริ่มที่ RAM 1 GB ก็เพียงพอ แต่หากรัน WordPress พร้อมปลั๊กอินหลายตัวหรือมีผู้เข้าชมพร้อมกันมาก แนะนำ 2 GB ขึ้นไป VPS Ubuntu ของ AsiaGB เริ่มต้น 500 บาท/เดือน พร้อม Full Root Access ติดตั้ง LAMP ได้เอง

ต้องการ VPS Ubuntu ราคาถูก?

AsiaGB VPS Linux/Ubuntu เริ่มต้น 500 บาท/เดือน Full Root Access พร้อม 1 Dedicated IP

ดูแพ็กเกจ VPS