Kalau sebelumnya kita menginstall Apache, MariaDB dan PHP pada Centos 7, sekarang kita akan membuat virtual host dan memasang SSL/TLS pada server tersebut.

Apa itu Virtual Host ?

Virtual hosts merupakan fitur dari web server yang memungkinkan banyak web untuk diarahkan ke dalam satu server.

Jika diilustrasikan, virtual host kurang lebih seperti ini :

Ilustrasi Virtual Hosts
Ilustrasi Virtual Hosts

Web virtualhost1.com, virtualhost2.com dan virtualhost3.com sama-sama mengarah ke server yang sama, hanya saja oleh web server masing-masing web diarahkan ke direktori berbeda.

Membuat Virtual Host Apache

Dalam contoh ini, saya akan membuat virtual host untuk web vhost.dede-gunawan.web.id dan akan disimpan pada server dengan ip address 194.31.53.138.

Silahkan ganti web vhost.dede-gunawan.web.id dengan web yang ingin di setup dan sesuaikan dengan juga ip addressnya.

Persyaratan :

Kita harus mengarahkan web vhost.dede-gunawan.web.id terhadap ip 194.31.53.138 pada dns server kita.

mengarahkan subdomain ke server yang tepat
Mengarahkan web melalui cloudflare.com

Setelah web berhasil diarahkan, jika kita ping situs vhost.dede-gunawan.web.id hasilnya akan seperti gambar dibawah ini :

ping ke web vhost.dede-gunawan.web.id

Setelah berhasil mengarahkan web ke server yang tepat barulah kita bisa membuat virtual host.

Buat dua direktori baru di server dengan perintah :

mkdir -p /var/www/vhost.dede-gunawan.web.id/html

mkdir -p /var/www/vhosts.dede-gunawan.web.id/log

Perintah pertama membuat direktori /var/www/vhost.dede-gunawan.web.id/html yang nantinya akan digunakan untuk menyimpan file & data web kita.

Sedangkan perintah kedua membuat direktori /var/www/vhost.dede-gunawan.web.id/log yang nantinya akan berisi file access.log dan error.log dari situs kita.

Selanjutnya atur kepemilikan dari direktori /var/www/vhost.dede-gunawan.web.id/html menjadi milik apache dengan perintah :

chown -R apache:apache /var/www/vhost.dede-gunawan.web.id/html

jangan lupa juga atur status direktori /var/www/vhost.dede-gunawan.web.id menjadi 755 dengan perintah :

chmod -R 755 /var/www/vhost.dede-gunawan.web.id

selanjutnya buat dua direktori konfigurasi vhost menggunakan perintah :

mkdir /etc/httpd/sites-available

dan

mkdir /etc/httpd/sites-enabled

Direktori sites-available berfungsi untuk menyimpan semua virtual host yang tersedia di server, sedangkan direktori sites-enabled berfungsi untuk menyimpan semua virtual host yang berjalan.

Ubah file /etc/httpd/conf/httpd.conf dan tambahkan kode dibawah ini pada baris terakhir file :

IncludeOptional sites-enabled/*.conf

Pada direktori sites-available buat file vhost.dede-gunawan.web.id.conf dan isi dengan kode dibawah ini :

<VirtualHost *:80>
    ServerName vhost.dede-gunawan.web.id
    ServerAlias www.vhost.dede-gunawan.web.id
    DocumentRoot /var/www/vhost.dede-gunawan.web.id/html
    ErrorLog /var/www/vhost.dede-gunawan.web.id/log/error.log
    CustomLog /var/www/vhost.dede-gunawan.web.id/log/access.log combined
</VirtualHost>

Daftarkan file vhost.dede-gunawan.web.id.conf ke dalam direktori sites-enabled menggunakan symbolic link dengan perintah :

ln -s /etc/httpd/sites-available/vhost.dede-gunawan.web.id.conf /etc/httpd/sites-enabled/vhost.dede-gunawan.web.id.conf

Terakhir, jangan lupa restart web server kita dengan perintah :

systemctl restart httpd

Menambah file index.html

Selanjutnya adalah menambah file index.html pada direktori /var/www/vhost.dede-gunawan.web.id/html.

Isi dengan kode dibawah ini :

<html>
  <head>
    <title>Selamat Datang di vhost.dede-gunawan.web.id!</title>
  </head>
  <body>
    <h1>Berhasil! virtual host web vhost.dede-gunawan.web.id berhasil dibuat.</h1>
  </body>
</html>

Apa itu SSL/TLS

SSL/TLS merupakan fitur untuk mengamankan web dari pencurian data. SSL/TLS bekerja dengan cara melakukan enkripsi terhadap komunikasi yang dilakukan antara server dengan client.

Protokol web SSL/TLS menggunakan awalan https://, berbeda dengan web biasa yang menggunkan awalan http://.

SSL/TLS biasanya ada yang berbayar dan gratis. Pada artikel ini, saya akan menggunakan SSL/TLS versi gratis dari let’s encrypt.

Memasang SSL/TLS

Langkah pertama adalah install paket EPEL (Extra Packages for Enterprise Linux) terlebih dahulu menggunakan perintah :

yum install epel-release

selanjutnya install certbot untuk apache. Certbot merupakan tools yang akan kita gunakan untuk membuat ssl/tls dari let’s encrypt.

Perintah untuk menginstall certbot adalah :

yum install certbot python-certbot-apache mod_ssl

setelah proses instalasi berhasil, langkah selanjutnya meminta ssl/tls dari server let’s encrypt. Perintahnya adalah :

certbot --apache -d vhost.dede-gunawan.web.id

certbot nantinya akan melakukan verifikasi terhadap server kita dan menanyakan opsi redirect https-nya apakah akan otomatis atau tidak, saya biasanya akan memilih opsi redirect otomatis (pilihan no 2).

install certbot centos 7
pilih redirect otomatis

Sampai disini ssl/tls sudah berhasil diinstall.

Langkah selanjutnya adalah membuat cron job untuk otomatisasi pembaruan ssl/tls. Ini dibutuhkan karena sertifikat ssl/tls dari let’s encrypt hanya bertahan selama 3 bulan saja.

Saya membuat cron job yang akan meminta pembaruan otomatis setiap tanggal 1 jam 23.59.

Caranya, silahkan ketikkan perintah crontab -e kemudian tambahkan script berikut dibagian akhir file konfigurasi :

59 23 1 * * /usr/bin/sudo /usr/bin/certbot renew --apache

Simpan dan keluar dari editor.

Kemudian lakukan restart pada cron job kita supaya mengenali perubahan konfigurasi menggunakan perintah :

systemctl restart crond

Video Demo Membuat Virtual Host & Memasang SSL/TLS

Video Demo

Tambahan

Saya biasa melakukan login ke server dalam mode root. Jika tidak login sebagai root, maka setiap perintah yang dijalankan di server harus diawali dengan perintah sudo.

Terima kasih.

Referensi :