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

การสร้างโฮสต์เสมือน 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 และโฮสต์เสมือนทุกแห่งจะมีไฟล์การกำหนดค่าของตัวเองซึ่งสามารถพบได้ในที่เดียว โฮสต์ที่เปิดใช้งานเป็นเพียงลิงก์สัญลักษณ์ ซึ่งทำให้กระบวนการเปิดใช้งาน ปิดใช้งาน การสร้าง หรือ การลบมันจัดการได้ดีมาก

ความต้องการ

  1. การติดตั้ง 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