0

Konfigurasi IP Based dan Name Based VHost Apache di Debian 7 dan Ubuntu Server LTS 12

Sebelumnya saya sudah menjelaskan tentang secara singkat tentang konfigurasi virtualhost apache web server di debian. Namun disini saya akan menjelaskan lagi dengan penjabaran yang sedikit lengkap tentang konfigurasi IP Based dan Name Based virtualhost di debian dan ubuntu server.

Konfigurasi virtualhost di apache web server ada 2 cara yaitu:

  • IP Based – berdasarkan alamat IP (IP Address)
  • Name Based – berdasarkan nama server (Server Name)

Sebelumnya untuk mengikuti tutorial ini, pastikan anda sudah menginstal apache web server di sistem operasi yang anda gunakan, baik debian maupun ubuntu server.

1. IP Based Virtualhost

IP Based adalah suatu cara untuk membuat virtualhost di Apache berdasarkan alamat IP, jadi jika kita mempunyai 2 domain tapi menginginkan setiap domain tersebut memiliki alamat IP yang berbeda-beda maka kita menggunakan konfigurasi IP Based virtualhost ini. Untuk mudahnya lihat gambar dibawah ini.

          +-- NIC1 (192.168.1.1) -> web1.com
server ---|
          +-- NIC2 (192.168.1.2) -> web2.com

Dari gambar diatas bisa dilihat bahwa ada 1 komputer server yang memiliki 2 interface dengan alamat IP yang berbeda, dan dari setiap IP tersebut masing-masing memiliki 1 buah domain. Selanjutnya kita akan mengkonfigurasi virtualhost sesuai dengan contoh diatas.

1.1 Membuat direktori konten web

Kita buat dahulu direktori untuk meletakkan konten dari setiap website tersebut.

# mkdir /var/www/web1.com
# mkdir /var/www/web2.com

Setelah itu kita buat dummy file yang namanya ‘index.html’ yang nantinya digunakan untuk pengujian dari masing-masing website. Dan setiap file ‘index.html’ diisi dengan kode html yang akan menunjukan identitas dari setiap website tersebut.

File index.html untuk web1.com

# nano /var/www/web1.com/index.html
<html>
<head>
    <title>web1.com</title>
</head>
<body>
    <h1>Selamat Datang di web1.com</h1>
    <h1>IP Based</h1>
</body>
</html>

File index.html untuk web2.com

# nano /var/www/web2.com/index.html
<html>
<head>
    <title>web1.com</title>
</head>
<body>
    <h1>Selamat Datang di web1.com</h1>
    <h1>IP Based</h1>
</body>
</html>

Setelah direktori web dan konten web dibuat, kita ubah dahulu kepemilikan direktori beserta isinya menjadi milik user www-data dan group www-data.

# chown -R www-data:www-data /var/www/web1.com
# chown -R www-data:www-data /var/www/web2.com

1.2 Konfigurasi file ports.conf

Modifikasi di file ports.conf ini gunanya untuk memberitahukan pada apache pada alamat IP berapa saja yang digunakan oleh masing-masing virtualhost.

# nano /etc/apache2/ports.conf

jadikan komentar baris berikut dengan cara menambahkan tanda pagar didepannya.

#NameVirtualHost *:80

lalu tambahkan 2 baris berikut dibawah baris yang kita jadikan komentar tadi.

NameVirtualHost 192.168.1.1:80
NameVirtualHost 192.168.1.2:80

1.3 Konfigurasi IP Based Virtualhost

File konfigurasi apache web server terletak dalam direktori /etc/apache2/. Dan untuk konfigurasi virtualhost ada didalam direktori /etc/apache2/sites-available/. Kita buat dahulu konfigurasi virtualhost untuk masing-masing website.

# cd /etc/apache2/sites-available/
# cp default web1.com
# cp default web2.com

Oke, jadi sekarang dalam direktori /etc/sites-available/ kita mempunyai 2 buah file konfigurasi untuk website web1.com dan web2.com. Langkah selanjutnya kita lakukan modifikasi sesuai kebutuhan kita pada file-file tersebut.

Ini untuk konfigurasi virtualhost web1.com dengan alamat IP 192.168.1.1

<VirtualHost 192.168.1.1:80>
        ServerAdmin webmaster@web1.com

        DocumentRoot /var/www/web1.com

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/web1.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/web1-error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/web1-access.log combined
</VirtualHost>

Dan, ini untuk konfigurasi virtualhost web2.com dengan alamat IP 192.168.1.2

<VirtualHost 192.168.1.2:80>
        ServerAdmin webmaster@web2.com

        DocumentRoot /var/www/web2.com

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/web1.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/web2-error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/web2-access.log combined
</VirtualHost>

Setelah selesai dengan langkah diatas, kita aktifkan kedua virtualhost tersebut.

# a2ensite web1.com
# a2ensite web2.com

Lalu reload apache agar konfigurasi baru dari 2 virtulhost tersebut dibaca oleh apache.

# service apache2 reload

1.4 Pengujian Virtualhost

