คำตอบสั้น ๆ: ติดตั้ง Apache, MariaDB และ PHP บน Ubuntu 22.04 หรือ 24.04 สร้าง VirtualHost ให้โดเมน ทดสอบการเชื่อมต่อฐานข้อมูล และติดตั้ง SSL ฟรี
คู่มือนี้อธิบาย Apache ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
LAMP คือชุดซอฟต์แวร์สำหรับรันเว็บไซต์ที่ประกอบด้วย Linux, Apache, MySQL หรือ MariaDB และ PHP เป็นชุดที่เว็บ PHP ส่วนใหญ่ เช่น WordPress, Joomla หรือระบบที่เขียนด้วย Laravel รองรับโดยตรง ข้อดีของ Apache คือรองรับไฟล์ .htaccess ทำให้ปลั๊กอินและระบบสำเร็จรูปจำนวนมากทำงานได้ทันทีโดยไม่ต้องแปลงกฎ Rewrite
บทความนี้ติดตั้ง LAMP บน Ubuntu 22.04 หรือ 24.04 จากแพ็กเกจมาตรฐานของ Ubuntu สร้าง VirtualHost สำหรับโดเมนของคุณ และทดสอบว่า PHP เชื่อมต่อฐานข้อมูลได้ หากคุณต้องการใช้ Nginx แทน Apache ให้ดู ติดตั้ง Nginx, PHP-FPM และ MariaDB (LEMP) บน Ubuntu
สิ่งที่ต้องเตรียม
- เซิร์ฟเวอร์ Ubuntu 22.04 หรือ 24.04 ที่ติดตั้งใหม่ และผู้ใช้ที่มีสิทธิ์
sudo - โดเมนที่ชี้ A Record มายัง IP ของเซิร์ฟเวอร์แล้ว (ดู ชี้โดเมนไปยังเซิร์ฟเวอร์ด้วย A Record หรือเปลี่ยน Name Server) ในบทความนี้ใช้
example.comและ IP203.0.113.10เป็นตัวอย่าง - ยังไม่มี Nginx หรือเว็บเซิร์ฟเวอร์อื่นใช้พอร์ต 80 และ 443 อยู่
เวอร์ชันที่จะได้จากแพ็กเกจมาตรฐาน:
| ซอฟต์แวร์ | Ubuntu 22.04 | Ubuntu 24.04 |
|---|---|---|
| Apache | 2.4.52 | 2.4.58 |
| PHP | 8.1 | 8.3 |
| MariaDB | 10.6 | 10.11 |
เลขรุ่นย่อยจะขยับขึ้นตามการอัปเดตความปลอดภัย หากแอปของคุณต้องการ PHP รุ่นอื่น ดู ติดตั้ง PHP หลายเวอร์ชันบน Ubuntu
ขั้นตอนที่ 1: อัปเดตระบบและติดตั้ง Apache
sudo apt update
sudo apt upgrade -y
sudo apt install -y apache2
Apache จะเริ่มทำงานและตั้งให้เริ่มอัตโนมัติเมื่อบูตทันที ตรวจสถานะด้วย:
systemctl status apache2 --no-pager
ควรเห็น Active: active (running)
ขั้นตอนที่ 2: เปิด Firewall
ถ้าใช้ UFW แพ็กเกจ Apache จะเพิ่ม Application Profile ให้สามแบบ คือ Apache (พอร์ต 80), Apache Secure (443) และ Apache Full (80 และ 443) ให้เปิดแบบ Full:
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw status
ต้องแน่ใจว่าอนุญาต SSH แล้วก่อนเปิดใช้ UFW ครั้งแรก ไม่เช่นนั้นจะถูกตัดออกจากเซิร์ฟเวอร์ หากยังไม่เคยเปิดใช้ UFW ให้อ่าน ตั้งค่า Firewall ด้วย UFW บน Ubuntu ก่อน และหากเซิร์ฟเวอร์มี Security Group หรือ Firewall ภายนอกจากฝั่งผู้ให้บริการ ให้เปิดพอร์ต 80 และ 443 เพิ่มด้วย
ทดสอบโดยเปิด http://203.0.113.10 ในเบราว์เซอร์ ควรเห็นหน้า "Apache2 Default Page"
ขั้นตอนที่ 3: ติดตั้ง MariaDB
sudo apt install -y mariadb-server
sudo mariadb-secure-installation
คำถามใน mariadb-secure-installation ที่แนะนำ:
- Enter current password for root: กด Enter (ยังไม่มีรหัสผ่าน)
- Switch to unix_socket authentication: ตอบ
nได้ เพราะบน Ubuntu root ของ MariaDB ใช้ unix_socket อยู่แล้ว หมายถึงเข้าได้ด้วยsudo mariadbโดยไม่ต้องใช้รหัสผ่าน - Change the root password: ตอบ
nหากต้องการคงการเข้าผ่านsudoอย่างเดียว - Remove anonymous users, Disallow root login remotely, Remove test database, Reload privilege tables: ตอบ
Yทั้งหมด
จากนั้นสร้างฐานข้อมูลและผู้ใช้สำหรับเว็บไซต์ โดยห้ามให้เว็บใช้ผู้ใช้ root ของฐานข้อมูล วิธีสร้างและกำหนดสิทธิ์อธิบายไว้ใน สร้างฐานข้อมูลและผู้ใช้ MySQL/MariaDB พร้อมกำหนดสิทธิ์ ตัวอย่างสั้น ๆ:
sudo mariadb -e "CREATE DATABASE exampledb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'ตั้งรหัสผ่านที่แข็งแรง';
GRANT ALL PRIVILEGES ON exampledb.* TO 'exampleuser'@'localhost';"
ขั้นตอนที่ 4: ติดตั้ง PHP และส่วนขยายที่ใช้บ่อย
sudo apt install -y php libapache2-mod-php php-mysql php-cli php-curl \
php-gd php-mbstring php-xml php-zip php-intl php-bcmath
แพ็กเกจ libapache2-mod-php ทำให้ Apache รัน PHP ภายในตัวเอง (mod_php) ซึ่งตั้งค่าง่ายที่สุดสำหรับเว็บเดียว ตรวจเวอร์ชันด้วย:
php -v
ผลลัพธ์บน Ubuntu 24.04 จะขึ้นต้นด้วย PHP 8.3.x (cli) ส่วน 22.04 จะเป็น PHP 8.1.x
หมายเหตุ: mod_php ต้องใช้ Apache MPM แบบ prefork ซึ่งแพ็กเกจจะสลับให้อัตโนมัติ หากเซิร์ฟเวอร์ต้องรองรับผู้ใช้พร้อมกันจำนวนมาก หรือต้องการรัน PHP หลายเวอร์ชัน แนะนำให้ใช้ PHP-FPM ร่วมกับ MPM event แทน ซึ่งอธิบายไว้ในบทความ PHP หลายเวอร์ชันที่ลิงก์ไว้ข้างต้น