21 July 2015

Pasang Varnishd Tuk Percepat Akses Situs Anda

BismilLah.
Pada saat sebuah situs dikunjungi banyak orang, tentu si empunya merasa gembira karena konten situsnya diminati masyarakat luas. Nah di sisi lain, secara teknis, situs yang sibuk akan menyebabkan server bekerja lebih keras untuk dapat melayani semua pengunjung tanpa henti.

Beban kerja server yang tinggi selanjutnya memicu apache -sekaligus Database- menggunakan resource lebih banyak, baik pada CPU maupun Memori. Salah satu aplikasi yang dapat membantu meringankan pekerjaan apache tersebut adalah varnishd.

Ya, varnishd menjaga ketersediaan konten situs yang berulang-kali diakses oleh pengunjung, tanpa "merepotkan" apache lagi. Bagi pengunjung, mereka akan diberikan keuntungan akses yang lebih cepat untuk konten yang banyak diminati orang. Hal ini umumnya dikenal sebagai Caching HTTP Reverse Proxy.

Cara pemasangan:
1).Ambil saja kode sumber dan script kompilasi dari http://slackbuilds.org pada tautan berikut ini
Atau unduh saja paket binary-nya disini

2).Instalasikan paket tersebut dengan perintah (sebagai root) :
# installpkg varnish-2.1.5-i486-1_SBo.tgz

3).Aktifkan script varnishd dengan perintah:
# chmod 755 /etc/rc.d/rc.varnishd

4).Ubah konfigurasi default varnishd (di /etc/varnishd/default.vcl) sesuai dengan kebutuhan Anda, atau silakan utak-atik dari contoh konfigurasi berikut:

backend default {
     .host = "alamat IP Anda";
     .port = "8080"; #Arahkan port Apache ke sini
}

sub vcl_recv {
    remove req.http.X-Forwarded-For;
    set req.http.X-Forwarded-For = client.ip;
    set req.grace = 1h;
# Strip cookies for static files
    if (req.url ~ "\.(jpg|jpeg|gif|png|ico|css|pdf|txt|js|flv|swf|html|htm)$") {
       unset req.http.Cookie;
       return(lookup);
    }
    if (req.http.host ~ "^nama domain Anda ke-1(:[0-9]+)?$") {
    set req.backend = default;
    } else if (req.http.host ~ "^nama domain Anda ke-2(:[0-9]+)?$") {
    set req.backend = default;
    }
   if (req.request != "GET" &&
       req.request != "HEAD" &&
       req.request != "PUT" &&
       req.request != "POST" &&
       req.request != "TRACE" &&
       req.request != "OPTIONS" &&
       req.request != "DELETE") {
         /* Non-RFC2616 or CONNECT which is weird. */
         return (pipe);
    }
    if (req.request != "GET" && req.request != "HEAD") {
         /* We only deal with GET and HEAD by default */
         return (pass);
    }
    if (req.http.Authorization || req.http.Cookie) {
         /* Not cacheable by default */
         return (pass);
    }
    return (lookup);
# Handle compression correctly. Different browsers send different
# "Accept-Encoding" headers, even though they mostly all support the same
# compression mechanisms. By consolidating these compression headers into
# a consistent format, we can reduce the size of the cache and get more hits.
# @see: http:// varnish.projects.linpro.no/wiki/FAQ/Compression
if (req.http.Accept-Encoding) {
  if (req.http.Accept-Encoding ~ "gzip") {
    # If the browser supports it, we'll use gzip.
    set req.http.Accept-Encoding = "gzip";
  }
  else if (req.http.Accept-Encoding ~ "deflate") {
    # Next, try deflate if it is supported.
    set req.http.Accept-Encoding = "deflate";
  }
  else {
    # Unknown algorithm. Remove it and send unencoded.
    unset req.http.Accept-Encoding;
  }
 }
}

sub vcl_fetch {
  # Allow items to be stale if needed.
  set beresp.grace = 6h;
}

sub vcl_pipe {
    set bereq.http.connection = "close";
    return (pipe);
}

sub vcl_deliver {
# We'll be hiding some headers added by Varnish.
        remove resp.http.X-Varnish;
        remove resp.http.Via;
        remove resp.http.Age;
# We'd like to hide headers. Nobody has to know
# we can run PHP and have version xyz of it.
        remove resp.http.X-Powered-By;
}


5).Jalankan daemon varnishd dengan perintah:
# /etc/rc.d/rc.varnishd start

6).Oh ya, agar Apache Anda dapat diakselerasikan, sila ubah port-nya agar mengarah ke 8080. Periksa konfigurasi Apache di /etc/httpd/httpd.conf pada baris ke-52. Sebagai root, ubah dari aslinya "Listen 80" menjadi "Listen 8080", lalu jangan lupa restart Apache.

7).Silakan periksa (sebagai user) akselerasi yang berhasil Anda capai dengan perintah:
$ varnishstat

Semoga bermanfaat untuk Anda semua... pemilik dan admin server situs :-)

No comments:

Post a Comment

Sila tinggalkan komentar/pesan dg kalimat santun, sederhana dan jelas.