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

เมื่อใช้เว็บเซิร์ฟเวอร์ Apache เราสามารถใช้ Virtual Host (คล้ายกับบล็อกเซิร์ฟเวอร์ใน Nginx) เพื่อสรุปรายละเอียดการกำหนดค่าและสร้างโฮสต์มากกว่าหนึ่งโดเมนจากเซิร์ฟเวอร์เดียว ในที่นี่เราจะตั้งค่าโดเมนชื่อ demosite2.com คุณสามารถแทนที่ด้วยชื่อโดเมนของคุณเอง

Apache บน Debian 10 มีบล็อกเซิร์ฟเวอร์หนึ่งบล็อกที่เปิดใช้งานตามค่าเริ่มต้นซึ่งกำหนดค่าให้ให้บริการจากไดเร็กทอรี /var/www/html แม้ว่าวิธีนี้จะใช้งานได้ดีกับเว็บไซต์เดียว แต่หากต้องการใช้งานหลายเว็บไซต์ เราต้องสร้างไดเร็กทอรีภายใน /var/www สำหรับเว็บไซต์ your_domain โดยปล่อย /var/www/html ไว้เป็นไดเร็กทอรีเริ่มต้นที่จะให้บริการ ต้องสร้างไดเร็กทอรีสำหรับ your_domain  โดยใช้แฟล็ก -p เพื่อสร้างไดเร็กทอรีหลักที่จำเป็น ทางเราจะแทนที่ your_domain เป็น demosite2

sudo mkdir -p /var/www/demosite2

ต่อไป กำหนดความเป็นเจ้าของไดเร็กทอรีด้วยตัวแปรสภาพแวดล้อม $USER

sudo chown -R $USER:$USER /var/www/demosite2

สิทธิ์ของเว็บ root ควรจะถูกหากไม่ได้แก้ไขค่า unmask ซึ่งจะตั้งค่าสิทธิ์เริ่มต้นของไฟล์ เพื่อให้แน่ใจว่าสิทธิ์นั้นถูกต้องและอนุญาตให้เจ้าของอ่าน เขียน และเรียกใช้ไฟล์ในขณะที่ให้สิทธิ์เฉพาะการอ่านและดำเนินการแก่กลุ่มและอื่นๆ คุณสามารถป้อนคำสั่งต่อไปนี้

sudo chmod -R 755 /var/www/demosite2

ต่อไป สร้างหน้า index.html ตัวอย่างโดยใช้ nano หรือโปรแกรมอื่นที่คุณถนัด

nano /var/www/demosite2/index.html

ภายในไฟล์ index.html ทางเราจะใส่ตัวอย่างดังต่อไปนี้ (สามารถแก้ชื่อโดเมนจาก demosite2 เป็นชื่อโดเมนของคุณได้เลย)

<html>
    <head>
        <title>Welcome to demosite2!</title>
    </head>
    <body>
        <h1>Success!  The demosite2 virtual host is working!</h1>
    </body>
</html>

จากนั้นบันทึกและปิดไฟล์เมื่อคุณเพิ่มข้อมูลเสร็จเรียบร้อยแล้ว

เพื่อที่จะให้ Apache ทำงานได้เหมาะสมกับเว็บที่จะสร้าง เราจำเป็นต้องมาสร้างไฟล์ใหม่ที่

sudo nano /etc/apache2/sites-available/demosite2.conf

สามารถคัดลอกข้อความด้านล่างไปได้เลย เพียงแต่ต้องแก้ไขชื่อโดเมนเป็นชื่อที่เราต้องการและอย่าลืมสังเกตว่าเราได้อัปเดต DocumentRoot เป็นไดเร็กทอรีใหม่และ ServerAdmin เป็นอีเมลที่ผู้ดูแลระบบไซต์สามารถเข้าถึงได้ รวมถึงเรายังได้เพิ่มคำสั่งสองคำสั่ง ServerName ซึ่งสร้างโดเมนพื้นฐานที่ควรตรงกับข้อกำหนดของโฮสต์เสมือนนี้ และ ServerAlias ซึ่งกำหนดชื่อเพิ่มเติมที่ควรตรงกัน

<VirtualHost *:80>
    ServerAdmin admin@localhost
    ServerName demosite2
    ServerAlias www.demosite2
    DocumentRoot /var/www/demosite2
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


เราสามารถเปิดใช้งานเว็บไซต์ด้วยคำสั่ง a2ensite (อย่าลืมแก้ your_domain เป็นชื่อโดเมนของคุณ)

sudo a2ensite your_domain.conf

หากต้องการปิดใช้งานเว็บไซต์เริ่มต้นที่กำหนดไว้ใน 000-default.conf สามารถดำเนินการด้วยคำสั่งดังนี้

sudo a2dissite 000-default.conf

ต่อไปเรามาทดสอบข้อผิดพลาดในการกำหนดค่า

sudo apache2ctl configtest

จะเห็นผลลัพธ์ดังนี้

รีสตาร์ท Apache เพื่อใช้การเปลี่ยนแปลงตามที่ตั้งค่าไว้

sudo systemctl restart apache2

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

Was this article helpful?

Related Articles