คู่มือนี้สอนสร้าง Apache Virtual Hosts เพื่อโฮสต์หลายเว็บไซต์บน Server เดียว (Single IP) บน Ubuntu
ข้อกำหนดเบื้องต้น
- Ubuntu Server / Desktop
- Apache2 ติดตั้งแล้ว:
sudo apt install apache2 - Domain/Subdomain ชี้มาที่ IP Server (หรือแก้ /etc/hosts สำหรับ Local)
ขั้นตอนการตั้งค่า
1. สร้าง Document Root Directories
sudo mkdir -p /var/www/site1.example.com/public_html
sudo mkdir -p /var/www/site2.example.com/public_html
# สิทธิ์
sudo chown -R $USER:$USER /var/www/site1.example.com/public_html
sudo chown -R $USER:$USER /var/www/site2.example.com/public_html
sudo chmod -R 755 /var/www
2. สร้าง Virtual Host Config Files
Site 1: /etc/apache2/sites-available/site1.example.com.conf
<VirtualHost *:80>
ServerAdmin admin@site1.example.com
ServerName site1.example.com
ServerAlias www.site1.example.com
DocumentRoot /var/www/site1.example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
Site 2: /etc/apache2/sites-available/site2.example.com.conf
<VirtualHost *:80>
ServerAdmin admin@site2.example.com
ServerName site2.example.com
ServerAlias www.site2.example.com
DocumentRoot /var/www/site2.example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/site2_error.log
CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>
3. Enable Sites และ Reload Apache
# Enable
sudo a2ensite site1.example.com.conf
sudo a2ensite site2.example.com.conf
# Disable default site (ถ้าต้องการ)
sudo a2dissite 000-default.conf
# Reload
sudo systemctl reload apache2
4. ทดสอบ Local (แก้ /etc/hosts)
# บน Client Machine (หรือ Server เอง)
127.0.0.1 site1.example.com www.site1.example.com
127.0.0.1 site2.example.com www.site2.example.com
5. สร้างไฟล์ทดสอบ
echo "Site 1
" | sudo tee /var/www/site1.example.com/public_html/index.html
echo "Site 2
" | sudo tee /var/www/site2.example.com/public_html/index.html
คำสั่ง Apache ที่เกี่ยวข้อง
| คำสั่ง | คำอธิบาย |
|---|---|
apache2ctl configtest | ตรวจสอบ Syntax Config |
apache2ctl -S | แสดง Virtual Hosts ที่โหลดแล้ว |
systemctl status apache2 | สถานะ Service |
tail -f /var/log/apache2/error.log | ดู Error Log |