การสร้างโฮสต์เสมือน Apache ด้วยตัวเลือกเปิด/ปิดการใช้งาน Vhosts ใน RHEL/CentOS 7.0
โฮสติ้งเสมือนอนุญาตให้ Apache Weberver ให้บริการเนื้อหาที่แตกต่างกันตามที่อยู่ IP ชื่อโฮสต์ หรือหมายเลขพอร์ตที่ใช้ คู่มือนี้จะใช้วิธีการคล้ายกับ Debian ในการเปิดใช้งานและการจัดการโฮสต์เสมือนบน Red Hat Enterprise Linux/CentOS 7.0 โดยการสร้างไดเรกทอรีสองรายการบนเส้นทาง /etc/httpd/ ซึ่งจะ เก็บการกำหนดค่าไฟล์เว็บไซต์ที่เปิดใช้งานและปิดใช้งานทั้งหมด – sites-available และ sites-enabled และสคริปต์สองประเภทเพื่อทำหน้าที่เป็นคำสั่ง หนึ่งที่เปิดใช้งานและอื่น ๆ ที่ปิดการใช้งานเสมือนที่ระบุ โฮสต์ – a2ensite และ a2dissite วิธีการนี้มีข้อดีบางประการเนื่องจากคุณต้องยุ่งกับไฟล์การกำหนดค่า httpd และโฮสต์เสมือนทุกแห่งจะมีไฟล์การกำหนดค่าของตัวเองซึ่งสามารถพบได้ในที่เดียว โฮสต์ที่เปิดใช้งานเป็นเพียงลิงก์สัญลักษณ์ ซึ่งทำให้กระบวนการเปิดใช้งาน ปิดใช้งาน การสร้าง หรือ การลบมันจัดการได้ดีมาก
ความต้องการ
- การติดตั้ง LAMP ขั้นพื้นฐานบน RHEL/CentOS 7.0
สร้างและจัดการโฮสต์เสมือน Apache ใน RHEL/CentOS 7
1. ในการเริ่มต้น ให้เริ่มต้นด้วยการเข้าสู่เส้นทาง /etc/httpd/ สร้างไดเรกทอรีที่พร้อมใช้งานของไซต์และที่เปิดใช้งานไซต์ และแก้ไข Apache httpd.conf เพื่อใช้ตำแหน่งเว็บไซต์ที่เปิดใช้งานใหม่
cd /etc/httpd/
mkdir sites-available sites-enabled
nano conf/httpd.conf
2. ในไฟล์ httpd.conf ให้เพิ่มบรรทัดคำสั่งต่อไปนี้ที่ด้านล่างของไฟล์ ซึ่งจะทำให้ Apache อ่านและแยกวิเคราะห์ไฟล์ทั้งหมดที่อยู่ใน /etc/ httpd/sites-enabled/ ลงท้ายด้วยส่วนขยาย .conf
IncludeOptional sites-enabled/*.conf
3. ในขั้นตอนถัดไป ให้สร้าง Virtual Host ใหม่บนตำแหน่ง sites-available โดยใช้ชื่อที่สื่อความหมาย – ในกรณีนี้ ผมเคยใช้ rheltest.lan.conf – และใช้ไฟล์ต่อไปนี้เป็นเทมเพลต
nano /etc/httpd/sites-available/rheltest.lan.conf
ใช้การกำหนดค่านี้เป็นแนวทาง
<VirtualHost *:80>
ServerName rheltest.lan
DocumentRoot "/var/www/rheltest.lan"
<Directory "/var/www/rheltest.lan">
Options Indexes FollowSymLinks MultiViews
# AllowOverride controls what directives may be placed in .htaccess files.
AllowOverride All
# Controls who can get stuff from this server file
Order allow,deny
Allow from all
</Directory>
<IfModule mpm_peruser_module>
ServerEnvironment apache apache
</IfModule>
ErrorLog /var/log/httpd/rheltest.lan-error.log
CustomLog /var/log/httpd/rheltest.lan-access.log combined
</VirtualHost>
4. หากคุณเปลี่ยนตำแหน่ง DocumentRoot บนโฮสต์เสมือนของคุณจากค่าเริ่มต้น /var/www/html เป็นเส้นทางอื่น ตรวจสอบให้แน่ใจว่าคุณได้สร้างเส้นทางนี้ด้วย .
mkdir -p /var/www/rheltest.lan
หมายเหตุ: ตรวจสอบให้แน่ใจว่าโฮสต์ ServerName เป็นบันทึก DNS ที่ถูกต้องหรือถูกเพิ่มลงในไฟล์โฮสต์ของเครื่องในพื้นที่ของคุณ จากที่ที่คุณวางแผนจะเยี่ยมชมเว็บไซต์
5. ตอนนี้ถึงเวลาสร้างสคริปต์ทุบตี a2ensite และ a2dissite บนเส้นทางของระบบที่ปฏิบัติการได้ – ในกรณีนี้คือ /usr/local /bin/ – แต่
คุณสามารถใช้พาธปฏิบัติการใดๆ ที่ ` PATH เอาต์พุตตัวแปรระบบ
สร้างสคริปต์ a2ensite
สร้างไฟล์ต่อไปนี้ด้วยโปรแกรมแก้ไขที่คุณเลือก
nano /usr/local/bin/a2ensite
เพิ่มสคริปต์ต่อไปนี้ลงไป
#!/bin/bash
if test -d /etc/httpd/sites-available && test -d /etc/httpd/sites-enabled ; then
echo "-----------------------------------------------"
else
mkdir /etc/httpd/sites-available
mkdir /etc/httpd/sites-enabled
fi
avail=/etc/httpd/sites-available/$1.conf
enabled=/etc/httpd/sites-enabled/
site=`ls /etc/httpd/sites-available/`
if [ "$#" != "1" ]; then
echo "Use script: a2ensite virtual_site"
echo -e "\nAvailable virtual hosts:\n$site"
exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi
สร้างสคริปต์ a2dissite
สร้างไฟล์ต่อไปนี้ด้วยโปรแกรมแก้ไขที่คุณเลือก
nano /usr/local/bin/a2dissite
เพิ่มสคริปต์ต่อไปนี้ทั้งหมดลงในไฟล์
#!/bin/bash
avail=/etc/httpd/sites-enabled/$1.conf
enabled=/etc/httpd/sites-enabled
site=`ls /etc/httpd/sites-enabled/`
if [ "$#" != "1" ]; then
echo "Use script: a2dissite virtual_site"
echo -e "\nAvailable virtual hosts: \n$site"
exit 0
else
if test -e $avail; then
sudo rm $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo -e "Success! $avail has been removed!\nPlease restart Apache: sudo systemctl restart httpd"
exit 0
fi
fi
6. หลังจากสร้างไฟล์สคริปต์ทั้งสองแล้ว ตรวจสอบให้แน่ใจว่าไฟล์เหล่านั้นสามารถเรียกใช้งานได้ และเริ่มใช้เพื่อ เปิดใช้งาน หรือ ปิดการใช้งาน โฮสต์เสมือนโดยต่อท้ายชื่อ vhost เป็นพารามิเตอร์คำสั่ง
chmod +x /usr/local/bin/a2*
a2ensite vhost_name
a2disite vhost_name
7. หากต้องการทดสอบ ให้เปิดใช้งานโฮสต์เสมือนที่สร้างไว้ก่อนหน้านี้ เริ่มบริการ Apache ใหม่ และนำเบราว์เซอร์ไปยังโฮสต์เสมือนใหม่ - ในกรณีนี้คือ http://rheltest.lan
a2ensite rheltest.lan
systemctl restart httpd
แค่นั้นแหละ! ตอนนี้คุณสามารถใช้สคริปต์ทุบตี a2eniste และ a2dissite เป็นคำสั่งระบบเพื่อจัดการไฟล์ Apache Vhosts บน RHEL/CentOS 7.0