ค้นหาเว็บไซต์

วิธีการตั้งค่า Apache Virtual Hosts บนเซิร์ฟเวอร์ Ubuntu


บทนำ

เซิร์ฟเวอร์ Apache HTTP เป็นเว็บเซิร์ฟเวอร์แบบโอเพ่นซอร์สที่ได้รับความนิยม ซึ่งมอบความยืดหยุ่น ความสามารถ และการสนับสนุนที่กว้างขวางสำหรับนักพัฒนา การกำหนดค่าเซิร์ฟเวอร์ Apache ไม่ได้เกิดขึ้นในไฟล์เดียวที่เป็นแบบโมโนลิธิก แต่เกิดขึ้นผ่านการออกแบบแบบโมดูลาร์ที่สามารถเพิ่มและแก้ไขไฟล์ใหม่ตามความจำเป็น ภายในการออกแบบแบบโมดูลาร์นี้ คุณสามารถสร้างเว็บไซต์หรือโดเมนแต่ละแห่งที่เรียกว่า virtual host.

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

ในคู่มือนี้ คุณจะได้ตั้งค่าโฮสต์เสมือนของ Apache บนเซิร์ฟเวอร์ Ubuntu ในระหว่างกระบวนการนี้ คุณจะได้เรียนรู้วิธีให้บริการเนื้อหาที่แตกต่างกันแก่ผู้เข้าชมแต่ละคน ขึ้นอยู่กับโดเมนที่พวกเขาร้องขอ โดยการสร้างเว็บไซต์โฮสต์เสมือนสองเว็บไซต์

ตรวจสอบแล้วกับเวอร์ชัน Ubuntu ล่าสุด: ขั้นตอนและคำสั่งในบทแนะนำนี้ได้รับการยืนยันแล้วบน Ubuntu 20.04 LTS, 22.04 LTS และ 24.04 LTS การจัดวางการตั้งค่า Apache (sites-available, sites-enabled, a2ensite, a2dissite) และโครงสร้างไดเรกทอรีที่ใช้ที่นี่เหมือนกันในทุกเวอร์ชันเหล่านี้

ประเด็นสำคัญ

  • โฮสต์เสมือน ช่วยให้ Apache หนึ่งตัวสามารถให้บริการหลายเว็บไซต์ได้ โดยแต่ละโดเมนจะชี้ไปยังรูทเอกสารของตัวเอง
  • คุณสร้างโฟลเดอร์ภายใต้ /var/www สำหรับแต่ละเว็บไซต์ (ตัวอย่างเช่น /var/www/your_domain/public_html) และตั้งความเป็นเจ้าของและสิทธิ์การเข้าถึงเพื่อให้เว็บเซิร์ฟเวอร์สามารถอ่านไฟล์ได้ และผู้ใช้ของคุณสามารถแก้ไขไฟล์ได้
  • แต่ละไซต์จะมีไฟล์การตั้งค่าของตัวเองใน /etc/apache2/sites-available/ ที่มี ServerName, ServerAlias และ DocumentRoot
  • ใช้ a2ensite และ a2dissite เพื่อเปิดใช้งานหรือปิดใช้งานไซต์ จากนั้นรีโหลดหรือรีสตาร์ท Apache เพื่อให้การเปลี่ยนแปลงมีผล
  • คุณสามารถทดสอบโดยไม่ต้องใช้ DNS จริงได้โดยการแก้ไขไฟล์ hosts บนเครื่องของคุณให้ชี้โดเมนตัวอย่างไปยัง IP ของเซิร์ฟเวอร์

คุณสมบัติพื้นฐาน

ก่อนที่คุณจะเริ่มบทเรียนนี้ คุณจะต้องมี:

  • เซิร์ฟเวอร์ Ubuntu ที่มีผู้ใช้แบบไม่ใช่ root ที่มีสิทธิ์ sudo คุณสามารถใช้คู่มือการตั้งค่าเซิร์ฟเวอร์เริ่มต้นกับ Ubuntu ของเราเพื่อตั้งค่านี้ได้
  • ติดตั้ง Apache บนเซิร์ฟเวอร์แล้ว คุณสามารถเรียนรู้วิธีการได้โดยทำตามขั้นตอนที่ 1-3 ในบทแนะนำการติดตั้ง Apache Web Server บน Ubuntu ของเรา

