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

Cara Install LAMP AlmaLinux8

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 :

  1. Menggunakan dan menambahkan di dalam file httpd.conf apache lokasi /etc/httpd/conf/httpd.conf
  2. 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

VirtualHost Apache sobit-test.com
VirtualHost sobit-test.com
VitualHost tes.sobit-test.com

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

Similar Posts

4.5 4 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments