การสร้าง Virtual Host บน Apache (Rocky Linux 9)

การสร้าง Virtual Host บน Apache (Rocky Linux 9)

ปัญหาที่เจอบ่อย

เคยไหมครับ…มี Server 1 เครื่อง แต่ต้องการรันหลายเว็บไซต์ เช่น

  • site1.com
  • site2.com

ถ้าไม่ใช้ Virtual Host → ทุกเว็บจะชนกันหมด 

Apache Virtual Host คือคำตอบ ที่ช่วยให้ 1 Server แยกหลายเว็บไซต์ได้อย่างมืออาชีพ

บทความนี้จะพาคุณสร้าง Virtual Host บน Apache (httpd) บน Rocky Linux 9 แบบ Step-by-Step

สามารถ Copy → Paste → ใช้งานได้จริง เหมาะทั้ง Lab และ Production

สิ่งที่ต้องมี

ก่อนเริ่ม ให้เตรียมระบบดังนี้

  • OS: Rocky Linux 9
  • ติดตั้ง Apache (httpd) แล้ว
  • มีสิทธิ์ sudo
  • Domain (หรือใช้ /etc/hosts จำลอง)

 Step 1 ติดตั้ง Apache (ถ้ายังไม่มี)

sudo dnf install httpd -y

# เปิด service และให้ start อัตโนมัติ
sudo systemctl enable –now httpd

# ตรวจสอบสถานะ
sudo systemctl status httpd


Step 2 สร้าง Directory สำหรับแต่ละเว็บไซต์

# สร้าง directory

sudo mkdir -p /var/www/site1.com/public_html
sudo mkdir -p /var/www/site2.com/public_html

# ตั้ง permission
sudo chown -R $USER:$USER /var/www/site1.com
sudo chown -R $USER:$USER /var/www/site2.com

สร้างหน้าเว็บทดสอบ
echo “<h1>Welcome to Site1</h1>” > /var/www/site1.com/public_html/index.html
echo “<h1>Welcome to Site2</h1>” > /var/www/site2.com/public_html/index.html

Step 3 สร้าง Virtual Host Config

Apache บน Rocky ใช้ path นี้:

/etc/httpd/conf.d/
 

สร้างไฟล์ config

sudo nano /etc/httpd/conf.d/site1.conf
 

ตัวอย่าง config

<VirtualHost *:80>

ServerName site1.com
ServerAlias www.site1.com

DocumentRoot /var/www/site1.com/public_html

ErrorLog /var/log/httpd/site1_error.log
CustomLog /var/log/httpd/site1_access.log combined
</VirtualHost>


สร้าง site2

sudo nano /etc/httpd/conf.d/site2.conf

<VirtualHost *:80>
ServerName site2.com
ServerAlias www.site2.com

DocumentRoot /var/www/site2.com/public_html

ErrorLog /var/log/httpd/site2_error.log
CustomLog /var/log/httpd/site2_access.log combined
</VirtualHost>


Step 4 ตั้งค่า SELinux (สำคัญมากใน Rocky Linux)

⚠️ หากไม่ตั้งค่า → เว็บอาจเข้าไม่ได้

# อนุญาต Apache เข้าถึง directory
sudo chcon -R -t httpd_sys_content_t /var/www
 

หรือแบบถาวร

sudo dnf install policycoreutils-python-utils -y
sudo semanage fcontext -a -t httpd_sys_content_t “/var/www(/.*)?”
sudo restorecon -Rv /var/www

 Step 5 เปิด Firewall

sudo firewall-cmd –permanent –add-service=http
sudo firewall-cmd –reload

Step 6 Restart Apache

sudo systemctl restart httpd

Step 7 ทดสอบระบบ

วิธีที่ 1 ใช้ Domain จริง

ชี้ DNS → IP Server

วิธีที่ 2: ใช้ /etc/hosts (Lab)

sudo nano /etc/hosts

เพิ่ม

192.168.1.100 site1.com
192.168.1.100 site2.com

ภาพรวม Virtual Host

 

ตรวจสอบ (Verify)

ทดสอบด้วย browser

หรือใช้ curl

curl http://site1.com
curl http://site2.com
 

สรุป

Virtual Host คือพื้นฐานสำคัญของ SysAdmin ที่ต้องรู้

ช่วยให้ Server เครื่องเดียว รองรับหลายเว็บไซต์ได้อย่างเป็นระบบ

บน Rocky Linux 9

  • ใช้ Apache (httpd)
  • config แยกใน /etc/httpd/conf.d/
  • ต้องระวัง SELinux + Firewall

ที่มา: 
– https://medium.com/%40leandro.almeida/apache-virtual-hosts-473339154bbe
– https://blog.e-zest.com/how-to-set-up-apache-virtual-host-configuration-on-lamp-environment/