Hai, Sobat Jagoan! Untuk meng-host situs web pada server kamu sendiri, kamu harus menginstal sebuah server web. Di antara yang tersedia, salah satu yang paling populer saat ini adalah Apache, kompatibel dengan sistem Unix dan Windows dan menampilkan integrasi yang sangat baik dengan perangkat lunak lain dan dukungan media yang baik.
Tetapi bagaimana jika kamu perlu meng-host beberapa situs web pada server yang sama, dengan hanya memiliki satu alamat IP publik? Dalam hal ini, kamu perlu mengonfigurasi Virtual Host pada Apache untuk mengaitkan domain yang berbeda ke alamat IP yang sama.
Dalam artikel ini akan membahas cara mengonfigurasi Virtual Host untuk mengelola lebih banyak domain pada server web yang sama. Jadi, setiap domain dapat memiliki konfigurasi, teknologi, dan versi aplikasi yang berbeda.
Prasyarat
- Menginstal apache sebagai web server, kalau belum ikuti panduan Cara Instal Web Server Apache di AlmaLinux
- Memilki akses non-root user dengan sudo privilege
- Mempunyai domain yang sudah di arahkan ke VPS (opsional). Panduan mengarahkan domain ke VPS bisa diakses pada Cara mengarahkan domain ke vps
Step 1: Buat Koneksi SSH VPS
Pertama, buat koneksi SSH ke VPS kamu melalui terminal. Jika menggunakan sistem operasi Windows, kamu bisa menggunakan PuTTY.
Detail informasi awal layanan kamu bisa diakses pada Informasi Awal Layanan VM.
Step 2: Konfigurasi Virtual Host
Pastikan web server kamu sudah aktif dan berjalan ya, Sob. Kalau belum jalankan:
sudo systemctl start httpd
Kemudian, pastikan statusnya berjalan “active (running)”.
sudo systemctl status httpd
Output:
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: di>
Active: active (running) since Wed 2025-05-14 04:13:36 UTC; 1min 4s ago
Docs: man:httpd.service(8)
Main PID: 45945 (httpd)
Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes>
Tasks: 177 (limit: 4033)
Memory: 38.1M
CPU: 140ms
CGroup: /system.slice/httpd.service
├─45945 /usr/sbin/httpd -DFOREGROUND
├─45946 /usr/sbin/httpd -DFOREGROUND
├─45947 /usr/sbin/httpd -DFOREGROUND
├─45948 /usr/sbin/httpd -DFOREGROUND
└─45949 /usr/sbin/httpd -DFOREGROUND
May 14 04:13:36 tutorial.my.id systemd[1]: Starting The Apache HTTP Server>
May 14 04:13:36 tutorial.my.id httpd[45945]: Server configured, listen>
May 14 04:13:36 tutorial.my.id systemd[1]: Started The Apache HTTP Server>
Ketika pertama kali kamu menginstal Apache di AlmaLinux, ia otomatis menggunakan direktori /var/www/html sebgai lokasi web kamu. Tapi, Apache juga memungkinkan untuk mengelola banyak situs web atau domain berbeda dengan konfigurasi masing-masing. Kalau situs yang kamu kelola ada banyak, sebaiknya kamu tidak lagi menyimpan konfigurasinya di /var/www/html, kamu bisa gunakan virtual host supaya satu server bisa menjalankan banyak situs secara terpisah dan terorganisir. Untuk memudahkan manajemen dan menjaga keteraturan, bedakan folder HTML dan log. Direktori HTML berisi file yang akan diakses user lewat browser. Sedangkan, log digunakan Apache untuk mencatat akses dan error, berguna untuk debuggind dan keamanan.
Mulailah dengan membuat subdirektori di domain, biasanya bernama html.
sudo mkdir -p /var/www/domainkamu.com/html
Lalu, buat subdirektori untuk menyimpan log file.
sudo mkdir -p /var/www/domainkamu.com/log
Selanjutnya beri hak milik folder HTML ke user supaya bisa diedit tanpa root.
sudo chown -R $USER:$USER /var/www/domainkamu.com/html
Dan atur izin akses (permissions) pada folder /var/www dan seluruh isinya.
sudo chmod -R 755 /var/www
Berikutnya, buat halaman HTML sederhana (kamu bisa pakai command nano atau vi)
sudo vi /var/www/domainkamu.com/html/index.html
Isikan baris kode HTML berikut ini.
<html>
<head>
<title>Example</title>
</head>
<body>
<h1>This is an html page</h1>
</body>
</html>
Kalau kamu pilih menggunakan vi, tekan i untuk masuk INSERT mode. Kemudian, paste kode HTML di atas dan simpan perubahan. Kalau pakai nano Ctrl+X, Y lalu Enter. Kalau vi, tekan Esc ketik :wq lalu Enter.
Setelah folder situs dan halaman index.html dibuat, sekarang giliran membuat virtual host. Buat folder bernama sites-available untuk menyimpan konfigurasi virtual host. Buat juga folder sites-enabled untuk menentukan situs mana yang digunakan atau diaktifkan di Apache (file ini biasanya berupa symlink dari sites-available).
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
Kemudian, jalankan command berikut supaya Apache bisa membaca setting konfigurasinya.
sudo vi /etc/httpd/conf/httpd.conf
Tekan G (untuk masuk ke baris paling bawah) lalu i untuk masuk di INSERT mode dan tambahkan baris berikut di baris akhir file.
IncludeOptional sites-enabled/*.conf
Simpan dan keluar dari editor.
Sekarang buat konfigurasi virtual host untuk situs kamu.
sudo vi /etc/httpd/sites-available/domainkamu.com.conf
Isi baris kode berikut di dalamnya.
ServerName www.domainkamu.com
ServerAlias domainkamu.com
DocumentRoot /var/www/domainkamu.com/html
ErrorLog /var/www/domainkamu.com/log/error.log
CustomLog /var/www/domainkamu.com/log/requests.log combined
Penjelasan:
- <VirtualHost *:80> : Konfigurasi ini berlaku untuk koneksi HTTP di port 80.
- ServerName : Domain utama yang digunakan.
- ServerAlias : Alias tambahan (bisa akses tanpa www).
- DocumentRoot : Folder tempat file HTML berada.
- ErrorLog : Lokasi file log error.
- CustomLog : Lokasi file log akses (permintaan HTTP).
Kemudian, buat symlink (shortcut) dari sites-available ke sites-enabled. Dengan ini, situs akan diaktifkan dan dikenali Apache saat startup.
sudo ln -s /etc/httpd/sites-available/domainkamu.com.conf /etc/httpd/sites-enabled/domainkamu.com.conf
Sampai di sini, proses virtual host sudah selesai. Tapi, kamu masih perlu memeriksa dan menyesuaikan pengaturan SELinux kalau SELinux belum aktif supaya situs bisa diakses.
Step 3: Konfigurasi SELinux Permissions untuk Virtual Host
SELinux merupakan modul keamanan bawaan kernel Linux . Di AlmaLinux 9, sudah dikonfigurasi agar bisa berkerja sama dengan konfigurasi Apache. Karena kamu sudah membuat file konfigurasi untuk Apache (seperti virtual host), maka kamu perlu mengecek ulang konfigurasi keamanan SELinux, agar file bisa dibaca dan dijalankan oleh Apache.
Memberi Izin Secara Umum (Universal Privileges)
Dengan cara ini, semua proses Apache akan diperlakukan sama oleh SELinux, tanpa melihat direktori atau file tertentu. Ini cara termudah dan cepat.
sudo setsebool -P httpd_unified 1
Penjelasan:
- setsebool = perintah untuk mengubah nilai boolean di SELinux.
- -P = menyimpan perubahan secara permanen (tidak hilang setelah restart).
- httpd_unified = nama boolean SELinux yang mengatur apakah Apache bisa mengakses semua file log/error/file miliknya secara global.
- 1 = artinya aktifkan fitur ini (aktifkan hak akses universal Apache).
Sebenarnya, kamu juga bisa membuat izin spesifik untuk direktori Apache, misalnya hanya untuk folder log, tapi hal ini lebih rumit dan memakan waktu.
Step 4: Menguji Virtual Host
Setelah semua konfigurasi dilakukan, kamu bisa menguji virtual host apakah sudah berjalan dengan benar. Tapi, restart dulu web server Apachenya agar perubahan konfigurasi virtual host diterapkan.
sudo systemctl restart httpd
Kemudian periksa log Apache.
ls -lZ /var/www/domainkamu.com/log
Jika file error.log dan requests.log muncul, artinya konfigurasi log pada virtual host kamu berhasil.

Sekarang, coba buka domain kamu (atau alamat IP server jika belum punya domain) di browser. Jika halaman HTML yang kamu buat tampil, maka virtual host berhasil dikonfigurasi dan berjalan.

Dengan mengikuti artikel ini, kamu hanya cukup meng-online-kan situs dalam satu web saja sehingga lebih efisien dan terstruktur. Pastikan untuk menguji setiap konfigurasi sebelum digunakan di lingkungan produksi. Untuk pengelolaan lebih lanjut, pertimbangkan menambahkan dukungan SSL/TLS dan konfigurasi log masing-masing situs.
Kalau ada yang masih bingung, jangan ragu hubungi Tim Support Jagoan Hosting ya, Sob!
Halo, Sob! AlmaLinux merupakan sebuah sistem operasi distribusi berbasis Red Hat Enterprise Linux (RHEL) yang stabil dan banyak digunakan di Read more
Hai, Sob! Apache HTTP Server (httpd) merupakan salah satu web server tertua dan paling banyak digunakan di dunia, terkenal karena Read more
Hai, Sob! Server database adalah inti dari banyak aplikasi web di Internet. Efisiensi sumber daya dan kinerjanya yang luar biasa Read more
Hai, Sob! PHPMyAdmin adalah sebuah aplikasi web berbasis PHP yang digunakan untuk mengelola basis data MySQL atau MariaDB melalui antarmuka Read more