
Saya mencoba install NGINX dan php-cgi di distro linux "CRUX". Ternyata config bawaannya yaitu /etc/nginx/nginx.conf belum disesuaikan agar bisa langsung bisa dijalankan.
Konfigurasi bawaannya seperti ini:
location ~ \.php$ { root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
Sedangkan untuk script wrapper php-cgi bawaan yaitu /etc/rc.d/php-fcgi seperti ini:
#!/bin/sh
#
# /etc/rc.d/php-fcgi: start/stop FastCGI php daemon
#
SSD=/sbin/start-stop-daemon
PROG=/usr/bin/php-cgi
PID=/var/run/php-fcgi.pid
PORT="127.0.0.1:8000"
# PORT="/tmp/php_fcgi.sock"
OPTS="-b $PORT"
USR=www
COUNT=8
case $1 in
start)
export PHP_FCGI_CHILDREN=$COUNT
$SSD --start -bm --chuid $USR --pidfile $PID --exec $PROG -- $OPTS
;;
stop)
$SSD --stop --remove-pidfile --retry 10 --pidfile $PID
;;
restart)
$0 stop
$0 start
;;
status)
$SSD --status --pidfile $PID
case $? in
0) echo "$PROG is running with pid $(cat $PID)" ;;
1) echo "$PROG is not running but the pid file $PID exists" ;;
3) echo "$PROG is not running" ;;
4) echo "Unable to determine the program status" ;;
esac
;;
*)
echo "usage: $0 [start|stop|restart|reload|status]"
;;
esac
# End of file
Disitu bisa dilihat bahwa baik di config NGINX (baris 3) yaitu fastcgi_pass, maupun script php-fcgi (baris 9), sama-sama dikonfigurasikan untuk TCP/IP bukan socket. Tetapi ada perbedaan port, yaitu 9000 dan 8000. Nah, untuk itu saya memutuskan untuk tidak mengotak-atik script di /etc/rc.d, dan akhirnya saya ubah nginx.conf menjadi:
location ~ \.php$ { fastcgi_pass 127.0.0.1:8000;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
Setelah itu saya jalankan keduanya, oh ya di CRUX tidak pake systemd jadi caranya seperti ini:
# /etc/rc.d/php-fcgi start
# /etc/rc.d/nginx start
Ternyata masalah tidak selesai disini, di browser hanya menampilkan:
"No input file specified."
Lalu saya perbaiki path SCRIPT_FILENAME, dan akhirnya config berikut ini bisa berjalan dengan baik:
location ~ \.php$ { fastcgi_pass 127.0.0.1:8000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Cara lain, bagian include yang diubah, dan akan menjadi:
location ~ \.php$ { fastcgi_pass 127.0.0.1:8000;
include fastcgi.conf;
}
fastcgi_params dan fastcgi.conf adalah file config di directory /etc/nginx, yang bisa di-include. Jika fastcgi.conf yang digunakan, tidak perlu lagi menambahkan parameter untuk SCRIPT_FILENAME karena sudah ada disana. Berikut perbandingannya:

#Server