หากคุณกำลังใช้ Linux-Console.net คุณสามารถเรียนรู้วิธีการตั้งค่าโดเมนโดยทำตามเอกสารผลิตภัณฑ์ของเรา วิธีการเพิ่มและตั้งค่าโดเมน

ในการทำบทเรียนนี้ให้สำเร็จ คุณจะต้องมีโดเมนสองโดเมนที่มี:

  • ระเบียน A สำหรับ your_domain ชี้ไปที่ที่อยู่ IP สาธารณะของเซิร์ฟเวอร์ของคุณ
  • ระเบียน A ที่มี www.your_domain ชี้ไปที่ที่อยู่ IP สาธารณะของเซิร์ฟเวอร์ของคุณ

สำหรับผู้ให้บริการรายอื่น โปรดดูเอกสารผลิตภัณฑ์ที่เกี่ยวข้องของพวกเขา

หมายเหตุ: หากคุณ ไม่มี โดเมนในขณะนี้ คุณสามารถใช้ค่าสำหรับทดสอบบนคอมพิวเตอร์ของคุณได้ ขั้นตอนที่ 6 ของบทแนะนำนี้จะแสดงวิธีการทดสอบและกำหนดค่าค่าสำหรับทดสอบของคุณ ซึ่งจะช่วยให้คุณตรวจสอบการตั้งค่าของคุณได้แม้ว่าคอนเทนต์ของคุณจะไม่สามารถเข้าถึงผู้เยี่ยมชมอื่น ๆ ผ่านชื่อโดเมนได้

ขั้นตอนที่ 1 — การสร้างโครงสร้างไดเรกทอรี

ขั้นตอนแรกคือการสร้างโครงสร้างไดเรกทอรีที่จะเก็บข้อมูลเว็บไซต์ที่คุณจะให้บริการแก่ผู้เข้าชม

ราก เอกสาร ของคุณ ซึ่งเป็นไดเรกทอรีระดับบนสุดที่ Apache ใช้ค้นหาเนื้อหาเพื่อให้บริการ จะถูกตั้งไปยังไดเรกทอรีย่อยภายใต้ไดเรกทอรี /var/www คุณจะสร้างไดเรกทอรีที่นี่สำหรับแต่ละโฮสต์เสมือน

ภายในแต่ละไดเรกทอรีเหล่านี้ คุณจะสร้างไดเรกทอรี public_html ไดเรกทอรี public_html จะประกอบด้วยเนื้อหาที่จะให้บริการแก่ผู้เข้าชม ไดเรกทอรีหลัก ซึ่งในที่นี้ถูกเรียกว่า your_domain_1 และ your_domain_2 จะเก็บสคริปต์และโค้ดแอปพลิเคชันเพื่อสนับสนุนเนื้อหาเว็บ

ใช้คำสั่งเหล่านี้ พร้อมกับชื่อโดเมนของคุณเอง เพื่อสร้างไดเรกทอรีของคุณ:

sudo mkdir -p /var/www/your_domain_1/public_html

sudo mkdir -p /var/www/your_domain_2/public_html

อย่าลืมเปลี่ยน your_domain_1 และ your_domain_2 เป็นโดเมนของคุณเอง ตัวอย่างเช่น หากหนึ่งในโดเมนของคุณคือ example.com คุณจะสร้างโครงสร้างไดเรกทอรีดังนี้: /var/www/example.com/public_html

ขั้นตอนที่ 2 — การให้สิทธิ์

คุณได้สร้างโครงสร้างไดเร็กทอรีสำหรับไฟล์ของคุณแล้ว แต่ไฟล์เหล่านั้นเป็นของผู้ใช้ root หากคุณต้องการให้ผู้ใช้ปกติของคุณสามารถแก้ไขไฟล์ในไดเร็กทอรีเว็บเหล่านี้ได้ คุณสามารถเปลี่ยนเจ้าของด้วยคำสั่งเหล่านี้:

