Cara Konfigurasi VirtualHost Apache di AlmaLinux 8, RockyLinux, RHEL dan CentOS
Apache adalah aplikasi web server dengan fitur VirtualHost yang memungkinkan satu mesin dapat merespon banyak request domain. Pada artikel berikut ini akan membahas Cara Konfigurasi VirtualHost Apache sehingga bisa merespon banyak request domain.
Persiapan
Pada artikel ini Apache di install dimesin dengan OS AlmaLinux 8, Jika sebelumnya Apache belum terinstall bisa ikuti langkah di artikel berikut ini
Sebelum masuk ke konfigurasi, Siapkan terlebih dahulu struktur direktori yang akan menjadi dokumen root dimana file source code yang digunakan website. Sebagai Contoh penerapan direktori. domain1.com dan domain2.com ini bisa berupa domain atau sub domain apa saja.
/var/www/
├── domain1.com
│ └── public_html
│ └── log
├── domain2.com
│ └── public_html
│ └── log
Lalu buat direktori berdasarkan contoh direktori dimana domain1.com domain2.com diubah menjadi sobit-test.com dan tes.sobit-test.com.
# mkdir /var/www/sobit-test.com/public_html
# mkdir /var/www/tes.sobit-test.com/public_html
# mkdir /var/www/sobit-test.com/log
# mkdir /var/www/tes.sobit-test.com/log
maka perubahan struktur direktorinya menjadi
/var/www/
├── sobit-test.com
│ └── public_html
│ └── log
├── tes.sobit-test.com
│ └── public_html
│ └── log
Membuat file index.html di setiap direktori contoh. Untuk test akses nanti.
# vi /var/www/sobit-test.com/public_html/index.html
# vi /var/www/tes.sobit-test.com/public_html/index.html
Isikan file index.html dengan script html berikut ini
<html>
<head>
<title>Selamat Datang sobit-test.com!</title>
</head>
<body>
<h1>Success! sobit-test.com VirtualHost berhasil</h1>
</body>
</html>
<html>
<head>
<title>Selamat Datang sub domain tes.sobit-test.com!</title>
</head>
<body>
<h1>Success! sub domain tes.sobit-test.com VirtualHost berhasil</h1>
</body>
</html>
Konfigurasi VirtualHost
Dalam Pembuatan file konfigurasi VirtualHost Apache bisa dengan 2 cara :
- Menggunakan dan menambahkan di dalam file httpd.conf apache lokasi /etc/httpd/conf/httpd.conf
- Membuat file baru terpisah di /etc/httpd/conf.d
Pada praktek ini saya lebih menyukai cara kedua karena lebih mudah dalam mengatur atau memodifikasi konfigurasi setiap VirtualHost.
buat file baru sesuai domain
# vi /etc/httpd/conf.d/sobit-test.com.conf
# vi /etc/httpd/conf.d/tes.sobit-test.com.conf
Isikan konfigurasi VirtualHost dibawah ini sesuaikan dengan nama file .conf.
<VirtualHost *:80>
ServerName www.sobit-test.com
ServerAlias sobit-test.com
#ServerAdmin webmaster@sobit-test.com
DocumentRoot /var/www/sobit-test.com/public_html
<Directory /var/www/sobit-test.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/www/sobit-test.com/log/error.log
CustomLog /var/www/sobit-test.com/log/sobit-test.com-access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName www.tes.sobit-test.com
ServerAlias tes.sobit-test.com
#ServerAdmin webmaster@tes.sobit-test.com
DocumentRoot /var/www/tes.sobit-test.com/public_html
<Directory /var/www/tes.sobit-test.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/www/tes.sobit-test.com/log/error.log
CustomLog /var/www/tes.sobit-test.com/log/sobit-test.com-access.log combined
</VirtualHost>
Setelah selesai menambahkan isi file konfigrasi, pastikan Syntax konfig VirtualHost sudah tepat. Syntax diatas bisa di gabungkan di satu file sebenarnya tapi agar lebih mudah memahi dipisah seperti diatas.
[root@alma8 ~]# apachectl configtest
Syntax OK
akan ada tampilan “Syntax OK”
Jika sudah apache siap reload atau di restart agar dapa membaca konfigurasi VirtualHost yang baru.
# systemctl restart httpd
Sampai Disini VirtualHost sudah bisa berjalan, tinggal mengakses domain melalui browser.
Setting Policy SELINUX
Jika menggunakan file log diluar file log default dari apache, Kendala ini berlaku untuk SELinux yang aktif, jika SELinux kalian disable atau non aktif bisa skip bagian ini.
dalam hal ini contoh log :
ErrorLog /var/www/sobit-test.com/log/error.log
CustomLog /var/www/sobit-test.com/log/sobit-test.com-access.log combined
akan ada error seperti dibawah, jika dilihat log audit SELinux
# ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR
type=AVC msg=audit(1681416532.455:127): avc: denied { write } for pid=2861 comm="httpd" name="sobit-test.com" dev="dm-0" ino=4427557 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=dir permissive=0
akan ada kendala dalam penulisan dikarenakan SElinux tidak mengijinkan apache melakukan modifikasi ke file tersebut.
Untuk hal ini perlu dilakukan konfigurasi Policy SELinux agar mengijinkan http menulis ke direktori log.
# semanage fcontext -a -t httpd_log_t "/var/www/sobit-test.com/log(/.*)?"
setelah itu untuk meperbarui Policy yang sudah diterapkan diatas menggunakan semanage
# restorecon -R -v /var/www/sobit-test.com/log/
hasilnya adalah context type dari direktori sudah berubah seperti dibawah ini.
[root@alma8 ~]# ls -dlZ /var/www/sobit-test.com/log/
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 56 Apr 13 16:18 /var/www/sobit-test.com/log/
Test Akses VirtualHost apache melalui Web Browser
Ketika diakses melalui web browser hasilnya akan seperti dibawah ini
Jika dilihat log access-nya akan seperti dibawah ini
[root@alma8 ~]# tail /var/www/sobit-test.com/log/sobit-test.com-access.log
192.168.0.90 - - [13/Apr/2023:16:19:11 -0400] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
192.168.0.90 - - [13/Apr/2023:16:20:03 -0400] "-" 408 - "-" "-"
192.168.0.90 - - [13/Apr/2023:16:29:48 -0400] "-" 408 - "-" "-"
192.168.0.90 - - [13/Apr/2023:16:33:00 -0400] "-" 408 - "-" "-"
192.168.0.90 - - [13/Apr/2023:22:26:09 -0400] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"
Bisa dilihat log acess sudah dapat di update oleh apache.
Sampai Disini artikel “Cara Konfigurasi VirtualHost Apache di AlmaLinux 8, RockyLinux, RHEL dan CentOS”. Semoga Bermanfaat