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

สร้างโฮสต์เสมือนตามชื่อและตาม IP ของ Apache ใน Linux


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

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

ในบทช่วยสอนนี้ เราจะสำรวจวิธีการตั้งค่าโฮสติ้งเสมือนในการกระจายแบบใช้ RHEL เช่น Fedora, CentOS Stream, Rocky Linux และ Alma Linux โดยใช้โฮสต์เสมือนทั้งแบบใช้ IP และตามชื่อใน Linux

แนวคิดของ เว็บโฮสติ้งที่ใช้ร่วมกัน และ เว็บโฮสติ้งของผู้ค้าปลีก มีพื้นฐานมาจากคุณลักษณะนี้ของ Apache เป็นหลัก

ประเภทของ Apache Virtual Hosting ใน Linux

โฮสติ้งเสมือน มีสองประเภทที่สามารถใช้ได้กับ Apache

โฮสติ้งเสมือนตามชื่อ

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

โฮสติ้งเสมือนบน IP

โฮสติ้งเสมือนที่ใช้ IP คือที่ที่แต่ละโดเมนได้รับการกำหนดที่อยู่ IP ที่ไม่ซ้ำกัน ที่อยู่ IP เหล่านี้สามารถแนบกับเซิร์ฟเวอร์ได้โดยใช้การ์ด NIC หลายใบหรือการ์ด NIC ใบเดียว

สภาพแวดล้อมการทดสอบ

  • ระบบปฏิบัติการFedora 34
  • แอปพลิเคชันเว็บเซิร์ฟเวอร์ Apache
  • ที่อยู่ IP192.168.2.105
  • ที่อยู่ IP192.168.2.106
  • โดเมนwww.mydomain1.com
  • โดเมนwww.mydomain2.com

วิธีการตั้งค่าโฮสต์เสมือน Apache ที่ใช้ IP และตามชื่อ

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

sudo dnf install httpd -y

ตั้งค่าโฮสติ้งเสมือนตามชื่อ

ขั้นตอนแรกในการตั้งค่าโฮสติ้งเสมือนตามชื่อคือการตั้งค่าการแก้ไขชื่อโดเมนในไฟล์ /etc/hosts ดังนั้นให้รันคำสั่งต่อไปนี้ในฐานะผู้ใช้รูทเพื่อเพิ่มรายการชื่อโดเมนที่ชี้ไปยังที่อยู่ IP ของโฮสต์

echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.105 www.mydomain2.com' >> /etc/hosts

ขั้นตอนต่อไปคือการสร้างไดเร็กทอรีที่จะมีไฟล์เว็บไซต์ ดังนั้น เราจะสร้างสองไดเรกทอรีสำหรับโฮสต์เสมือนใน Document Root ซึ่งเป็นโฟลเดอร์ /var/www/html ในการกำหนดค่า Apache

sudo mkdir /var/www/html/mydomain1.com/
sudo mkdir /var/www/html/mydomain2.com/

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

sudo vim /etc/httpd/conf/httpd.conf

เพิ่มบล็อคโค้ดต่อไปนี้สำหรับโฮสต์เสมือนทั้งสอง

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.105:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

บันทึกการเปลี่ยนแปลงและออก จากนั้นตรวจสอบว่าไวยากรณ์ถูกต้องและไม่มีข้อผิดพลาดหรือไม่

httpd -t

ต่อไป เราจะสร้างหน้าทดสอบ HTML สำหรับแต่ละโดเมนและเพิ่มเนื้อหาบางส่วนเพื่อยืนยันว่าทุกอย่างทำงานอย่างถูกต้องจากเบราว์เซอร์หรือไม่

สำหรับ mydomain1.com

สร้างไฟล์ index.html ใต้ไดเรกทอรี mydomain1.com

sudo vim /var/www/html/mydomain1.com/index.html 

วางบรรทัดต่อไปนี้

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain1.com.</h1>
  </body>
</html>

บันทึกการเปลี่ยนแปลงและออกจากไฟล์

สำหรับ mydomain2.com

สร้างไฟล์ index.html ภายใต้ไดเรกทอรี mydomain2.com

sudo vim /var/www/html/mydomain2.com/index.html 

วางบรรทัดต่อไปนี้

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain2.com.</h1>
  </body>
</html>

บันทึกการเปลี่ยนแปลงและออกจากไฟล์

ตอนนี้เริ่มต้นเว็บเซิร์ฟเวอร์ Apache และยืนยันว่ามันกำลังทำงานอยู่

sudo systemctl start httpd
sudo systemctl status httpd

หากคุณเปิดใช้งานไฟร์วอลล์ไว้ ให้อนุญาตการรับส่งข้อมูล HTTP และ HTTPS ( เมื่อจำเป็น)

sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --add-service=https --zone=public --permanent
sudo firewall-cmd --reload

ตอนนี้ทดสอบโดเมนจากเบราว์เซอร์

ตั้งค่า Linux Virtual Hosting บน IP

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

เป้าหมายของการโฮสต์เสมือนบน IP คือการกำหนดแต่ละโดเมนให้กับที่อยู่ IP ที่ไม่ซ้ำกันซึ่งจะไม่ถูกใช้งานโดยโดเมนอื่น

วิธีนี้เหมาะสำหรับสถานการณ์เมื่อคุณมีเว็บไซต์ที่เข้ารหัสด้วยใบรับรอง SSL (mod_ssl) หรือทำงานบนพอร์ตที่แตกต่างกัน ในการตั้งค่าของเรา เรามีอะแดปเตอร์ NIC สองตัว

หากต้องการดูการกำหนดค่า IP บนระบบของคุณ ให้รันคำสั่ง ifconfig หรือ ip a

ifconfig
OR
ip addr

เซิร์ฟเวอร์ของเรามีที่อยู่ IP สองแห่ง ซึ่งแต่ละแห่งถูกกำหนดให้กับ NIC หนึ่งแห่ง IP 192.168.2.106 ถูกกำหนดให้กับ ens160 และ 192.168.2.105 ถูกกำหนดให้กับ ens224

มากำหนดค่าไฟล์ httpd.conf กันอีกครั้ง

sudo vim /etc/httpd/conf/httpd.conf

สร้างโฮสต์เสมือนสำหรับทั้งสองโดเมนตามที่แสดง ตรวจสอบให้แน่ใจว่าที่อยู่ IP แต่ละรายการได้รับการกำหนดให้กับการกำหนดค่าโฮสต์เสมือนที่เกี่ยวข้อง

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.106:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

บันทึกและออกจากไฟล์การกำหนดค่า จากนั้น แก้ไขไฟล์ /etc/hosts ตามที่แสดง

echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.106 www.mydomain2.com'>> /etc/hosts

ยืนยันรายการ:

cat /etc/hosts

192.168.2.105 www.mydomain1.com
192.168.2.106 www.mydomain2.com

จากนั้นรีสตาร์ทเว็บเซิร์ฟเวอร์ Apache เพื่อให้การเปลี่ยนแปลงมีผล

sudo systemctl restart httpd

สุดท้าย ทดสอบการตั้งค่าโฮสติ้งเสมือนบน IP ของคุณโดยเข้าถึง URL ดังที่แสดง

http://192.168.2.105
http://192.168.2.106

การทดสอบนี้ยืนยันว่าโฮสติ้งเสมือนบน IP นั้นทำงานได้ตามที่คาดไว้!

บทสรุป

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