ການສ້າງ Apache Hosts ທີ່ມີຕົວເລືອກເປີດ/ປິດການໃຊ້ງານ Vhosts ໃນ RHEL/CentOS 7.0


ໂຮດຕິ້ງ Virtual ຊ່ວຍໃຫ້ Apache Weberver ສາມາດຮັບໃຊ້ເນື້ອຫາທີ່ແຕກຕ່າງກັນໂດຍອີງໃສ່ IP Address, hostname ຫຼືເບີ port ທີ່ໃຊ້ແລ້ວ. ຄູ່ມືນີ້ຈະໃຊ້ Debian ຄືກັບວິທີການໃນການເປີດໃຊ້ແລະຈັດການ Virtual Hosts ໃນ Red Hat Enterprise Linux/CentOS 7.0 ໂດຍສ້າງສອງລາຍຊື່ໃນເສັ້ນທາງ /etc/httpd/ ເຊິ່ງຈະ ຮັກສາການຕັ້ງຄ່າເອກະສານເວບໄຊທ໌ທີ່ຖືກເປີດໃຊ້ງານແລະປິດການໃຊ້ງານທັງ ໝົດ - ສະຖານທີ່ສາມາດໃຊ້ໄດ້ ແລະ ເປີດໃຊ້ເວັບໄຊ , ແລະສະຄຣິບສອງປະເພດເພື່ອເຮັດ ໜ້າ ທີ່ເປັນ ຄຳ ສັ່ງ, ເຊິ່ງສາມາດເຮັດໄດ້ແລະແບບອື່ນທີ່ປິດການໃຊ້ງານເສມືນ ເຈົ້າພາບ - a2ensite ແລະ a2dissite . ວິທີການນີ້ມີຂໍ້ໄດ້ປຽບບາງຢ່າງເພາະວ່າທ່ານໄດ້ເຮັດຕ້ອງໄດ້ລັງເລໃຈກັບເອກະສານການຕັ້ງຄ່າ httpd ແລະທຸກໆໂຮດຕິ້ງ virtual ມີເອກະສານການຕັ້ງຄ່າຂອງມັນເອງເຊິ່ງສາມາດພົບໄດ້ໃນສະຖານທີ່ດຽວ - ເຈົ້າພາບທີ່ເປີດໃຊ້ງານແມ່ນພຽງແຕ່ symlinks - ເຊິ່ງເຮັດໃຫ້ຂະບວນການເປີດໃຊ້ງານ, ປິດການໃຊ້ງານ, ການສ້າງຫລື ການລຶບພວກມັນສາມາດຄວບຄຸມໄດ້.

<

  • ການຕິດຕັ້ງພື້ນຖານຂອງ LAMP ໃນ RHEL/CentOS 7.0
  • ສ້າງແລະຈັດການ Apache Virtual Hosts ໃນ 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 ໃໝ່ ໃນ ເວັບໄຊທ໌ ທີ່ຢູ່ ໃຊ້ຊື່ທີ່ພັນລະນາ - ໃນກໍລະນີນີ້ຂ້ອຍໄດ້ໃຊ້ rheltest.lan.conf - ແລະໃຊ້ file ດັ່ງຕໍ່ໄປນີ້ເປັນແມ່ແບບ.

    # 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 ທີ່ຢູ່ virtual host ຂອງທ່ານຕັ້ງແຕ່ເລີ່ມຕົ້ນ /var/www/html ໄປສູ່ເສັ້ນທາງອື່ນໃຫ້ແນ່ໃຈວ່າທ່ານຍັງສ້າງເສັ້ນທາງນີ້ເຊັ່ນກັນ.

    # mkdir -p /var/www/rheltest.lan

    ຫມາຍເຫດ: ຍັງຮັບປະກັນວ່າໂຮດ ServerName ແມ່ນບັນທຶກ DNS ທີ່ຖືກຕ້ອງຫຼືຖືກເພີ່ມເຂົ້າໃນເອກະສານເຈົ້າພາບຂອງເຄື່ອງຈັກໃນທ້ອງຖິ່ນຂອງທ່ານ, ຈາກບ່ອນທີ່ທ່ານວາງແຜນທີ່ຈະເຂົ້າເບິ່ງເວັບໄຊທ໌້.

    5. ດຽວນີ້ເຖິງເວລາແລ້ວທີ່ຈະຕ້ອງສ້າງ script a2dissite ໃນເສັ້ນທາງຂອງລະບົບທີ່ໃຊ້ງານໄດ້ - ໃນກໍລະນີນີ້ແມ່ນ /usr/local/bin/- > ແຕ່
    ທ່ານສາມາດ ນຳ ໃຊ້ເສັ້ນທາງທີ່ສາມາດປະຕິບັດໄດ້ທີ່ຜົນໄດ້ຮັບຂອງຕົວປ່ຽນແປງລະບົບ.

    ສ້າງແຟ້ມເອກະສານຕໍ່ໄປນີ້ກັບຕົວເລືອກບັນນາທິການຂອງທ່ານ.

    # 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

    ສ້າງແຟ້ມເອກະສານຕໍ່ໄປນີ້ກັບຕົວເລືອກບັນນາທິການຂອງທ່ານ.

    # 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. ຫຼັງຈາກທີ່ທັງສອງໄຟລ໌ script ໄດ້ຖືກສ້າງຂື້ນມາ, ໃຫ້ແນ່ໃຈວ່າມັນສາມາດປະຕິບັດໄດ້ແລະເລີ່ມຕົ້ນໃຊ້ພວກມັນເພື່ອ ເປີດໃຊ້ ຫຼື ປິດ ເຈົ້າພາບ virtual ໂດຍເພີ່ມຊື່ vhost ເປັນພາລາມິເຕີ ຄຳ ສັ່ງ.

    # chmod +x /usr/local/bin/a2*
    # a2ensite vhost_name
    # a2disite vhost_name

    7. ເພື່ອທົດສອບມັນ, ໃຫ້ເຈົ້າພາບເສມືນທີ່ຖືກສ້າງຂື້ນກ່ອນ ໜ້າ ນີ້, ເລີ່ມການບໍລິການ Apache ແລະເປີດ browser ໂດຍກົງໃຫ້ກັບ virtual host ໃໝ່ - ໃນກໍລະນີນີ້ http://rheltest.lan .

    # a2ensite rheltest.lan
    # systemctl restart httpd

    ນັ້ນແມ່ນມັນ! ຕອນນີ້ທ່ານສາມາດໃຊ້ a2eniste ແລະ a2dissite bash scripts ເປັນ ຄຳ ສັ່ງຂອງລະບົບເພື່ອຈັດການເອກະສານ Apache Vhosts ໃນ RHEL/CentOS 7.0.