Cara Membuat Virtual Host Apache2 di Ubuntu 20.04

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.
virtual host apache
VirtualHost dengan 2 domain

Apa saja yang dibutuhkan untuk membuat Virtual Host pada Apache2?

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:

TypeNameTarget / IPv4 / Public DNS
A@18.142.XXX.X
Awww18.142.XXX.X
CNAME@ec2-18-142-XXX-XX.ap-southeast-1.compute.amazonaws.com
CNAMEwwwec2-18-142-XXX-XX.ap-southeast-1.compute.amazonaws.com
DNS Mangement
DNS Type A record
DNS Type A Record
DNS Type CNAME
DNS Type CNAME

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.comTop Level Domain
judisweb.com/wp-content/Top Level Domain yang memiliki subdirectory
pyapps.judisweb.comSubdomain dari judisweb.com
pyapps.judisweb.com/aboutSubdomain dari judisweb.com yang memiliki subdirectory
Contoh perbedaan Top Level Domain, Subdomain, 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.

subdomain test

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:

PicsArt 08 29 10.50.32

Membuat subdomain dengan CNAME:

PicsArt 08 29 10.52.32

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.

Tinggalkan komentar