Membuat Host Virtual Apache dengan Opsi Aktifkan/Nonaktifkan Vhosts di RHEL/CentOS 7.0


Virtual Hosting memungkinkan Apache Weberver menyajikan konten berbeda berdasarkan Alamat IP, nama host, atau nomor port yang digunakan. Panduan ini akan menggunakan pendekatan seperti Debian dalam mengaktifkan dan mengelola Virtual Host di Red Hat Enterprise Linux/CentOS 7.0 dengan membuat dua direktori di jalur /etc/httpd/, yang akan menyimpan semua konfigurasi file situs web yang diaktifkan dan dinonaktifkan – tersedia situs dan diaktifkan situs, dan dua jenis skrip untuk bertindak sebagai perintah, satu yang mengaktifkan dan lainnya yang menonaktifkan virtual tertentu host – a2ensite dan a2dissite. Pendekatan ini memiliki beberapa keuntungan karena Anda harus mengotak-atik file konfigurasi httpd dan setiap virtual host memiliki file konfigurasinya sendiri yang dapat ditemukan di satu lokasi – host yang diaktifkan hanyalah symlink – yang membuat proses mengaktifkan, menonaktifkan, membuat atau menghapusnya sangat mudah dikelola.

Persyaratan

  1. Instalasi Dasar LAMP di RHEL/CentOS 7.0

Buat dan Kelola Host Virtual Apache di RHEL/CentOS 7

1. Untuk memulai, mulailah dengan masuk ke jalur /etc/httpd/, buat direktori yang tersedia situs dan yang mendukung situs, lalu edit httpd.conf file untuk menerapkan lokasi situs web baru yang diaktifkan.

cd /etc/httpd/
mkdir sites-available sites-enabled
nano conf/httpd.conf

2. Pada file httpd.conf tambahkan baris arahan berikut di bagian bawah file, yang akan membuat Apache membaca dan mengurai semua file yang terletak di /etc/ httpd/sites-enabled/ diakhiri dengan ekstensi .conf.

IncludeOptional sites-enabled/*.conf

3. Pada langkah selanjutnya, buat Host Virtual baru di lokasi tersedia situs menggunakan nama deskriptif – dalam hal ini saya menggunakan rheltest.lan.conf – dan gunakan file berikut sebagai template.

nano /etc/httpd/sites-available/rheltest.lan.conf

Gunakan konfigurasi ini sebagai panduan.

<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. Jika Anda mengubah lokasi DocumentRoot di host virtual Anda dari /var/www/html default ke jalur lain, pastikan Anda juga membuat jalur ini .

mkdir -p /var/www/rheltest.lan

CATATAN: Pastikan juga bahwa host ServerName adalah data DNS yang valid atau ditambahkan ke file host mesin lokal Anda, tempat Anda berencana mengunjungi situs web.

5. Sekarang saatnya membuat skrip bash a2ensite dan a2dissite pada jalur sistem yang dapat dieksekusi – dalam hal ini adalah /usr/local /bin/ – tapi
Anda dapat menggunakan jalur apa pun yang dapat dieksekusi yang dihasilkan oleh variabel sistem ` PATH.

Buat Skrip a2ensite

Buat file berikut dengan editor pilihan Anda.

nano /usr/local/bin/a2ensite

Tambahkan skrip berikut ke dalamnya.

#!/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

Buat skrip a2dissite

Buat file berikut dengan editor pilihan Anda.

nano /usr/local/bin/a2dissite

Tambahkan seluruh skrip berikut ke file.

#!/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. Setelah kedua file skrip dibuat, pastikan keduanya dapat dieksekusi dan mulai menggunakannya untuk mengaktifkan atau menonaktifkan host virtual dengan menambahkan nama vhost sebagai parameter perintah.

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

7. Untuk mengujinya, aktifkan virtual host yang dibuat sebelumnya, restart layanan Apache dan arahkan browser ke virtual host baru – dalam hal ini http://rheltest.lan.

a2ensite rheltest.lan
systemctl restart httpd

Itu dia! Sekarang Anda dapat menggunakan skrip bash a2eniste dan a2dissite sebagai perintah sistem untuk mengelola file Apache Vhosts di RHEL/CentOS 7.0.