sudo chown -R $USER:$USER /var/www/your_domain_1/public_html

sudo chown -R $USER:$USER /var/www/your_domain_2/public_html

ตัวแปร $USER จะรับค่าของผู้ใช้ที่คุณกำลังล็อกอินอยู่เมื่อคุณกด ENTER ด้วยวิธีนี้ ผู้ใช้ปกติจะเป็นเจ้าของไดเรกทอรีย่อย public_html ที่คุณจะใช้เก็บเนื้อหาของคุณ

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

sudo chmod -R 755 /var/www

ตอนนี้เว็บเซิร์ฟเวอร์ของคุณมีสิทธิ์ในการให้บริการเนื้อหาแล้ว และผู้ใช้ของคุณควรสามารถสร้างเนื้อหาภายในโฟลเดอร์ที่จำเป็น ขั้นตอนต่อไปคือการสร้างเนื้อหาสำหรับเว็บไซต์โฮสต์เสมือนของคุณ

ขั้นตอนที่ 3 — การสร้างหน้าเริ่มต้นสำหรับโฮสต์เสมือนแต่ละตัว

เมื่อโครงสร้างไดเรกทอรีของคุณพร้อมแล้ว คุณสามารถเริ่มมุ่งเน้นไปที่แต่ละเว็บไซต์ของโฮสต์เสมือนแต่ละรายการและเนื้อหาภายในเว็บไซต์นั้น เริ่มโดยการสร้างหน้า index.html สำหรับเว็บไซต์แรกของคุณ your_domain_1

เปิดและสร้างไฟล์ index.html ด้วยโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ ตัวอย่างนี้ใช้ nano:

nano /var/www/your_domain_1/public_html/index.html

ภายในไฟล์นี้ ให้สร้างไฟล์ HTML ที่บอกผู้เข้าชมว่าพวกเขากำลังเชื่อมต่อกับเว็บไซต์ใด:

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

เพื่อบันทึกและปิดไฟล์ใน nano เริ่มต้นโดยการกด CTRL+X กด Y เมื่อมีข้อความถามให้บันทึกไฟล์ จากนั้นกด ENTER เมื่อเสร็จสิ้นเพื่อออก

ต่อไป คัดลอกไฟล์นี้เพื่อใช้เป็นฐานสำหรับเว็บไซต์ที่สองของคุณโดยพิมพ์:

cp /var/www/your_domain_1/public_html/index.html /var/www/your_domain_2/public_html/index.html

จากนั้นเปิดไฟล์ใหม่นี้และแก้ไขข้อมูลที่เกี่ยวข้องโดยใช้โปรแกรมแก้ไขข้อความของคุณเหมือนก่อน:

nano /var/www/your_domain_2/public_html/index.html
<html>
  <head>
    <title>Welcome to your_domain_2!</title>
  </head>
  <body> <h1>Success! The your_domain_2 virtual host is working!</h1>
  </body>
</html>

บันทึกและปิดไฟล์นี้ ตอนนี้คุณมีหนึ่งหน้าสำหรับแต่ละไซต์ที่คุณสามารถใช้เพื่อทดสอบการตั้งค่าโฮสต์เสมือน

ขั้นตอนที่ 4 — การสร้างไฟล์โฮสต์เสมือนใหม่

ไฟล์โฮสต์เสมือนระบุการตั้งค่าจริงของโฮสต์เสมือนของคุณและควบคุมวิธีที่เว็บเซิร์ฟเวอร์ Apache ตอบสนองต่อคำขอจากโดเมนต่าง ๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการจัดวางและตัวเลือกทั่วไปของ Apache โปรดดูวิธีการกำหนดค่าเว็บเซิร์ฟเวอร์ Apache บน VPS ของ Ubuntu หรือ Debian

