Apache2 web server, Domain dan DNS

Pada tutorial sebelumnya, Saya menjelaskan bagaimana mempersiapkan LAMP server yang bisa digunakan untuk melakukan hosting applikasi PHP.  Nah anggaplah sekarang Anda sudah memiliki/membeli nama domain. Lalu bagaimana Anda bisa menghubungkan domain yang Anda beli dengan server yang Anda miliki(yaaa… anggap saja server Anda berada di provider Cloud seperti Amazon Web Service atau Digital Ocean).

Tutorial ini akan menggunakan Droplet di Digital Ocean(DO) dan DNS Server di CloudFlare(CF).
Related Tutorial:


Tutorial ini masih sama dengan tutorial sebelumnya, menggunakan Ubuntu Server 16.04 LTS. Apabila Anda masih menggunakan Ubuntu versi sebelumnya(LTS sebelum 16.04) tutorial ini masih cukup relevan(selama bukan Ubuntu versi 12.04 atau lebih tua).

Standard Main Domain Directive

Oke, pertama Anggaplah Anda sudah melakukan setup Droplet(sebutan VM di DO) dan sudah memnginstall Apache web server.

Setiap droplet akan memiliki IP publik(IP yang bisa diakses dari publik internet). Cobalah membuka browser kemudian masukan IP address droplet Anda.

Apabila Apache2 sudah terinstall dengan benar, makan seharusnya test page Apache akan muncul di browser Anda.

Nah sekarang anggaplah Anda sudah memiliki domain, bagaimana cara menggunakan domain tersebut(supaya tidak perlu menghapalkan alamat IP)?

Setiap domain pasti memiliki settingan yang sering disebut “Record” record tersebut memiliki kategori seperti diantaranya A, CNAME, AAA, MX, TXT dll. Nah dalam tutorial ini kita akan menggunakan A record.

Cara paling mudah mengkoneksikan domain dan server IP address adalah menambahkan A record. Berikut contohnya apabila Anda menggunakan Cloudflare.

Nah sampai sini, pekerjaan kita sebenarnya sudah beres. Hanya saja, terkadang perubahan pada name server record dapat memakan waktu(sejelek-jeleknya dapat memakan waktu 24jam kadang juga tergantung dari ISP Anda). Anda bisa mencoba di browser dengan memasukan domain anda di kolom alamat. Apabila sudah resolve, seharusnya Anda mellihat test page Apache tanpa masalah.

Subdomain setting

Pada sesi kedua ini, kita akan mencoba membuat sub domain. Sub domain contohnya seperti blog.[your-domain].com.

Langkah pertama adalah menambahkan A record baru di daftar DNS record dengan IP yang sama, hanya saja dengan nama berbeda, misalnya saja blog.

Kedua, karena ini subdomain, kita akan pisahkan root directorynya. Maka dari itu kita akan buat sebuah folder baru.

mkdir /var/www/blog

Lalu kita buat halaman welcome page untuk subdomain kita dengan membuat file index.html:

nano /var/www/blog/index.html

Isinya simple saja contohnya:

Kemudian simpan file tersebut.

Langkah berikutnnya adalah kita akan buat konfigurasi VHost baru di config Apache. Config Virtual Host(VHost) ini pada Ubuntu 16.04 lokasinya terdapat di:

/etc/apache2/sites-available/

Kita akan buat sebuah file baru disana dengan nama: “blog.[yourdomain].com.conf” (contoh saya “blog.gon-gon.com.conf”). Saran saya buatlah dengan nama yang menggambarkan alamatnya nanti(ditambah “.conf”) agar memudahkan kita nantinya. Kemduian isi file tersebut dengan syntax:

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName blog.gon-gon.com
        DocumentRoot /var/www/blog

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Ubah ServerName dengan alamat subdomain yang Anda buat, begitu juga dengan DocumentRoot, ubah ke alamat directory yang Anda buat sebelumnya.

Simpan file tersebut. Terakhir, aktifkan config baru yang Anda buat dengan menjalankan perintah:

a2ensite [config-file-name].conf

Dalam contoh, saya akan menjalankan perintah:

a2ensite blog.gon-gon.com.conf

Apabila Anda mendapatkan pesan:

Enabling site blog.gon-gon.com.
To activate the new configuration, you need to run:
  service apache2 reload

Berarti tidak ada masalah, Anda tinggal me-reload config apache(atau restart Apache Anda) dengan perintah:

service apache2 reload

atau

service apache2 restart

Sekarang kita akan coba mengakses sub domain baru kita di browser.

Apabila Anda mendapatkan tampilan di atas, maka subdomain Anda telah berhasil dibuat.

Kesimpulan

Ketika request ke domain kita datang, proses akan dihandle oleh DNS server. DNS akan mencoba mencari di dalam record-record-nya apakah terdaftar atau tidak di daftar record-nya. Kalau tidak terdaftar, pastinya browser akan memunculkan pesan error bahwa alamat yang diminta tidak ada. Jikalau ada, maka DNS akan mencoba me-resolve ke “IP” mana request akan diteruskan.

Ketika request sampai ke web server kita, request tersebut akan disertai informasi dari “alamat” domain mana request itu direquest.

Sehingga ketika request untuk meminta halaman “blog.[your-domain].com”  sampai ke Apache, apache akan mencoba mencari apakah ada VHost aktif yang memilii “ServerName” sama. Apabila ditemukan VHost aktif dengan “ServerName” yang diminta, maka Apache akan menggunakan “DocumentRoot” dan semua setting yang tertera pada Vhost block tersebut.

Lalu bagaimana apabila tidak ditemukan?

Apache akan menggunakan default VHost(000-default.conf) sebagai handler-nya. Itulah kenapa kita tidak perlu menambahkan VHost file waktu kita membuat record untuk utama domain kita.

Apabila Anda melihat di atas, saya menambahkan CNAME record “www” yang mengarah ke main domain. Apa maksudnya?

Mungkin dari dulu kita suka mendengarkan alamat website ditambahkan dengan “www” di depannya. Apa maksudnya?

Tambahan “www” sendiri sebenarnya juga berarti sub domain bernama “www”(yang seharusnya ridak perlu ditambahkan). Kita bisa saja menambahkan A record yang mengarah ke IP yang sama, hanya saja disini saya akan menggunakan CNAME(yang biasa disebut record Alias).

Sehingga secara workflow, ketika request dari www.gon-gon.com masuk ke DNS server, DNS Server akan mencari record yang di aliaskan dengan www. Dalam contoh saya, www saya set ke domain utama saya, A Record gon-gon.com. sehingga secara rumus sama dengan:

(CNAME) www = (A)gon-gon.com

Sehingga request diteruskan ke IP A record dari main domain(gon-gon.com).

Mungkin akan muncul pertanyaan: Wah kalau begitu untuk sub domain “blog” bisa juga menggunakan CNAME record?

Jawabannnya tentu bisa saja 🙂

Kemudian yang perlu diingat lagi adalah apabila Anda punya tambahan konfigurasi lain(misalnya saja tambahan config untuk SSL, Proxy, atau Mod rewrite), Anda juga harus menambahkannya di setiap VirtualHost block.

Terakhir, apabila Anda ingin menonaktifkan vhost, gunakan perintah:

a2dissite [conf-file-name].conf

Kemudian restart/reload Apache2 server agar perubahan yang kita lakukan dikenali oleh Apache2 server.