Membuat Virtual Host Apache di Ubuntu 16.04

Bagus Aji Santoso 18 Oktober 2017

Membuat Virtual Host Apache di Ubuntu 16.04

Pendahuluan

Apache merupakan server web yang paling populer sebagai penyedia konten web di internet. Apache berada di belakang lebih dari setengah website yang aktif di internet.

Apache membagi-bagi fungsionalitas dan komponennya ke dalam unit individual yang dapat diatur secara independen. Unit paling dasar yang menentukan sebuah situs atau domain individual disebut dengan virtual host.

Desain seperti ini memungkinkan administrator dalam mengatur sebuah server untuk menjalankan beberapa domain atau situs dari sebuah IP menggunakan mekanisme khusus. Proses ini sangat berguna bagi pembaca yang ingin menjalankan lebih dari satu situs dari sebuah VPS.

Setiap domain yang dikonfigurasi akan mengarahkan pengunjung ke direktori khusus yang menyimpan informasi situs tersebut tanpa memberitahu bahwa server yang sama juga dipakai untuk situs lain. Skema ini dapat diperluas sesukanya tanpa ada batasan selama server masih sanggup.

Tutorial kali ini akan membahas bagaimana cara mengatur virtual host Apache di Ubuntu 16.04. Dalam proses ini kita akan mempelajari bagaimana menjalankan kontent yang berbeda ke pengguna yang berbeda berdasarkan domain yang mereka kunjungi.

Prasyarat

Sebelum memulai tutorial ini pastikan telah membuat user non-root yang ada di langkah ke 1-4.

Lalu pembaca juga perlu memasang Apache. Jika belum melakukannya, lakukan pemasangan Apache dengan perintah:

sudo apt-get update
sudo apt-get install apache2

Jika kedua langkah di atas telah selesai, kita dapat memulai tutorial ini.

Untuk keperluan tutorial ini, kita akan membuat virtualhost untuk dua situs yaitu example.com dan test.com. Pembaca juga dapat langsung menggantinya dengan domain sendiri jika mau sambil mengikuti tutorial ini.

Nanti artikel ini juga akan memberitahu bagaimana mengubah isi file hosts untuk memiliki domain dummy sehingga kita bisa melakukan tutorial ini lewat komputer sendiri tanpa sebuah server khusus.

Langkah Pertama — Buat Struktur Direktori

Langkah pertama yang perlu kita lalukan adalah membuat struktur direktori yang akan menyimpan data situs-situs kita.

Document root kita (direktori paling atas yang digunakan Apache untuk mencari konten web) akan di atur ke dalam direktori individual di bawah /var/www. Kita akan membuat sebuah direktori disini untuk kedua virtualhost kita. Lalu, di dalam kedua direktori ini kita akan membuat folder public_html yang menyimpan konten untuk masing-masing domain. Sekarang mari kita buat direktorinya dengan perintah:

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

Langkah Kedua — Memberi Permissions

Sekrang kita sudah memiliki struktur direktori untuk file-file kita namun permissionnya masing dimiliki oleh user root. Sekarang kita perlu mengganti permissionnya sehingga user biasa dapat memodifikasi file di dalam direktori ini:

sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/test.com/public_html

Variabel $USER akan mengambil nilai dari user saat ini yang sedang aktif saat tombol Enter ditekan.

Kita juga perlu memodifikasi permissionnya sedikit untuk memastikan semua file dan folder di dalamnya dapat disajikan dengan benar:

sudo chmod -R 755 /var/www

Sekarang server web kita sudah meiliki permission yang seharusnya dan user biasa dapat menambah atau mengubah konten yang ada di dalam folder-folder tersebut.

Langkah Ketiga — Membuat Halaman Demo Untuk Tiap Virtual Host

Kita sudah memiliki struktur direktori yang dibutuhkan. Mari membuat beberapa konten untuk disajikan.

Untuk keperluan demo, kita hanya akan membuat sebuah index.html sederhana untuk tiap situs. Mari dimulai dengan example.com:

nano /var/www/example.com/public_html/index.html

Di dalam file ini, buat sebuah dokumen HTML sederhan sebagai berikut:

/var/www/example.com/public_html/index.html

<html>
  <head>
    <title>Welcome to Example.com!</title>
  </head>
  <body>
    <h1>Success!  The example.com virtual host is working!</h1>
  </body>
</html>

Simpan dan tutup editor nano.

Kita dapat menyalin isi file ini untuk situs yang kedua dengan cara:

cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

Lalu ubah isi file yang kedua agar sesuai

nano /var/www/test.com/public_html/index.html

/var/www/test.com/public_html/index.html

<html>
  <head>
    <title>Welcome to Test.com!</title>
  </head>
  <body> <h1>Success!  The test.com virtual host is working!</h1>
  </body>
</html>

Simpan dan tutup nano.

Langkah Keempat — Buat File Virtual Host Baru

File virtual host adalah file-file yang mengatur konfigurasi untuk virtual host kita dan meberitahu Apache bagaimana respon yang harus dilakukan untuk tiap request.

Apache terpasang dengan virtual host default bernama 000-default.conf yang dapat kita pakai sebagai titik awal. Kita akan menyalin isinya untuk membuat file virtual host baru untuk tiap domain kita.

Mari mulai dengan example.com, atur isinya, lalu salin lagi untuk test.com dan atur lagi sesuai kebutuhan. Konfigurasi Ubuntu memerlukan setiap file virtual host berakhir dengan .conf.

Buat File Virtual Host yang Pertama

Mari kita mulai dengan menyalin file untuk domain yang pertama:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