Apache มาพร้อมกับไฟล์โฮสต์เสมือนเริ่มต้นที่เรียกว่า 000-default.conf. คุณสามารถคัดลอกไฟล์นี้เพื่อสร้างไฟล์โฮสต์เสมือนสำหรับแต่ละโดเมนของคุณได้

คัดลอกไฟล์การตั้งค่าเริ่มต้นไปยังโดเมนแรก:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/your_domain_1.conf

โปรดทราบว่าการตั้งค่าเริ่มต้นของ Ubuntu ต้องการให้ไฟล์โฮสต์เสมือนแต่ละไฟล์ลงท้ายด้วย .conf

เปิดไฟล์ใหม่ในตัวแก้ไขข้อความที่คุณต้องการด้วยสิทธิ์ root:

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

เมื่อเอาความคิดเห็นออกแล้ว ไฟล์จะมีลักษณะคล้ายกับนี้:

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

ภายในไฟล์นี้ ปรับแต่งรายการสำหรับโดเมนแรกของคุณและเพิ่มคำสั่งเพิ่มเติมบางอย่าง ส่วนของโฮสต์เสมือนนี้ตรงกับคำร้องใดๆ ที่ทำบนพอร์ต 80 ซึ่งเป็นพอร์ต HTTP เริ่มต้น

ก่อนอื่น เปลี่ยนคำสั่ง ServerAdmin เป็นอีเมลที่ผู้ดูแลเว็บไซต์สามารถรับอีเมลได้:

ServerAdmin admin@your_domain_1

หลังจากนี้ ให้เพิ่มคำสั่งสองข้อเพิ่มเติม ข้อแรกเรียกว่า ServerName ซึ่งกำหนดโดเมนหลักสำหรับการกำหนดโฮสต์เสมือน ข้อที่สองเรียกว่า ServerAlias กำหนดชื่อเพิ่มเติมที่ควรจับคู่เหมือนกับชื่อหลัก ซึ่งมีประโยชน์ในการจับคู่โฮสต์เพิ่มเติมที่คุณกำหนด ตัวอย่างเช่น หากคุณตั้งค่าคำสั่ง ServerName เป็น example.com คุณสามารถกำหนด ServerAlias เป็น www.example.com และทั้งสองจะชี้ไปที่ที่อยู่ IP ของเซิร์ฟเวอร์นี้

เพิ่มคำสั่งสองข้อเหล่านี้ลงในไฟล์การกำหนดค่าของคุณหลังบรรทัด ServerAdmin:

<VirtualHost *:80>
  ...
    ServerAdmin admin@your_domain_1
    ServerName your_domain_1
    ServerAlias www.your_domain_1
    DocumentRoot /var/www/html
    ...
</VirtualHost>

ต่อไป ให้เปลี่ยนตำแหน่งไฟล์โฮสต์เสมือนของคุณสำหรับรูทเอกสารของโดเมนนี้ แก้ไขคำสั่ง DocumentRoot ให้ชี้ไปยังไดเรกทอรีที่คุณสร้างขึ้นสำหรับโฮสต์นี้:

DocumentRoot /var/www/your_domain_1/public_html

นี่คือตัวอย่างไฟล์โฮสต์เสมือนพร้อมการปรับเปลี่ยนทั้งหมดที่ทำข้างต้น:

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

บันทึกและปิดไฟล์

สร้างไฟล์การกำหนดค่าลำดับที่สองของคุณโดยคัดลอกไฟล์จากไซต์โฮสต์เสมือนแรกของคุณ:

sudo cp /etc/apache2/sites-available/your_domain_1.conf /etc/apache2/sites-available/your_domain_2.conf

เปิดไฟล์ใหม่ในโปรแกรมแก้ไขที่คุณชื่นชอบ:

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

ตอนนี้คุณจำเป็นต้องปรับข้อมูลทุกชิ้นให้เกี่ยวข้องกับโดเมนที่สองของคุณ เมื่อเสร็จแล้ว มันควรจะดูเหมือนดังนี้:

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

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

ขั้นตอนที่ 5 — การเปิดใช้งานไฟล์โฮสต์เสมือนใหม่

ตอนนี้ที่คุณได้สร้างไฟล์โฮสต์เสมือนของคุณแล้ว คุณต้องเปิดใช้งานไฟล์เหล่านั้น Apache มีเครื่องมือต่าง ๆ ที่ช่วยให้คุณสามารถทำสิ่งนี้ได้

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

ใช้คำสั่งต่อไปนี้เพื่อเปิดใช้งานเว็บไซต์โฮสต์เสมือนของคุณ:

sudo a2ensite your_domain_1.conf

sudo a2ensite your_domain_2.conf

จะมีผลลัพธ์สำหรับทั้งสองไซต์ คล้ายกับตัวอย่างด้านล่าง ซึ่งเตือนให้คุณรีโหลดเซิร์ฟเวอร์ Apache ของคุณ:

Enabling site example.com.
To activate the new configuration, you need to run:
  systemctl reload apache2

ก่อนที่จะโหลดเซิร์ฟเวอร์ของคุณใหม่ ให้ปิดไซต์เริ่มต้นที่กำหนดไว้ใน 000-default.conf โดยใช้คำสั่ง a2dissite:

sudo a2dissite 000-default.conf
Site 000-default disabled.
To activate the new configuration, you need to run:
  systemctl reload apache2

ต่อไป ทดสอบข้อผิดพลาดของการตั้งค่า:

sudo apache2ctl configtest

คุณควรได้รับผลลัพธ์ดังต่อไปนี้:

. . .
Syntax OK

เมื่อคุณทำเสร็จแล้ว ให้รีสตาร์ท Apache เพื่อให้การเปลี่ยนแปลงเหล่านี้มีผล

sudo systemctl restart apache2

คุณสามารถตรวจสอบสถานะของเซิร์ฟเวอร์หลังจากทำการเปลี่ยนแปลงทั้งหมดแล้วด้วยคำสั่งนี้ได้เช่นกัน:

sudo systemctl status apache2

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

ขั้นตอนที่ 6 — (ไม่บังคับ) การตั้งค่าไฟล์โฮสต์ในเครื่อง

ถ้าคุณยังไม่ได้ใช้ชื่อโดเมนจริงที่คุณเป็นเจ้าของในการทดสอบขั้นตอนนี้ และใช้โดเมนตัวอย่างแทน คุณยังสามารถทดสอบการทำงานของเว็บไซต์โฮสต์เสมือนของคุณได้โดยการแก้ไขไฟล์ hosts บนคอมพิวเตอร์ของคุณชั่วคราว วิธีนี้จะดักจับคำขอสำหรับโดเมนที่คุณกำหนดค่าไว้และชี้ไปยังเซิร์ฟเวอร์ส่วนตัวเสมือน (VPS) ของคุณ เหมือนกับที่ระบบ DNS จะทำหากคุณใช้โดเมนที่ลงทะเบียนแล้ว วิธีนี้จะใช้ได้เฉพาะจากคอมพิวเตอร์ของคุณและมีไว้เพื่อทดสอบเท่านั้น

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

หากคุณกำลังใช้คอมพิวเตอร์ Mac หรือ Linux ให้แก้ไขไฟล์ท้องถิ่นของคุณด้วยสิทธิ์ผู้ดูแลระบบโดยพิมพ์:

sudo nano /etc/hosts

ถ้าคุณใช้เครื่อง Windows ให้เปิด Command Prompt แล้วพิมพ์:

notepad %windir%\system32\drivers\etc\hosts

รายละเอียดที่คุณต้องเพิ่มคือที่อยู่ IP สาธารณะของเซิร์ฟเวอร์ของคุณ ตามด้วยโดเมนที่คุณต้องการใช้เพื่อเข้าถึงเซิร์ฟเวอร์นั้น โดยใช้โดเมนที่ใช้ในคู่มือนี้ และแทนที่ IP เซิร์ฟเวอร์ของคุณในข้อความ your_server_IP ไฟล์ของคุณควรมีลักษณะดังนี้:

