Introducción.
Desde hace un tiempo había decidido probar otros servidores de páginas diferentes de Apache en busca de uno que consumiera menos recursos, especialmente para la etapa de desarrollo. Después de una revisión a la oferta de servidores web y a los comentarios encontrados en los foros los mas opcionados son: Nginx, Cherokee y Lighttpd. En esta ocasión estoy probando al primero de ellos.
Instalar los paquetes necesarios.
$ sudo aptitude install php5-cgi php5-cli php5-common php5-curl php5-gd php5-json php5-mcrypt php5-sqlite php5-mysql
$ sudo aptitude install spawn-fcgi
$ sudo aptitude install nginx
Crear un directorio para el virtualhost.
En este caso se va a utilizar el sitio web por defecto (default) y se va a ubicar en /home/www/public, los virtualhosts adicionales se crean siguiendo los mismos pasos.
$ sudo mkdir -p /home/www/public
$ sudo mkdir /home/www/logs
$ sudo chown -R www-data:www-data /home/www
Establecer la configuración del virtualhost.
$ sudo vi /etc/nginx/sites-available/default
server {
listen 80 default;
server_name localhost;
access_log /home/www/logs/localhost.access.log;
location / {
root /home/www/public;
index index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/public/$fastcgi_script_name;
include fastcgi_params;
}
}Tenga en cuenta que las rutas asignadas a las variables access_log, root y fastcgi_param se relacionan con los directorios creados en el paso anterior.
Activar el virtualhost.
En este caso se utiliza el sitio por defecto, sin embargo pueden crearse nuevos simplemente utilizando un nombre diferente para el enlace.
$ sudo /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
Crear un recubrimiento para spawn-fcgi.
$ sudo vi /etc/init.d/php-fastcgi
#!/bin/bash
BIND=127.0.0.1:9000
USER=www-data
PHP_FCGI_CHILDREN=5 #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: "
start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS
RETVAL=$?
echo "$PHP_CGI_NAME."
}
stop() {
echo -n "Stopping PHP FastCGI: "
killall -q -w -u $USER $PHP_CGI
RETVAL=$?
echo "$PHP_CGI_NAME."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: php-fastcgi {start|stop|restart}"
exit 1
;;
esac
exit $RETVAL$ sudo chmod +x /etc/init.d/php-fastcgi
Iniciar manualmente los servicios.
$ sudo /etc/init.d/nginx start
$ sudo /etc/init.d/php-fastcgi start
Configurar el inicio automático de los servicios (opcional).
$ sudo update-rc.d nginx defaults
$ sudo update-rc.d php-fastcgi defaults
Probar el servicio.
$ vi /home/www/public/test.php
<?php phpinfo(); ?>
Acceder a la página web http://localhost/test.php desde el equipo local.