Buka file baru ini dengan sudo:

sudo nano /etc/apache2/sites-available/example.com.conf

Isi file di atas akan terlihat kurang lebih seperti pada kode di bawah (baris-baris komentar dihapus agar lebih ringkas):

/etc/apache2/sites-available/example.com.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Seperti yang dapat pembaca lihat, tidak banyak sebetulnya sisi file ini. Kita dapat mengatur nilai-nilainya dan menambah nilai baru agar sesuai dengan kebutuhan domain pertama. Virtual host ini akan membaca semua request di port 80, port default HTTP.

Pertama, kita perlu mengubah ServerAdmin ke email yang dipakai oleh administrator (email kita):

ServerAdmin admin@example.com

Setelah ini kita akan tamabhkan dua nilai. Yang pertama bernama ServerName, memberikan domain apa yang akan menggunakan virtualhost ini. Nilai yang kedua adalah ServerAlias untuk menentukan alamat lain yang ingin menggunakan virtual host ini juga, misalnya www:

ServerName example.com
ServerAlias www.example.com

Hal lain yang perlu kita atur agar file virtualhost bekerja adalah document root untuk domain yang ditentukan. Karena kita di awal sudah membuat direktorinya, kita hanya perlu menambah alamatnya:

DocumentRoot /var/www/example.com/public_html

Akhirnya, isi file virtual host kita akan terlihat sebagai berikut:

/etc/apache2/sites-available/example.com.conf

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Simpand an tutup file ini.

Salin Virtual Host yang Sudah Jadi dan Atur Isinya Untuk Domain Kedua

Sekarang kita sudah memiliki file virtual host untuk domain pertama, dan kita bisa mengaturnya untuk domain yang kedua dengan menyalin dan menyesuaikan isinya. Mari kita mulai dengan menyalin file tadi:

sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

Buka file yang sudah disalin sebagai root:

sudo nano /etc/apache2/sites-available/test.com.conf

Sekarang kita perlu memodifikasi semua informasi agar sesuai dengan domain yang kedua. Setelah selesai, isi file yang kedua seharusnya seperti berikut ini:

/etc/apache2/sites-available/test.com.conf

<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Simpan dan tutup.

Langkah Kelima — Mengaktifkan File Virtual Host yang Baru

Sekarang setelah kita membuat file virtual host yang baru, kita harus mengaktifkannya. Apache memiliki tool khusus untuk melakukan hal ini.

Kita akan menggunakan a2ensite untuk mengaktifkan kedua website tadi seperti ini:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

Lalu, nonaktifkan konfigurasi default di 000-default.conf:

sudo a2dissite 000-default.conf

Setelah selesai, restart Apache untuk mendapatkan efeknya:

sudo systemctl restart apache2

Dalam dokumentasi lain, kita juga dapat merestart Apache menggunakan perintah service:

sudo service apache2 restart

Perintah ini akan memberikan hasil yang sama namun kita tidak melihat keluaran seperti yang ada di sistem lain karena perintah service merupakan pembungkus untuk perintah systemctl.

Langkah Keenam — Mengatur File Host Lokal (Tambahan)

Jika belum memiliki nama domain untuk menguji prosedur tadi kita dapat menggunakan domain contoh menggunakan file hosts yang ada di komputer lokal.

File ini akan memotong semua request untuk domain yang telah dikonfigurasi ke alamat IP tertentu.

Pastikan langkah ini dilakukan di komputer lokal bukan di server:

sudo nano /etc/hosts

Pengguna Windows dapat membaca panduan di sini .

Detail yang diperlukan adalah alamat IP publik dari server VPS dengan nama domain yang diinginkan.

Dalam tutorial ini, kita asumsikan alamat IP VPS ada di 111.111.111.111 (bisa diubah menjadi 127.0.0.1 jika mengikuti tutorial ini menggunakan komputer lokal saja tanpa VPS):

/etc/hosts

127.0.0.1   localhost
127.0.1.1   guest-desktop
111.111.111.111 example.com
111.111.111.111 test.com

File ini akan mengarahkan semua request ke example.com dan test.com menuju alamat 111.111.111.111. Langkah ini dapat dilakukan jika ingin menguji virtual host dan bukan pemilik domain yang dipakai.

Simpan dan tutup file ini.

Langkah Ketujuh — Uji Hasilnya

Setelah virtual host selesai dikonfigurasi, sekarang buka browser dan arahkan ke alamat:

http://example.com

Kita seharusnya akan melihat halaman yang seperti ini:

Apache virt host example

Jika kita mengunjungi situs yang kedua

http://test.com

Maka kita juga akan melihat pesan sebagai berikut:

Apache virt host test

Jika kedua situs bekerja dengan benar, maka itu artinya kita sudah berhasil melakukan konfigurasi dua virtual host di satu server yang sama.

Jika sudah selesai dan virtualhost sudah bekerja, kita perlu menghapus dua baris yang ditambahkan ke file hosts. Penghapusan ini untuk mencegah agar tidak file hosts tidak berisi baris-baris yang tidak diperlukan.

Penutup

Sekarang kita seharusnya sudah memiliki sebuah server yang dapat menangani dua nama domain. Pembaca dapat mengulagi langkah di atas jika ingin menambah virtual host yang baru.

Tidak ada batasan jumlah nama domain yang dapat ditangani oleh Apache, silahkan tambah virtual host sebanyak-banyaknya selama server masih sanggup menangani request.

Diterjemahkan dari How To Set Up Apache Virtual Hosts on Ubuntu 16.04 di bawah Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.