127.0.0.1   localhost
127.0.1.1   guest-desktop
your_server_IP your_domain_1
your_server_IP your_domain_2

นี่จะกำหนดเส้นทางคำขอใด ๆ สำหรับโดเมนของคุณสองโดเมนบนคอมพิวเตอร์ของคุณและส่งไปยังเซิร์ฟเวอร์ของคุณที่ที่อยู่ IP ที่กำหนด

บันทึกและปิดไฟล์

ขั้นตอนที่ 7 — การทดสอบผลลัพธ์ของคุณ

ตอนนี้ที่คุณได้ตั้งค่าโฮสต์เสมือนของคุณแล้ว คุณสามารถทดสอบการตั้งค่าของคุณโดยไปที่โดเมนที่คุณตั้งค่าไว้ในเว็บเบราว์เซอร์ของคุณ:

http://your_domain_1

คุณยังสามารถไปที่หน้าผู้ให้บริการโฮสต์ที่สองของคุณและดูไฟล์ที่คุณสร้างไว้สำหรับเว็บไซต์ที่สองของคุณได้:

http://your_domain_2

หากทั้งสองเว็บไซต์นี้ทำงานตามที่คาดไว้ แสดงว่าคุณได้ตั้งค่าโฮสต์เสมือนสองแห่งบนเซิร์ฟเวอร์เดียวสำเร็จแล้ว

หมายเหตุ: หากคุณได้ปรับไฟล์ hosts ของคอมพิวเตอร์ท้องถิ่นของคุณ เช่น ในขั้นตอนที่ 6 ของบทแนะนำนี้ คุณอาจต้องการลบบรรทัดที่เพิ่มเข้าไปหลังจากที่คุณยืนยันแล้วว่าการตั้งค่าของคุณทำงานได้ สิ่งนี้จะป้องกันไม่ให้ไฟล์ hosts ของคุณเต็มไปด้วยรายการที่ไม่จำเป็นอีกต่อไป

คำถามที่พบบ่อย

1. Apache Virtual Hosts คืออะไร?

Apache Virtual Hosts เป็นวิธีการรันเว็บไซต์มากกว่าหนึ่งเว็บไซต์บนเซิร์ฟเวอร์ Apache เดียว แต่ละโฮสต์เสมือนจะมีโดเมนของตัวเอง (หรือซับโดเมน) โฟลเดอร์เอกสารหลัก และการตั้งค่าของตัวเอง ผู้เยี่ยมชมจะเห็นเฉพาะเว็บไซต์สำหรับโดเมนที่พวกเขาขอเท่านั้น พวกเขาจะไม่เห็นว่าเว็บไซต์อื่น ๆ อยู่บนเซิร์ฟเวอร์เดียวกัน

2. Apache สามารถจัดการโฮสต์เสมือนกี่รายการได้?

Apache ไม่มีข้อจำกัดเกี่ยวกับจำนวนโฮสต์เสมือน คุณสามารถเพิ่มได้มากเท่าที่ทรัพยากรของเซิร์ฟเวอร์ของคุณรองรับ เว็บไซต์ใหม่แต่ละเว็บไซต์ต้องมีไฟล์คอนฟิกของตัวเองใน /etc/apache2/sites-available/ ไดเรกทอรีของตัวเองภายใต้ /var/www และจากนั้นคุณจึงเปิดใช้งานด้วย a2ensite และรีโหลด Apache

3. ความแตกต่างระหว่าง ServerName และ ServerAlias คืออะไร?

คำสั่ง ServerName และ ServerAlias ระบุชื่อโฮสต์ที่ Apache ควรตอบสนองสำหรับแต่ละโฮสต์เสมือน แต่มีวัตถุประสงค์ที่แตกต่างกันเล็กน้อย:

คำสั่งคำอธิบายตัวอย่าง
ServerName
ชื่อโฮสต์หลักและเป็นทางการสำหรับโฮสต์เสมือน Apache จะจับคูชื่อนี้อย่างตรงตามตัวอักษร
example.com
ServerAlias
ชื่อโฮสต์ทางเลือกที่ชี้ไปยังโฮสต์เสมือนนี้ด้วย รวมถึงไวด์การ์ดด้วย
www.example.com, *.example.com

