En esta tercera parte voy a incluir los ficheros que he escrito para levantar los servicios de nginx y FastCGI al arrancar el sistema en Red Hat o en CentOS.
Lo primero he incluido un fichero en /usr/bin llamado phpfcgi basado en la configuración que muestran en este howto.
El contenido del fichero es el siguiente:
spawn-fcgi -f /opt/php/bin/php-cgi -s /tmp/fcgi.sock -u apache -C 50 -P "/var/run/phpfcgi.pid"
En este fichero simplemente indicamos cómo arrancamos php-cgi, que se cree un socket de unix, con qué usuario deben correr las instancias, el número de instancias y el pid que se debe crear.
Después me he basado en el fichero de arranque de lighttpd, y convenientemente modificado he escrito estos dos ficheros, el primero es para el arranque de nginx, y el segundo para el arranque de FastcGI. Si nginx no está arrancado, el segundo no arranca
Este es el fichero para arrancar nginx:
#!/bin/sh
#
# nginx Startup script for the nginx server
#
# chkconfig: - 85 15
# description: Nginx fast webserver with light system requirements
#
# processname: nginx
# config: /user/local/nginx/conf/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/ngnix.pid
#
# Note: pidfile is assumed to be created
# by nginx (config: server.pid-file).
# If not, uncomment 'pidof' line.
# Source function library
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/nginx ]; then
. /etc/sysconfig/nginx
fi
if [ -z "$NGINX_CONF_PATH" ]; then
NGINX_CONF_PATH="/usr/local/nginx/conf/nginx.conf"
fi
prog="nginx"
nginx="/usr/local/nginx/sbin/nginx"
RETVAL=0
RETVAL1=0
start() {
echo -n $"Starting $prog: "
daemon $nginx
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc $nginx
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
return $RETVAL
}
reload() {
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
condrestart)
if [ -f /var/lock/subsys/$prog ]; then
stop
start
fi
;;
reload)
reload
;;
status)
status $nginx
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|reload|status}"
RETVAL=1
esac
exit $RETVAL
Y para FastCGI:
#!/bin/sh
#
# fastcgi Startup script for the fastcgi server
#
# chkconfig: - 87 15
# description: start fastcgi
#
# processname: phpfcgi
# config: /etc/sysconfig/phpfcgi
# pidfile: /var/run/phpfcgi.pid
#
# Note: pidfile is assumed to be created
# by fastcgi (config: server.pid-file).
# If not, uncomment 'pidof' line.
# Source function library
. /etc/rc.d/init.d/functions
prog="phpfcgi"
phpfcgi="/usr/bin/phpfcgi"
RETVAL=0
[ -e /var/run/nginx.pid ] || exit 0
start() {
echo -n $"Starting $prog: "
daemon $phpfcgi
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc $phpfcgi
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
condrestart)
if [ -f /var/lock/subsys/$prog ]; then
stop
start
fi
;;
reload)
stop
start
;;
status)
status $phpfcgi
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|reload|status}"
RETVAL=1
esac
exit $RETVAL
En fin, supongo que podría darle más vueltas, pero estos dos funcionan, ahora simplemente hay que añadirlos al arranque con chkinstall y cuidar de que no se arranque apache también.Primera parte, Segunda parte, Tercera parte, Cuarta parte
Pero es tan bueno este nginx?, yo he visto por ahí que lighttpd se utiliza bastante
ResponderEliminarYo he utilizado el lighttpd, y el principal problema que encontraba es que no me escribía entradas en log de error de los ficheros no encontrados, incluso activando el debug-404. Puse un post en los foros oficiales y nadie me responde.
ResponderEliminarAdemás dice la gente por ahí que tiene bastantes leaks de memoria.
Lo que llevo utilizando nginx no me ha dado ningún problema