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

วิธีติดตั้ง 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