J'essaie d'installer fast-cgi pour nginx sur une instance EC2. J'ai suivi les étapes expliquées aquí mais il est destiné à Debian et ne fonctionne pas directement sur un système basé sur Red Hat. J'ai modifié un peu le script pour qu'il ressemble à -
#!/bin/bash
### BEGIN INIT INFO
# Provides: php-fcgi
# Required-Start: $nginx
# Required-Stop: $nginx
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts php over fcgi
# Description: starts php over fcgi
### END INIT INFO
. /etc/rc.d/init.d/functions
(( EUID )) && echo .You need to have root priviliges.. && exit 1
BIND=/tmp/php.socket
USER=nginx
PHP_FCGI_CHILDREN=15
PHP_FCGI_MAX_REQUESTS=1000
PHP_CGI=/usr/bin/php-cgi
PHP_CGI_NAME=`basename $PHP_CGI`
PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"
RETVAL=0
start() {
echo -n "Starting PHP FastCGI: "
#ORIGINAL LINE
#daemon $PHP_CGI --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
#MODIFIED LINE
daemon --user=$USER $PHP_CGI -b $BIND&
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/php-fcgi
#echo "$PHP_CGI_NAME."
}
stop() {
echo -n "Stopping PHP FastCGI: "
killall -q -w -u $USER $PHP_CGI
RETVAL=$?
echo "$PHP_CGI_NAME."
rm /var/lock/subsys/php-fcgi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL
Le problème que j'ai maintenant est -
-
service php-fcgi start
garde le Shell bloqué. Si je lanceservice php-fcgi start &
et ensuiteps aux
Je vois le processus php-cgi en cours d'exécution lié au socket. Je vois la commande de démarrage s'arrêter uniquement lorsque j'exécuteservice php-fcgi stop
. Comment puis-je résoudre ce problème de blocage ? J'ai essayé d'ajouter un&
à la fin de la ligne qui lance le démon. Mais les autres scripts ne semblent pas faire cela. C'est le scripts le plus compliqué que j'ai essayé de modifier jusqu'à présent :-( - Comment faire pour que le script affiche le vert
[ OK ]
? J'ai vérifié scripts comme httpd et j'ai vu que tout ce qu'ils faisaient était quelque chose comme indiqué ci-dessous. Mais je ne vois jamais le vert[ OK ]
lorsque j'exécutephp-fcgi
. J'ai aussi découvert que mettreecho_success
confunctions
sourcé affiche le vert[ OK ]
mais je ne vois pas d'autres scripts dans le fichier/etc/rc.d/init.d/
exécution deecho_success
oecho_failure
. Qu'est-ce que j'ai fait de mal ? - Aussi, comment puis-je spécifier
PHP_FCGI_CHILDREN
condaemon
?
echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/