มันทำงานอย่างไร?

  • ใช้ ServerName สำหรับโดเมนหลัก
  • ใช้ ServerAlias สำหรับชื่อโฮสต์อื่นๆ (เช่น เวอร์ชัน www. หรือซับโดเมน) ที่ควรแสดงเนื้อหาเว็บไซต์เดียวกัน

คำขอใด ๆ ที่ตรงกับ ServerName หรือรายการ ServerAlias ใด ๆ จะถูกให้บริการโดยโฮสต์เสมือนนั้น สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารทางการของ Apache เกี่ยวกับโฮสต์เสมือน

4. ฉันจำเป็นต้องมีชื่อโดเมนสำหรับโฮสต์เสมือนหรือไม่?

คุณไม่จำเป็นต้องมีโดเมนที่ลงทะเบียนเพื่อทำตามคำแนะนำนี้ คุณสามารถใช้ชื่อโฮสต์ตัวอย่างและชี้ไปยังเซิร์ฟเวอร์ของคุณโดยแก้ไขไฟล์ hosts บนคอมพิวเตอร์ของคุณ (ดูขั้นตอนที่ 6) สำหรับเว็บไซต์ที่ผู้อื่นจะเข้าถึงผ่านอินเทอร์เน็ต คุณจะต้องมีโดเมนจริงและระเบียน DNS ที่ชี้ไปยังเซิร์ฟเวอร์ของคุณ หากคุณใช้ Linux-Console.net คุณสามารถเพิ่มและจัดการโดเมนในแผงควบคุมได้; ดูคำแนะนำ DNS แบบรวดเร็วของเราสำหรับวิธีการเพิ่มโดเมน

5. ไฟล์โฮสต์เสมือนของ Apache เก็บอยู่ที่ไหน?

บน Ubuntu และ Debian การตั้งค่าโฮสต์เสมือนจะอยู่ที่ /etc/apache2/sites-available/ เว็บไซต์แต่ละเว็บจะมีไฟล์ .conf อยู่ที่นั่น (เช่น example.com.conf) การเปิดใช้งานเว็บไซต์ด้วย a2ensite จะเพิ่มลิงก์เชื่อมโยงใน /etc/apache2/sites-enabled/ ที่ชี้ไปยังไฟล์นั้น เว็บไซต์เริ่มต้นที่ตอบสนองเมื่อไม่มีโฮสต์อื่นตรงกับคือ 000-default.conf

บทสรุป

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

ขั้นตอนถัดไปและทรัพยากรที่เกี่ยวข้อง

  • ปรับความปลอดภัย Apache และเพิ่ม HTTPS: หลังจากที่โฮสต์เสมือนทำงานได้แล้ว คุณสามารถเพิ่ม TLS ด้วยวิธีการรักษาความปลอดภัย Apache ด้วย Let’s Encrypt บน Ubuntu และปรับแต่งเซิร์ฟเวอร์โดยใช้วิธีการกำหนดค่า Apache Web Server บน Ubuntu หรือ Debian VPS
  • สแตก LAMP แบบสมบูรณ์: หากต้องการเพิ่ม MySQL และ PHP บนเซิร์ฟเวอร์ Ubuntu เดียวกัน ให้ทำตามวิธีติดตั้ง LAMP Stack บน Ubuntu
  • ผลิตภัณฑ์ของ Linux-Console.net: ใช้ Droplets เพื่อรัน Ubuntu และ Apache และใช้ DNS เพื่อจัดการระเบียนโดเมนและชี้โดเมนของคุณไปที่เซิร์ฟเวอร์ เอกสารผลิตภัณฑ์: เพิ่มโดเมน (เริ่มต้นใช้งาน DNS)

ขอบคุณที่เรียนรู้ร่วมกับชุมชน Linux-Console.net