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.
1 | nano /etc/nginx/sites-available/default |
Blok location hhvm|php
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.
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
1 | curl -I http://IP_Server |
atau
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.
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
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.
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.
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
1 | sudo apt-get install ps-watcher |
Edit file konfigurasi /etc/ps-watcher.conf
1 | sudo nano /etc/ps-watcher.conf |
Isi dengan kode berikut. Jika proses hhvm tidak ditemukan maka jalankan perintah restart service hhvm.
1 2 3 | [hhvm] occurs = none action = service hhvm restart |
Edit file /etc/default/ps-watcher. Lepas tanda hash (#) pada startup=1.
1 | sudo nano /etc/default/ps-watcher |
Jalankan service ps-watcher
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