Beberapa waktu yang lalu saya melakukan upgrade modul PHP di VPS yang saya gunakan untuk “merumahkan” fazar.net. Upgrade dilakukan di VPS dengan OS Debian (webserver nginx) dan menggunakan apt-get upgrade. Setelah modul-modul PHP tersebut di upgrade, ternyata muncul error “502 – Gateway Timeout”, alhasil blog ini tidak dapat di akses sama sekali.
Setelah memeriksa lebih jauh file error log yang di generate oleh nginx, terdapat baris seperti ini :
08:59:19 [crit] 29703#0: *262 connect() to unix:/dev/shm/php.socket failed (13: Permission denied) while connecting to upstream, client: 110.139.***.***, server: www.fazar.net, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php.socket:", host: "www.fazar.net
Wah, ternyata si nginx tidak dapat menghubungi PHP socket milik php5-fpm.
Setelah muter-muter di google, akhirnya saya mendapatkan petunjuk bahwa, hal yang demikian bisa terjadi karena ownership php.socket telah berubah, sehingga user atau group dari nginx (dalam hal ini www-data) tidak dapat mengaksesnya.
Untuk mengatasinya, silakan cek user/group dari nginx dengan menggunakan “ps aux | grep nginx”
# ps aux | grep nginx root 470 0.0 0.4 29492 1212 ? Ss Aug20 0:00 nginx: master process /usr/sbin/nginx www-data 473 0.1 2.4 33004 6360 ? S Aug20 1:21 nginx: worker process www-data 474 0.0 0.5 29628 1460 ? S Aug20 0:00 nginx: cache manager process root 7136 0.0 0.2 1776 576 pts/0 S+ 10:14 0:00 grep nginx
Cek juga ownership dari php.socket nya (nama socket php dan path nya mungkin berbeda-beda, sesuai dengan setting masing-masing)
# ls -al /dev/shm/php.socket srw-rw---- 1 root root 0 Aug 18 09:11 /dev/shm/php.socket
php.socket nya di miliki oleh root, dan kemungkinan besar ini yang mengakibatkan error 502 Gateway Timeout. Yang perlu kita lakukan adalah mengatur agar php5-fpm membuat php.socket dengan akses/ownership www-data. Silakan edit file konfigurasi php5-fpm sobat menjadi seperti ini (dalam contih kasus saya, file konfigurasi php5-fpm terdapat di /etc/php5/fpm/pool.d/www-data.conf):
[www-data] listen = /dev/shm/php.socket user = www-data group = www-data listen.owner = www-data listen.group = www-data listen.mode = 0660
Next, lakukan restart php5-fpm.
/etc/init.d/php5-fpm restart
Periksa kembali ownership php.socket
# ls -al /dev/shm/php.socket srw-rw---- 1 www-data www-data 0 Aug 18 09:18 /dev/shm/php.socket
Nah, kalo udah seperti diatas (ownership sudah fix), lakukan restart nginx agar perubahan yang dilakukan benar-benar bisa dijalankan dengan baik.
/etc/init.d/nginx restart
Voila~ akhirnya blog kecil ini bisa di akses dengan lancar jaya! :)
Semoga catatan kecil ini bisa membantu sobat yang “tersesat” ke blog ini setelah googling untuk memecahkan permasalahan yang sama.
Wow! You have save my one day time for this Nginx tips..
Thanks bro !