วิธีติดตั้ง Apache ด้วย Virtual Host บน CentOS 8
เว็บเซิร์ฟเวอร์ Apache เป็นเว็บเซิร์ฟเวอร์ HTTP แบบโอเพ่นซอร์สและได้รับความนิยม ซึ่งยังคงมีส่วนแบ่งการตลาดมหาศาลในอุตสาหกรรมโฮสติ้ง มันมาพร้อมกับคุณสมบัติมากมาย รวมถึงการปรับปรุงโมดูล การรองรับหลายโปรโตคอล การกำหนดค่าที่ง่ายขึ้น และการรองรับหลายภาษา และอีกมากมาย
อ่านเพิ่มเติม: วิธีติดตั้ง Nginx บน CentOS 8
ในคู่มือนี้ เราจะแนะนำคุณตลอดขั้นตอนการติดตั้งเว็บเซิร์ฟเวอร์ Apache บน CentOS 8 และ RHEL 8 ด้วยสภาพแวดล้อม Virtual Host ในขณะที่เขียนบทช่วยสอนนี้ Apache เวอร์ชันล่าสุดคือ Apache 2.2.43
การติดตั้ง Apache เว็บเซิร์ฟเวอร์
ในการเริ่มต้น อันดับแรกอัปเดตรายการแพ็คเกจระบบ CentOS 8 หรือ RHEL 8 โดยใช้คำสั่ง dnf ต่อไปนี้
sudo dnf update
เมื่อการอัปเดตเสร็จสมบูรณ์ ให้ติดตั้งเว็บเซิร์ฟเวอร์ Apache โดยดำเนินการคำสั่งต่อไปนี้
sudo dnf install httpd
เมื่อติดตั้งแล้ว คุณสามารถตรวจสอบเวอร์ชันของ Apache ได้โดยการรันคำสั่ง rpm
rpm -qi httpd
คำสั่งจะพิมพ์อาร์เรย์ข้อมูล เช่น เวอร์ชัน วันที่เผยแพร่ บิลด์ และสถาปัตยกรรมของแพ็กเกจ
หากต้องการเริ่มบริการเว็บ Apache HTTP ให้รันคำสั่ง systemctl
sudo systemctl start httpd
เพื่อยืนยันว่าบริการกำลังทำงานอยู่หรือไม่ ให้ดำเนินการ
sudo systemctl status httpd
จากผลลัพธ์ สถานะ 'ใช้งานอยู่' เป็นสีเขียวบ่งชี้ว่าเว็บเซิร์ฟเวอร์ Apache เริ่มทำงานแล้ว
เพื่อคลายข้อสงสัยว่าเว็บเซิร์ฟเวอร์กำลังทำงานอยู่ ให้ขอหน้าทดสอบจาก Apache โดยเรียกดูที่อยู่ IP หรือชื่อโดเมนของเซิร์ฟเวอร์ของคุณดังที่แสดง
http://server-ip
คุณสามารถรับ IP เซิร์ฟเวอร์ของคุณได้โดยการรันคำสั่ง ifconfig หากเซิร์ฟเวอร์ของคุณโฮสต์บนคลาวด์ คุณสามารถรับ IP สาธารณะได้โดยการรันคำสั่ง curl
curl ifconfig.me
OR
curl -4 icanhazip.com
เมื่อคุณเรียกดูที่อยู่ IP ของเซิร์ฟเวอร์ คุณควรได้รับหน้าเว็บต่อไปนี้ปรากฏขึ้น
นี่เป็นการยืนยันว่าเว็บเซิร์ฟเวอร์กำลังทำงานอยู่
การจัดการเว็บเซิร์ฟเวอร์ Apache
เมื่อติดตั้งและใช้งาน Apache คุณจะใช้เครื่องมือตรวจสอบ systemctl เพื่อจัดการ Apache ได้
ตัวอย่างเช่น หากต้องการหยุด Apache ให้รันคำสั่ง:
sudo systemctl stop httpd
หากต้องการเริ่มบริการอีกครั้ง ให้ดำเนินการ:
sudo systemctl start httpd
หากคุณได้ทำการเปลี่ยนแปลงไฟล์การกำหนดค่าใดๆ และจำเป็นต้องรีสตาร์ทเพื่อใช้การเปลี่ยนแปลง ให้ดำเนินการคำสั่ง:
sudo systemctl restart httpd
การเริ่มบริการใหม่มักจะทำให้บริการหยุดชะงัก ทางเลือกที่ดีกว่าคือเพียงแค่โหลดซ้ำโดยไม่หยุดชะงักกับการเชื่อมต่อ
sudo systemctl reload httpd
หากต้องการเริ่มเว็บเซิร์ฟเวอร์ Apache โดยอัตโนมัติเมื่อบูทหรือรีบูตให้รันคำสั่งด้านล่าง สิ่งนี้จะทำให้มั่นใจว่า Apache เริ่มทำงานโดยอัตโนมัติโดยที่คุณไม่ต้องดำเนินการใดๆ
sudo systemctl enable httpd
หากคุณเลือกที่จะไม่เริ่มบริการโดยอัตโนมัติเมื่อบู๊ตเครื่อง ให้รัน:
sudo systemctl disable httpd
การตั้งค่าโฮสต์เสมือน Apache
ตามค่าเริ่มต้น เว็บเซิร์ฟเวอร์ Apache ได้รับการกำหนดค่าให้ให้บริการหรือโฮสต์เว็บไซต์เดียวเท่านั้น หากคุณต้องการโฮสต์เพียงเว็บไซต์เดียว ก็ไม่จำเป็นต้องมีขั้นตอนนี้ แต่ในกรณีที่คุณวางแผนที่จะโฮสต์หลายโดเมนบนเซิร์ฟเวอร์ของคุณ คุณจะต้องกำหนดค่าโฮสต์เสมือนของ Apache
โฮสต์เสมือนเป็นไฟล์แยกต่างหากที่มีการกำหนดค่าที่ช่วยให้คุณสามารถตั้งค่าโดเมนแยกต่างหากจากโดเมนเริ่มต้นได้ สำหรับคู่มือนี้ เราจะตั้งค่าโฮสต์เสมือนสำหรับโดเมน crazytechgeek.info
โฮสต์เสมือนเริ่มต้นจะอยู่ที่ไดเร็กทอรี /var/www/html
ใช้งานได้กับไซต์เดียวเท่านั้น หากต้องการสร้างโฮสต์เสมือนแยกต่างหากสำหรับโดเมนของเรา เราจะสร้างโครงสร้างไดเร็กทอรีอื่นภายในไดเร็กทอรี /var/www
ดังที่แสดง
sudo mkdir -p /var/www/crazytechgeek.info/html
นอกจากนี้คุณยังสามารถสร้างไดเร็กทอรีสำหรับจัดเก็บไฟล์บันทึกได้อีกด้วย
sudo mkdir -p /var/www/crazytechgeek.info/log
จากนั้น แก้ไขการอนุญาตไฟล์โดยใช้ตัวแปรสภาพแวดล้อม $USER
ดังที่แสดง
sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html
ปรับการอนุญาตของไดเร็กทอรี webroot ดังที่แสดง
sudo chmod -R 755 /var/www
จากนั้น สร้างไฟล์ index.html
ตัวอย่างตามที่แสดง
sudo vim /var/www/crazytechgeek.info/html/index.html
กดตัวอักษร 'i'
บนแป้นพิมพ์และวางเนื้อหาตัวอย่างบางส่วนดังที่แสดงซึ่งจะแสดงบนเว็บเบราว์เซอร์เมื่อทำการทดสอบโฮสต์เสมือน
<html>
<head>
<title>Welcome to crazytechgeek.info!</title>
</head>
<body>
<h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
</body>
</html>
บันทึกและออกจากไฟล์การกำหนดค่า
เมื่อสร้างไฟล์ดัชนีตัวอย่างและไดเร็กทอรีไซต์แล้ว คุณสามารถดำเนินการต่อและสร้างไฟล์โฮสต์เสมือนได้ ไฟล์โฮสต์เสมือนจะมีการกำหนดค่าไซต์ของโดเมนของคุณและสั่ง Apache ว่ามันจะตอบสนองต่อคำขอของลูกค้าอย่างไร
ไฟล์โฮสต์เสมือนจะมีการกำหนดค่าไซต์ของโดเมนของคุณและสั่ง Apache ว่ามันจะตอบสนองต่อคำขอของลูกค้าอย่างไร แต่ในการดำเนินการต่อ คุณต้องสร้าง 2 ไดเร็กทอรี: ไดเร็กทอรี sites-available
และ sites-enabled
ไฟล์โฮสต์เสมือนจะถูกจัดเก็บไว้ในไดเร็กทอรี sites-available
ในขณะที่ไดเร็กทอรี sites-enabled
จะมีลิงก์สัญลักษณ์ไปยังโฮสต์เสมือน
สร้างไดเร็กทอรีทั้งสองตามที่แสดง
sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled
จากนั้น แก้ไขไฟล์การกำหนดค่าหลักของเว็บเซิร์ฟเวอร์ Apache และสั่งให้ Apache ตำแหน่งที่จะค้นหาโฮสต์เสมือนภายในไดเร็กทอรีที่เปิดใช้งานไซต์
sudo vim /etc/httpd/conf/httpd.conf
ต่อท้ายบรรทัดตามที่แสดงไว้ที่ส่วนท้ายสุดของไฟล์คอนฟิกูเรชัน
IncludeOptional sites-enabled/*.conf
บันทึกและออก.
ตอนนี้สร้างไฟล์โฮสต์เสมือนตามที่แสดง:
sudo vim /etc/httpd/sites-available/crazytechgeek.info
วางเนื้อหาด้านล่างและแทนที่ crazytechgeek.info
ด้วยชื่อโดเมนของคุณเอง
<VirtualHost *:80>
ServerName www.crazytechgeek.info
ServerAlias crazytechgeek.info
DocumentRoot /var/www/crazytechgeek.info/html
ErrorLog /var/www/crazytechgeek.info/log/error.log
CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>
บันทึกและออกจากไฟล์.
ตอนนี้เปิดใช้งานไฟล์โฮสต์เสมือนโดยสร้างลิงก์สัญลักษณ์ในไดเร็กทอรี sites-enabled
sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf
การปรับสิทธิ์ SELinux สำหรับโฮสต์เสมือน
CentOS 8 และ RHEL 8 มาพร้อมกับ SELinux ซึ่งเป็นโมดูลความปลอดภัยสำหรับเสริมการรักษาความปลอดภัยของระบบ Linux เนื่องจากคุณกำหนดค่าไดเร็กทอรี บันทึก แบบกำหนดเองในขั้นตอนก่อนหน้า คุณจึงต้องอัปเดตนโยบาย SELinux บางอย่างเพื่อสั่งให้เว็บเซิร์ฟเวอร์ Apache เขียนลงในไดเร็กทอรี
มี 2 วิธีในการปรับนโยบาย SELinux Apache: การปรับนโยบายการปรับแบบสากล & นโยบายในไดเร็กทอรี อย่างหลังเป็นที่ต้องการเพราะเป็นที่ต้องการมากกว่า
การปรับนโยบาย SELinux บนไดเร็กทอรี
การแก้ไขสิทธิ์ SELinux สำหรับไดเร็กทอรีบันทึกช่วยให้คุณควบคุมนโยบายของเว็บเซิร์ฟเวอร์ของ Apache ได้อย่างสมบูรณ์ วิธีการนี้ค่อนข้างยาวและคุณต้องกำหนดค่าประเภทบริบทด้วยตนเองสำหรับไดเร็กทอรีเพิ่มเติมที่ระบุในไฟล์การกำหนดค่าโฮสต์เสมือน
ก่อนที่จะเริ่มต้น ขั้นแรกให้ยืนยันประเภทบริบทที่กำหนดให้กับไดเร็กทอรีบันทึกโดย SELinux:
sudo ls -dlZ /var/www/crazytechgeek.info/log/
ผลลัพธ์ควรคล้ายกับที่เรามีด้านล่าง
จากผลลัพธ์ บริบทที่ตั้งไว้คือ httpd_sys_content_t สิ่งนี้บ่งชี้ว่าเว็บเซิร์ฟเวอร์สามารถอ่านไฟล์ในไดเร็กทอรีบันทึกเท่านั้น คุณต้องเปลี่ยนบริบทนี้เป็น httpd_log_t เพื่อให้ Apache สามารถสร้างและเพิ่มรายการบันทึกลงในไดเร็กทอรี
ดังนั้นให้รันคำสั่ง:
sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"
หากคุณได้รับข้อผิดพลาดด้านล่าง “semanage: command not found”
หมายความว่าไม่ได้ติดตั้งแพ็คเกจที่จัดเตรียมไว้สำหรับคำสั่ง semanage เพื่อแก้ไขข้อผิดพลาดนี้ คุณจะต้องติดตั้งแพ็คเกจเหล่านั้น แต่ก่อนอื่น ให้ตรวจสอบว่าแพ็คเกจใดที่มีคำสั่ง semanage โดยการรัน:
sudo dnf whatprovides /usr/sbin/semanage
ผลลัพธ์จะให้แพ็คเกจที่จัดเตรียมสำหรับ semanage ซึ่งก็คือ policycoreutils-python-utils
ตอนนี้ติดตั้งแพ็คเกจตามที่แสดงโดยใช้ตัวจัดการแพ็คเกจ DNF
sudo dnf install policycoreutils-python-utils
คำสั่งสำหรับการเปลี่ยนบริบทควรใช้งานได้แล้ว
sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"
หากต้องการบันทึกการเปลี่ยนแปลงและทำให้คงอยู่ ให้ใช้คำสั่ง restorecon ดังที่แสดง:
sudo restorecon -R -v /var/www/crazytechgeek.info/log
คุณสามารถยืนยันการเปลี่ยนแปลงได้ด้วยการรันคำสั่งอีกครั้ง:
sudo ls -dlZ /var/www/crazytechgeek.info/log/
โปรดทราบว่าประเภทบริบทได้เปลี่ยนเป็น httpd_log_t
ตามที่เห็นในผลลัพธ์
รีสตาร์ท Apache เพื่อให้การเปลี่ยนแปลงมีผล
sudo systemctl restart httpd
ตอนนี้คุณสามารถยืนยันได้ว่า Apache กำลังบันทึกไฟล์บันทึกในไดเร็กทอรีบันทึกหรือไม่โดยแสดงเนื้อหาตามที่แสดง:
ls -l /var/www/crazytechgeek.info/log/
คุณควรจะเห็นไฟล์บันทึกสองไฟล์ดังที่แสดง: บันทึกข้อผิดพลาดและไฟล์บันทึกคำขอ
ทดสอบโฮสต์เสมือนของ Apache
สุดท้ายนี้ คุณต้องแน่ใจว่าเว็บเซิร์ฟเวอร์ Apache ให้บริการไฟล์โฮสต์เสมือนของคุณ ในการดำเนินการนี้ ให้เปิดเบราว์เซอร์แล้วไปที่ที่อยู่ IP หรือชื่อโดเมนของเซิร์ฟเวอร์ของคุณ:
http://domain-name
สมบูรณ์แบบ! สิ่งนี้บ่งชี้ว่าทุกอย่างเป็นไปด้วยดีและโฮสต์เสมือนของเราก็ได้รับการให้บริการตามที่คาดไว้
บทสรุป
ในคู่มือนี้ เราได้เรียนรู้วิธีการติดตั้งเว็บเซิร์ฟเวอร์ Apache บน CentOS 8 และ RHEL 8 รวมถึงวิธีกำหนดค่าไฟล์โฮสต์เสมือน ให้บริการเนื้อหาสำหรับโดเมนเพิ่มเติม คุณสามารถกำหนดค่าไฟล์โฮสต์เสมือนหลายไฟล์ได้ตามที่เห็นสมควรเพื่อรองรับโดเมนเพิ่มเติม
หากคุณต้องการตั้งค่าสแตกโฮสติ้งให้สมบูรณ์ ฉันขอแนะนำให้คุณติดตั้ง LAMP สแตกบน CentOS 8