Tutorial Cara Membuat Virtual Host Apache2 di Ubuntu 20.04 – Pada umumnya penyedia shared hosting, memberikan pelayanan berupa cPanel yang memudahkan kita untuk mengatur konfigurasi website termasuk dalam mengatur subdomain, add-ons domain di dalamnya. Lantas bagaimana membuat virtual host beberapa domain, maupun subdomain pada virtual private server?
Apa itu Virtual Host pada Apache2?
Virtual Host memperbolehkan kita untuk menjalankan beberapa situs/web dari satu server atau Virtual Private Server. Dengan kata lain kita dijinkan memiliki lebih dari 1 website dalam 1 hosting.
Ada dua jenis virtual host pada Apache:
- Virtual Host berbasis IP – setiap situs web di Server Apache menggunakan alamat IP unik yang berbeda.
- Virtual Host berbasis Nama – menambahkan beberapa domain menggunakan satu alamat IP.
Apa saja yang dibutuhkan untuk membuat Virtual Host pada Apache2?
- Server/VPS atau virtual machine
- Server yang sudah terinstall Ubuntu
- Apache2 Webserver: baca tutorial install Apache2 AWS
- SSH dan user dengan sudo privilege
- DNS Management
Membuat Virtual Host pada Apache2
Virtual Host memperbolehkan kita untuk memaksimalkan sumber daya atau resource yang ada untuk mengatur website. Dengan virtual host, kita dapat menggunakan satu server dan satu alamat IP untuk menjadikan hosting sejumlah nama domain yang berbeda.
Sebelum memulai untuk membuat virtual host, seperti biasa kita membutuhkan akses ke server via SSH. Setelah login ke server via SSH, pastikan dan biasakan untuk melakukan update package index. Agar semua package yang terinstall diperbarui ke versi yang baru.
sudo apt update -y && sudo apt upgrade -y
Setelah melakukan update package index kita bisa memulai membuat virtual host. Pastikan Apache2 webserver terinstall atau menggunakan perintah dibawah ini jika belum melakukan instalasi Apache2 webserver:
sudo apt-get install apache2
Membuat Virtual Host pada Apache2 berbasis Nama
Virtual Host berbasis nama memperbolehkan kita untuk mencatat nama host ke server, sebagai elemen dari header HTTP. Fitur ini menjelaskan bahwa satu server dapat menjadikan hosting beberapa website (shared hosting) dengan alamat IP yang sama.
Note: dengan menerapkan virtual host ini, maka kemampuan server tersebut menjadi lebih terbebani karena bekerja dengan lebih dari satu website.
Membuat struktur direktori
Secara default konfigurasi Apache2 webserver direktori utama berada pada /var/www/html. Disini kita akan membuat 2 direktori 2 baru untuk 2 domain. Disini kita membuat direktori baru pada /var/www.
sudo mkdir -p /var/www/namadomain1.com/html
sudo mkdir -p /var/www/namadomain2.com/html
Dimana direktori html tersebut tempat dimana kita menyimpan file konten dari website.
Disini kita membuat 2 file html sederhana “Hello World” di direktori tersebut.
Untuk domain pertama:
nano /var/www/namadomain1.com/html/index.html
<html>
<body>
<h1>Hello World</h1>
<p>Test Apache2 Webserver Domain 1</p>
<p>by Bagus Judistirah</p>
<p>https://judisweb.com</p>
</body>
</html>
Simpan file tersebut dan keluar editor nano.
Untuk domain kedua:
nano /var/www/namadomain2.com/html/index.html
<html>
<body>
<h1>Hello World</h1>
<p>Test Apache2 Webserver Domain 2</p>
<p>by Bagus Judistirah</p>
<p>https://bjxbro.online</p>
</body>
</html>
Simpan file tersebut dan keluar editor nano.
Karena dalam membuat folder tersebut kita menggunakan root maka perlu kita rubah ijin kepemilikan folder tersebut menjadi www-data (apache).
sudo chown –R www-data:www-data /var/www/namadomain1.com
sudo chown –R www-data:www-data /var/www/namadomain2.com
Membuat Konfigurasi Apache2
Untuk membuat file konfigurasi dasar untuk domain pertama, masukkan informasi domain dengan perintah:
sudo nano /etc/apache2/sites-available/namadomain1.com.conf
Tambahkan blok konfigurasi berikut untuk membuat file konfigurasi dasar. Contoh ini menggunakan domain pertama, namadomain1.com.
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName namadomain1.com
ServerAlias www.namadomain1.com
DocumentRoot /var/www/namadomain1.com/html
ErrorLog ${APACHE_LOG_DIR}/namadomain1.com-error.log
CustomLog ${APACHE_LOG_DIR}/namadomain1.com-access.log combined
</VirtualHost>
Simpan file konfigurasi tersebut dan melanjutkan untuk konfigurasi domain kedua.
sudo nano /etc/apache2/sites-available/namadomain1.com.conf
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName namadomain2.com
ServerAlias www.namadomain2.com
DocumentRoot /var/www/namadomain2.com/html
ErrorLog ${APACHE_LOG_DIR}/namadomain2.com-error.log
CustomLog ${APACHE_LOG_DIR}/namadomain2.com-access.log combined
</VirtualHost>
Simpan file konfigurasi dan keluar editor untuk domain kedua dan saya akan menjelaskan sedikit konfigurasi dasar apache:
- ServerName – mewakili domain
- ServerAlias – mewakili semua domain lain seperti subdomain
- DocumentRoot – direktori yang digunakan oleh Apache untuk load file domain
- ErrorLog, CustomLog – menentukan lokasi file log
Mengaktifkan Konfigurasi Apache2
Untuk mengaktifkan konfigurasi dari setiap domain lakukan dengan perintah ini:
sudo a2ensite namadomain1.com
Enabling site namadomain1.com.
To activate the new configuration, you need to run:
systemctl reload apache2
Ulangi perintah tersebut dengan mengganti menjadi namadomain2.com:
sudo a2ensite namadomain2.com
Enabling site namadomain2.com.
To activate the new configuration, you need to run:
systemctl reload apache2
Setelah mengaktifkan kedua konfigurasi domain tersebut, verifikasi syntax:
sudo apachectl configtest
Syntax OK
Jika hasil dari verifikasi konfigurasi benar akan muncul “Syntax OK” kemudian restart Apache2 untuk memuat ulang konfigurasi yang baru:
sudo systemctl restart apache2
DNS Management
Pada DNS Management arahkan A record atau CNAME (pilih salah satu) ke alamat Public IP/Public DNS VPS kemudian test membuka 2 domain menggunakan web browser.
Saya contohkan menggunakan DNS Management dari Cloudflare:
Type | Name | Target / IPv4 / Public DNS |
A | @ | 18.142.XXX.X |
A | www | 18.142.XXX.X |
CNAME | @ | ec2-18-142-XXX-XX.ap-southeast-1.compute.amazonaws.com |
CNAME | www | ec2-18-142-XXX-XX.ap-southeast-1.compute.amazonaws.com |
Membuat SubDomain
Pada umumnya sub-domain digunakan untuk bagian dari induk website, induk website sendiri bisa kita sebut sebagai TLD (Top Level Domain).
Berbeda dengan subfolder, terlihat mirip tapi tidak sama. Tapi kedua bagian tersebut subfolder dan subdomain diatur dengan cara yang berbeda di dalam server.
judisweb.com | Top Level Domain |
judisweb.com/wp-content/ | Top Level Domain yang memiliki subdirectory |
pyapps.judisweb.com | Subdomain dari judisweb.com |
pyapps.judisweb.com/about | Subdomain dari judisweb.com yang memiliki subdirectory |
Membuat Subdomain pada Apache2
sudo mkdir /var/www/subdomain1
Disini saya memberi nama dan membuat subdomain1 pada directory /var/www sedangan untuk website induk menggunakan directory html.
ls -l /var/www/
total 16
-rw-rw-r-- 1 www-data www-data 10918 Aug 28 17:58 html
drwxr-sr-x 5 root www-data 4096 Aug 29 09:00 subdomain1
Langkah selanjutnya kita buat file index.html pada directory subdomain1:
sudo nano /var/www/subdomain1/index.html
Masukkan kode html pada editor, simpan file dan keluar editor.
<html>
<body>
<h1>Hello World!</h1>
<h2>Test Subdomain</h2>
<p>by Bagus Judistirah</p>
</body>
</html>
Setelah membuat directory subdomain1 dan file index.html, set permission untuk www-data:
sudo chown -R www-data:www-data /var/www
Kemudian kita ubah dan tambahkan konfigurasi subdomain pada Apache2 konfig:
sudo nano /etc/apache2/sites-available/000-default.conf
# Subdomain: demosubdomain
<VirtualHost *:80>
DocumentRoot /var/www/subdomain1
ServerName demosubdomain.judisweb.com
<Directory /var/www/subdomain1/>
Options Indexes FollowSymLinks MultiViews +Includes
AllowOverride FileInfo Options
Order allow,deny
allow from all
</Directory>
</VirtualHost>
# TLD: judisweb.com
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName judisweb.com
ServerName www.judisweb.com
<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews +Includes
AllowOverride FileInfo Options
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Simpan konfigurasi yang baru dan keluar editor. Langkah selanjutnya adalah me-restart Apache2 service agar subdomain berfungsi.
sudo service apache2 restart
Buka web browser dengan alamat subdomain yang telah kita buat.
Referensi Apache2
Cara Membuat Subdomain via DNS Management
Kita juga bisa membuat subdomain menggunakan DNS Management pada domain provider atau hosting provider dimana kita mendaftarkan domain. Disini saya menggunakan cloudflare sebagai DNS Management.
Disini saya akan memberikan contoh menggunakan A record dan CNAME.
Membuat subdomain dengan A record:
Membuat subdomain dengan CNAME:
Demikian Tutorial Cara Membuat Virtual Host Apache2 di Ubuntu 20.04 – Dengan sangat cepat dan mudah, dan setting subdomain pada cloudflare DNS Management.
Semoga bermanfaat.