Cara install Varnish

Karena bangun kepagian saya ada tambahan waktu luang untuk menyelesaikan hutang saya ke mas Aziz untuk instalasi Varnish. Kalau anda belum tahu saya jelaskan dulu. Varnish ini adalah HTTP Accelerator, fungsinya membuat cache dari halaman website dan langsung dilayankan ke pengunjung. Mirip plugin cache WordPress yang akan membuat halaman statis dari PHP yang dinamis, bedanya ini langsung dari web server dan tidak perlu melewati PHP. Jadi lebih efisien dan efektif.

Saya mendasarkan tutorialnya dengan stack LEMP (Linux, Nginx, MariaDB, dan PHP-FPM) standar pada CentOS 7. Ini supaya ada standarnya dan anda bisa mengikuti alurnya dengan mudah. 🙂

Catatan, kalau anda tidak mengikuti tutorial instalasi LEMP saya sebelumnya maka anda perlu menambahkan repository EPEL:

yum install epel-release

Kalau tidak ya tidak ketemu nanti paket aplikasi Varnish pada repositorynya.

Untuk menginstall Varnish atau paket aplikasi apapun yang ada di Linux itu jarang ada yang sulit, selama ada repositorynya. 😀 Langsung saja ketikkan perintah berikut:

yum install varnish

Yang diinstall adalah Varnish 4.0.3 saat saya tuliskan panduan ini:

varnishd (varnish-4.0.3 revision b8c4a34)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2014 Varnish Software AS

Jreng. Selesai. Haha. 😀

Nah… baru masuk ke yang susah, yaitu setting Varnish dan Nginx agar bekerja sama. Pertama kita ubah dulu agar Nginx aktif di port 8080, silahkan edit konfigurasinya:

nano /etc/nginx/nginx.conf

Kemudian cari dan ganti angka portnya dala blok server dari 80 menjadi 8080 seperti dibawah:

server {
	listen       8080;
        listen       [::]:8080;
        server_name  localhost;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

	error_page 404 /404.html;
            location = /40x.html {
        }

	error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
       }

Jadi cuma aktif pada koneksi dari dalam VPS itu sendiri (localhost) dan menggunakan port 8080. Jangan lupa cek setting virtual host default Nginx untuk hal yang sama dan kemudian restart:

systemctl restart nginx

Baru kita edit setting Varnish supaya mengambil konten ke Nginx:

nano /etc/varnish/default.vcl

Pastikan isinya seperti ini:

# Default backend definition. Set this to point to your content server.
backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

Setelah itu edit parameter Varnish:

nano /etc/varnish/varnish.params

Dan gantikan seperti berikut:

# Default address and port to bind to. Blank address means all IPv4
# and IPv6 interfaces, otherwise specify a host name, an IPv4 dotted
# quad, or an IPv6 address in brackets.
# VARNISH_LISTEN_ADDRESS=192.168.1.5
VARNISH_LISTEN_ADDRESS=192.168.1.5
VARNISH_LISTEN_PORT=80

Dimana kita membatasi agar Varnish hanya mendengarkan dari alamat IP servernya (jangan lupa diganti ya, yang diatas cuma contoh). Dan portnya diganti agar aktif di port 80.
Kita jalankan service Varnish:

systemctl enable varnish.service

Nah… momen yang kita tunggu telah datang. Tahu darimana kita bila Varnish telah aktif dan mengerjakan tugasnya dengan baik? Misal anda akses websitenya paling cuma terasa lebih cepat. Nah… anda bisa mengecek header respon HTTPnya:

curl -I http://192.168.1.5/

Tentunya gantikan alamat IP diatas dengan alamat IP VPS anda atau websitenya.

Akan mendapatkan balasan seperti ini:

HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Sat, 13 Feb 2016 23:07:37 GMT
Content-Type: text/html
Content-Length: 3700
Last-Modified: Tue, 26 Jan 2016 18:15:47 GMT
ETag: "56a7b7d3-e74"
X-Varnish: 12 3
Age: 69
Via: 1.1 varnish-v4
Connection: keep-alive

Yeah… Varnish telah aktif. 😀 Selamat mencoba! Saya sudah coba pada halaman default WordPress dan sukses juga dilayankan dari cache Varnish, response headernya mirip dengan yang diatas.

HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Sat, 13 Feb 2016 23:14:42 GMT
Content-Type: text/html
X-Powered-By: PHP/5.4.16
X-Varnish: 32783 32779
Age: 9
Via: 1.1 varnish-v4
Content-Length: 50724
Connection: keep-alive

Oh ya saya ingatkan lagi Varnish adalah HTTP Accelerator jadi koneksi HTTPS tidak didukung. Ini yang membuat saya menahan diri untuk memasangnya pada semua situs. Oh ya, kalau di Nginx ada Microcache yang satu prinsip fungsinya.

*Jadi pas hari Valentine saya bermesraan dengan mbak Varnish. Haha. 😀

8 Comments

  1. Thanks mas atas postingnya..
    tapi ada beberapa error dan statusnya blum aktif (curl -I host masih blum ada tulisan varnish)

    ini saya install di stack Centos 6.7 VestaCP
    sebelum install varnish saya install memcached.
    muncul msg error pada saat : restart nginx

    nginx: [emerg] bind() to 103.200.4.79:8080 failed (98: Address already in use)

    sepertinya bentrok port dgn httpd karna mengunakan port yang sama (8080)
    akhirnya saya ganti port di varnish menjadi 8081 dan akhirnya status varnish aktif

    tapi saat di check status varnish tidak ada.
    oia kalau mau jadi log varnish dimana ya?
    Thanks

    1. Saya tampung lagi mas ya. 😀 Ternyata untuk VestaCP masih perlu ada tambahan lagi langkah – langkahnya. Tidak masalah kok mas dikombinasikan dengan Memcached dan PHP OPcache karena tugas mereka berbeda, cuma namanya sama – sama cache saja.

      Sudah dicek di lokasi /var/log/varnish/ mas? Kadang untuk melihat log kita harus menginstruksikan Varnish agar menuliskan lognya mas. Tapi untuk melihat status saat ini bisa coba perintah varnishncsa atau varnishlog, informasinya didapat dari memori.

  2. Kepingin nyobain varnishnya mas, tapi takut gagal hehe..
    Mas candra ada tutor untuk varnish di vestacp with php-fpm?
    Kalau varnish di setup di vps yang berbeda bisa ga ya mas? Biar memory vps induk gak overload.

    1. Ternyata di VestaCP ini pakai PHP-FPM yang sedikit dimodifikasi mas, nama prosesnya sendiri jadi vesta-php kalau ga salah.

      Saya pernah coba Varnish dengan VestaCP dan karena masalah diatas gagal total. Masih belum riset lagi untuk penggabungannya.

      Untuk penyebaran Varnish bisa mas, saya belum ada kesempatan tes nyatanya pada website yang sudah pakai Varnish. Tapi kalau anda mau mencari tahu sendiri ini istilahnya HA (High Availibility) atau Load Balancing.

Tinggalkan Balasan ke khan Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *