Cara Konfigurasi PHP-FPM Sebagai Backup HHVM di Nginx

Tutorial kali ini akan membahas bagaimana cara konfigurasi PHP-FPM berjalan secara otomatis sebagai backup jika HHVM bermasalah atau down pada web server Nginx. Untuk mengikuti tutorial ini Nginx, HHVM, dan PHP-FPM sudah harus terinstall dengan baik.

-Konfigurasi Nginx-

Edit file */etc/nginx/sites-available/default*.

[INPUT]

1 nano /etc/nginx/sites-available/default

Blok *location hhvm|php*

[INPUT]

1 2 3 4 5 6 7 location ~ \.(hh|php)$ {     fastcgi_keep_conn on;     fastcgi_pass   127.0.0.1:9000;     fastcgi_index  index.php;     fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;     include        fastcgi_params; }

Agar PHP-FPM berjalan sebagai backup, ubah blok *location hh|php* dan tambahkan blok *location @fpm*.

[INPUT]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 location ~ \.(hh|php)$ {   fastcgi_intercept_errors on;   error_page 502 = @fpm;   fastcgi_keep_conn on;   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 @fpm {   try_files $uri $uri/ /index.php;   fastcgi_split_path_info ^(.+\.php)(/.+)$;   fastcgi_pass unix:/var/run/php5-fpm.sock;   fastcgi_index index.php;   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   include fastcgi_params; }

Ketika terjadi *error_page 502* akan mengarah ke *location @fpm*.

-Pengujian-

Kondisi Normal

Jalankan perintah berikut ini

[INPUT]

1 curl -I http://IP_Server

atau

[INPUT]

1 curl -I http://namadomain.ext

Jika file PHP dieksekusi oleh HHVM tampil pesan seperti di bawah ini. Terdapat tulisan *X-Powered-By: HHVM/3.18.3*.

[INPUT]

1 2 3 4 5 6 7 HTTP/1.1 200 OK Server: nginx/1.4.6 (Ubuntu) Date: Sat, 17 Jun 2017 06:36:23 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Powered-By: HHVM/3.18.3 Vary: Accept-Encoding

Kondisi HHVM down

Hentikan service HHVM

[INPUT]

1 service hhvm stop

Jalankan kembali perintah *curl*. Jika PHP-FPM berhasil dijalankan sebagai backup tampil tulisan *X-Powered-By: PHP/5.5.9-1ubuntu4.21*.

[INPUT]

1 2 3 4 5 6 HTTP/1.1 200 OK Server: nginx/1.4.6 (Ubuntu) Date: Sat, 17 Jun 2017 06:40:11 GMT Content-Type: text/html Connection: keep-alive X-Powered-By: PHP/5.5.9-1ubuntu4.21

Namun jika HHVM dan PHP-FPM tidak berjalan maka tampil pesan error 502.

[INPUT]

1 2 3 4 5 6 HTTP/1.1 502 Bad Gateway Server: nginx/1.4.6 (Ubuntu) Date: Sat, 17 Jun 2017 06:41:10 GMT Content-Type: text/html Content-Length: 181 Connection: keep-alive

-Merestart service HHVM secara otomatis-

Service HHVM dapat direstart secara otomatis dengan menggunakan aplikasi ps-watcher. Aplikasi ini akan memonitor proses dan menjalankan perintah jika terjadi kondisi tertentu.

Install ps-watcher

[INPUT]

1 sudo apt-get install ps-watcher

Edit file konfigurasi /etc/ps-watcher.conf

[INPUT]

1 sudo nano /etc/ps-watcher.conf

Isi dengan kode berikut. Jika proses hhvm tidak ditemukan maka jalankan perintah restart service hhvm.

[INPUT]

1 2 3 [hhvm] occurs = none action = service hhvm restart

Edit file /etc/default/ps-watcher. Lepas tanda hash (#) pada startup=1.

[INPUT]

1 sudo nano /etc/default/ps-watcher

Jalankan service ps-watcher

[INPUT]

1 sudo service ps-watcher start

Secara default ps-watcher akan mengecek proses setiap 150 detik. Durasi waktunya dapat diubah melalui file /etc/default/ps-watcher pada opsi DAEMON_OPTS=”–sleep 150″.

selamat mencoba 🙂

referensi: bjornjohansen.non

Leave a Reply

Your email address will not be published.