How to Setup Shared Hosting with Nginx HHVM Redis Varnish

Memilih Shared Hosting yang Sesuai

Sebelum memulai proses setup, pastikan hosting yang dipilih mendukung Nginx, HHVM, Redis dan Varnish. Beberapa hosting yang memenuhi kriteria tersebut antara lain DigitalOcean, Linode, dan Vultr. Namun, masing-masing hosting memiliki kelebihan dan kekurangan tersendiri. Oleh karena itu, lakukan riset terlebih dahulu sebelum memilih hosting yang sesuai.

Setelah memilih hosting, langkah selanjutnya adalah melakukan instalasi sistem operasi yang akan digunakan. Sebaiknya gunakan OS yang didukung oleh Nginx, HHVM, Redis, dan Varnish seperti Ubuntu atau Debian. Pastikan juga memiliki hak akses root untuk melakukan instalasi paket-paket yang dibutuhkan.

Jika sudah memenuhi persyaratan tersebut, maka langkah selanjutnya adalah melakukan instalasi Nginx, HHVM, Redis, dan Varnish. Ikuti panduan instalasi yang disediakan oleh masing-masing paket untuk memastikan instalasi berjalan dengan lancar.

Konfigurasi Nginx

Setelah berhasil melakukan instalasi Nginx, maka langkah selanjutnya adalah melakukan konfigurasi. Buka file konfigurasi Nginx pada direktori /etc/nginx/sites-available/ dan ubah konfigurasi default menjadi seperti berikut:

server {listen 80 default_server;listen [::]:80 default_server;root /var/www/html;index index.html index.htm index.nginx-debian.html;server_name _;location / {try_files $uri $uri/ =404;}location ~ .php$ {include snippets/fastcgi-php.conf;fastcgi_pass unix:/run/php/php7.1-fpm.sock;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}

Setelah itu, buat file konfigurasi baru untuk setiap website yang akan di-hosting. Contoh konfigurasi untuk website mywebsite.com:

server {listen 80;server_name mywebsite.com www.mywebsite.com;root /var/www/mywebsite.com;index index.php;access_log /var/log/nginx/mywebsite.com.access.log;error_log /var/log/nginx/mywebsite.com.error.log;location / {try_files $uri $uri/ /index.php?$args;}location ~ .php$ {fastcgi_pass unix:/var/run/hhvm/hhvm.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {expires max;log_not_found off;access_log off;add_header Cache-Control "public";}}

Setelah konfigurasi selesai, jangan lupa untuk menjalankan perintah Nginx -t untuk memastikan konfigurasi tidak ada kesalahan dan Nginx -s reload untuk menerapkan konfigurasi yang baru.

Konfigurasi Redis dan Varnish

Setelah melakukan konfigurasi Nginx, selanjutnya adalah melakukan konfigurasi Redis dan Varnish. Redis digunakan sebagai cache database, sedangkan Varnish digunakan sebagai cache HTTP.

Untuk melakukan konfigurasi Redis, buka file konfigurasi Redis pada direktori /etc/redis/redis.conf dan ubah konfigurasi seperti berikut:

maxmemory 256mbmaxmemory-policy allkeys-lru

Setelah itu, jalankan perintah Redis-server untuk menjalankan Redis.

Untuk melakukan konfigurasi Varnish, buka file konfigurasi Varnish pada direktori /etc/varnish/default.vcl dan ubah konfigurasi seperti berikut:

backend default {.host = "127.0.0.1";.port = "8080";}sub vcl_recv {if (req.method == "PURGE") {if (!client.ip ~ purge) {return (synth(405, "Method not allowed"));}return (purge);}if (req.http.Authorization || req.http.Cookie) {return (pass);}return (hash);}sub vcl_hit {if (req.http.Cache-Control ~ "no-cache") {return (pass);}return (deliver);}sub vcl_miss {return (fetch);}sub vcl_fetch {if (beresp.status == 404 || beresp.status >= 500) {set beresp.ttl = 0s;return (hit_for_pass);}if (req.http.Cache-Control ~ "no-cache") {return (pass);}set beresp.ttl = 24h;set beresp.grace = 1h;return (deliver);}

Setelah itu, jalankan perintah Varnishd -f /etc/varnish/default.vcl -s malloc,256m -a :80 untuk menjalankan Varnish.

Kesimpulan

Setelah melakukan konfigurasi Nginx, HHVM, Redis, dan Varnish, website yang di-hosting akan lebih cepat dan responsif. Hal ini tentunya akan membantu meningkatkan rangking di Mesin Pencari Google dan memberikan pengalaman yang lebih baik bagi pengunjung website.