เมื่อใช้เว็บเซิร์ฟเวอร์ Apache คุณสามารถใช้ Virtual Host (คล้ายกับบล็อกเซิร์ฟเวอร์ใน Nginx) เพื่อสรุปรายละเอียดการกำหนดค่าและสร้างโฮสต์มากกว่าหนึ่งโดเมนจากเซิร์ฟเวอร์เดียว ในที่นี่เรามีโดเมนหลักชื่อว่า demosite.com และต้องการเพิ่มโดเมนอีก 1 โดเมนชื่อว่า demosite2.com
Apache บน Ubuntu 20.04 มีบล็อกเซิร์ฟเวอร์หนึ่งบล็อกที่เปิดใช้งานตามค่าเริ่มต้นซึ่งกำหนดค่าให้ให้บริการจากไดเรกทอรี /var/www/html แม้ว่าวิธีนี้จะใช้งานได้ดีกับเว็บไซต์เดียว แต่หากต้องการใช้งานหลายเว็บไซต์ เราต้องสร้างไดเรกทอรีภายใน /var/www สำหรับเว็บไซต์ demosite2.com ก่อน โดยปล่อย /var/www/html ไว้เป็นไดเรกทอรีเริ่มต้นที่จะให้บริการ
ในที่นี่ทางเราจะใช้ชื่อว่า demosite2.com เป็นชื่อไดเรกทอรี
sudo mkdir /var/www/demosite2.com
ต่อไป กำหนดความเป็นเจ้าของไดเรกทอรีด้วยตัวแปรสภาพแวดล้อม $USER
sudo chown -R $USER:$USER /var/www/demosite2.com
สิทธิ์ของเว็บ root ควรจะถูกหากไม่ได้มีการแก้ไขค่า umask ซึ่งเป็นค่าสิทธิ์เริ่มต้นของไฟล์ เพื่อให้แน่ใจว่าสิทธิ์นั้นถูกต้องและอนุญาตให้เจ้าของอ่าน เขียน และเรียกใช้ไฟล์ในขณะที่ให้สิทธิ์เฉพาะการอ่านและดำเนินการแก่กลุ่มและอื่นๆ คุณสามารถป้อนคำสั่งต่อไปนี้
sudo chmod -R 755 /var/www/demosite2.com
ต่อไป สร้างหน้า index.html ตัวอย่างโดยใช้ nano หรือโปรแกรมอื่นที่คุณถนัด
sudo nano /var/www/demosite2.com/index.html
ภายในไฟล์ index.html ทางเราจะใส่ตัวอย่างดังต่อไปนี้
<html>
<head>
<title>Welcome to Demosite2!</title>
</head>
<body>
<h1>Success! The Demosite2 virtual host is working!</h1>
</body>
</html>
จากนั้นบันทึกและปิดไฟล์เมื่อคุณเพิ่มข้อมูลเสร็จเรียบร้อยแล้ว
เพื่อที่จะให้ Apache ทำงานได้เหมาะสมกับเว็บที่จะสร้าง เราจำเป็นต้องมาสร้างไฟล์ใหม่ที่ /etc/apache2/sites-available/demosite2.com.conf
sudo nano /etc/apache2/sites-available/demosite2.com
จากนั้นสามารถคัดลอกข้อความดังต่อไปนี้ได้เลย แต่อย่าลืมแก้ไขเป็นชื่อโดเมนของตัวเอง
<VirtualHost *:80>
ServerAdmin webmaster@demosite2.com
ServerName demosite2.com
ServerAlias www.demosite2.com
DocumentRoot /var/www/demosite2.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
อย่าลืมสังเกตว่าเราได้อัปเดต DocumentRoot เป็นไดเรกทอรีใหม่และ ServerAdmin เป็นอีเมลที่ผู้ดูแลระบบไซต์ demosite2.com สามารถเข้าถึงได้ รวมถึงเรายังได้เพิ่มคำสั่งสองคำสั่ง: ServerName ซึ่งสร้างโดเมนพื้นฐานที่ควรตรงกับข้อกำหนดของโฮสต์เสมือนนี้ และ ServerAlias ซึ่งกำหนดชื่อเพิ่มเติมที่ควรตรงกันราวกับว่าเป็นชื่อพื้นฐาน
เราสามารถเปิดใช้งานเว็บไซต์ด้วยคำสั่ง a2ensite
sudo a2ensite demosite2.com.conf
หากต้องการเปิดหรือปิดใช้งานเว็บไซต์เริ่มต้นที่กำหนดไว้ใน 000-default.conf สามารถดำเนินการด้วยคำสั่งดังนี้
ปิดการใช้งาน
sudo a2dissite 000-default.conf
เปิดการใช้งาน
sudo a2ensite 000-default.conf
จากนั้นทดสอบว่าเราได้มีการตั้งค่าผิดพลาดในส่วนไหนไหม ด้วยคำสั่ง
sudo apache2ctl configtest
ผลลัพธ์ที่ได้จะเป็นดังรูป

รีสตาร์ท Apache เพื่อใช้การเปลี่ยนแปลงตามที่ตั้งค่าไว้ ด้วยคำสั่ง
sudo systemctl reload apache2
เมื่อเรียบร้อยแล้ว สามารถทดสอบได้ด้วยการพิมพ์ชื่อโดเมนของคุณ ในที่นี่ทางเราใช้ชื่อว่า demosite2.com หากปรากฎข้อความดังรูป ถือว่าตั้งค่าเรียบร้อยแล้ว