Setelah selesai dengan semua konfigurasi, kita lakukan pengujian terhadap masing-masing website. Disini kita melakukan pengujian lokal dengan manambahkan alamat IP serta domain kedua website tersebut kedalam file /etc/hosts seperti ini.

192.168.1.1    web1.com
192.168.1.2 web2.com

Lalu kita uji menggunakan perintah curl, hasilnya akan terlihat seperti ini.

Pengujian web1.com

# curl web1.com

outputnya:

<html>
<head>
    <title>web1.com</title>
</head>
<body>
    <h1>Selamat Datang di web1.com</h1>
    <h1>IP Based</h1>
</body>
</html>

Pengujian web2.com

# curl web2.com

outputnya:

<html>
<head>
    <title>web2.com</title>
</head>
<body>
    <h1>Selamat Datang di web2.com</h1>
    <h1>IP Based</h1>
</body>
</html>

2. Name Based virtualhost

Berbeda dengan IP Based, untuk Name Based adalah suatu cara untuk membuat virtualhost di apache web server dengan menggunakan 1 alamat IP saja tapi bisa digunakan untuk beberapa website. Jadi, kalau kita mempunyai 1 buah IP publik tapi bisa ingin memiliki beberapa website maka cara ini cocok sekali untuk kita gunakan. Untuk mudahnya bisa lihat gambar dibawah ini.

                                +--> web1.com
server --- NIC1 (192.168.1.1) --|
                                +--> web2.com

Dari gambar diatas terlihat ada 1 buah komputer server dengan 1 interface akan tetapi digunakan untuk 2 website yang menunjuk ke alamat IP yang sama.

2.1 Membuat direktori konten web

Kita buat dahulu direktori untuk meletakkan konten dari kedua website tersebut.

# mkdir /var/www/web1.com
# mkdir /var/www/web2.com

Buat dummy file ‘index.html’ untuk pengujian diakhir nanti.

File index.html untuk web1.com

# nano /var/www/web1.com/index.html
<html>
<head>
    <title>web1.com</title>
</head>
<body>
    <h1>Selamat Datang di web1.com</h1>
    <h1>Name Based</h1>
</body>
</html>

File index.html untuk web2.com

# nano /var/www/web2.com/index.html
<html>
<head>
    <title>web1.com</title>
</head>
<body>
    <h1>Selamat Datang di web1.com</h1>
    <h1>Name Based</h1>
</body>
</html>

Ubah kepemilikan direktori beserta isinya dengan user www-data dan group www-data.

# chown -R www-data:www-data /var/www/web1.com
# chown -R www-data:www-data /var/www/web2.com

2.2 Konfigurasi file ports.conf

Untuk cara ini kita hanya perlu sedikit memodifikasi file ports.conf. Cari baris dibawah ini.

NameVirtualHost *:80

Lalu ubah menjadi seperti ini.

NameVirtualHost 192.168.1.1:80

2.3 Konfigurasi Name Based Virtualhost

Kita buat dulu file konfigurasi virtualhost untuk masing-masing website. Letaknya ada didalam direktori /etc/apache2/sites-available/.

# cd /etc/apache2/sites-available
# cp default web1.com
# cp default web2.com

Untuk Name Based kita perlu menambahkan baris dibawah ini kedalam setiap file konfigurasi yang kita buat.

ServerName nama-domain.com

Gunanya adalah untuk memberitahukan apache web server pada host mana yang sebenarnya kita tuju, karna disini kita menggunakan cara Name Based untuk konfigurasi virtualhostnya.

Berikut konfigurasi untuk virtualhost web1.com dengan alamat IP 192.168.1.1

<VirtualHost 192.168.1.1:80>
        ServerAdmin webmaster@web1.com
        ServerName web1.com

        DocumentRoot /var/www/web1.com

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/web1.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/web1-error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/web1-access.log combined
</VirtualHost>

Dan, ini untuk konfigurasi virtualhost web2.com dengan alamat IP 192.168.1.1

<VirtualHost 192.168.1.1:80>
        ServerAdmin webmaster@web2.com
        ServerName web2.com

        DocumentRoot /var/www/web2.com

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/web1.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/web2-error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/web2-access.log combined
</VirtualHost>

Setelah selesai dengan langkah diatas, kita aktifkan kedua virtualhost tersebut dengan perintah dibawah ini.

# a2ensite web1.com
# a2ensite web2.com

Reload konfigurasi yang telah kita buat.

# service apache2 reload

2.4 Pengujian Virtualhost

Jangan lupa untuk mengedit file /etc/hosts untuk pengujiannya, menjadi seperti ini.

192.168.7.1 web1.com
192.168.7.1 web1.com

Lalu kita uji dengan perintah curl.

# curl web1.com
# curl web2.com

Jika hasil output sudah sesuai dengan isi file index.html dari masing-masing website maka konfigurasi kita sudah berhasil.

hazmi

Orangnya santai tapi rajin belajar. Selalu penasaran sama segala hal, apalagi kalau tentang doi :) Founder dari cubnetwork.

Leave a Reply