วิธีการตั้งค่า Virtual Host กับการใช้งานหลายโดเมนบน Ubuntu 20.04

เมื่อใช้เว็บเซิร์ฟเวอร์ 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 หากปรากฎข้อความดังรูป ถือว่าตั้งค่าเรียบร้อยแล้ว

Was this article helpful?

Related Articles