สร้างโฮสต์เสมือนตามชื่อและตาม 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
- ที่อยู่ IP – 192.168.2.105
- ที่อยู่ IP – 192.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 นั้นทำงานได้ตามที่คาดไว้!
บทสรุป
และเพียงเท่านี้สำหรับการบรรยายครั้งนี้ เราหวังว่าคุณจะสามารถกำหนดค่าโฮสติ้งเสมือนทั้งสองประเภทได้อย่างราบรื่นโดยไม่มีปัญหามากนัก ความคิดเห็นของคุณเกี่ยวกับคู่มือนี้ได้รับการชื่นชมอย่างมาก