octubre
2008
Compilar y configurar nginx con php
Escribo esta pequeña guía porque soy muy malo para recordar las cosas y esto podría ayudarme en futuras instalaciones, si a alguien mas le ayuda entonces perfecto.
Nginx es un servidor web de alto rendimiento, ocupa menos recursos que apache y otros servidores web que he probado, incluyendo Lighttpd.
Queremos tener LnMP (nginx por Apache) funcionando, para ello es necesario tener php corriendo como FastCGI:
Requerimientos:
- nginx (la última versión es la 0.6.32)
- MySQL instalado
- PHP instalado como cgi
- Lighttpd compilado (necesitamos solo un archivo, spawn-fcgi)
La instalación es muy sencilla, basta hacer lo clásico compilar e instalar:
mkdir /tmp/nginx && cd /tmp/nginx wget http://sysoev.ru/nginx/nginx-0.6.32.tar.gz tar -zxvf nginx-0.6.32.tar.gz cd nginx-0.6.32 ./configure make sudo make install #aqui puede usarse su -c make install o depende de la distribución de linux instalada. cd .. wget http://www.lighttpd.net/download/lighttpd-1.4.20.tar.gz tar -zxvf lighttpd-1.4.20.tar.gz cd lighttpd-1.4.20 ./configure make sudo mkdir -p /opt/bin sudo cp src/spawn-fcgi /opt/bin/ #procedemos a instalar PHP/cgi, este paso puede omitirse si ya se tiene instalado cd .. wget http://www.php.net/get/php-5.2.6.tar.bz2/from/this/mirror tar -jxvf php-5.2.6.tar.bz2 cd php-5.2.6 ./configure --prefix=/opt --with-config-file-path=/opt/etc --enable-force-cgi-redirect --enable-fastcgi # ... mas opciones make sudo make install
La instalación de nginx queda por defecto en /usr/local/nginx/ y de php en modo cgi en /opt/. Ahora pasamos a la parte de configuración, para levantar a php ejecutamos la siguiente orden, esto claro se puede poner en algun script de inicio para que el servidor lo levante, o podemos simplemente añadirlo a /etc/rc.local o algun script que se ejecute cuando se reinicia el servidor.
/opt/bin/spawn-fcgi -a 127.0.0.1 -p 8000 -u lj -f /opt/bin/php-cgi
Esto levantará a PHP en el puerto 8000, pero claro se puede cambiar. Ahora configuramos las opciones por defecto de nginx, suponiendo que nuestro webserver estará en /var/www entonces editamos nuestra configuración de nginx que por defecto está en /usr/local/nginx/conf/nginx.conf:
user apache;
worker_processes 2;
error_log logs/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen example.org:80;
server_name example.org;
root /var/www;
index index.php;
location ~ .php$ {
fastcgi_pass 127.0.0.1:8000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
}
}
}
La configuración como se ve, es muy sencillita, ahora solo para probar que efectivamente no tiene errores, ejecutamos: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
Y ya para ejecutarlo:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
Con esto tendríamos nuestro servidor trabajando y con menos recursos utilizados que apache (mucho menos), yo lo he probado en varios servidores (incluyendo el servidor de media de el siglo de Torreón e ymipollo) y funciona excelente.
Se pueden tener configuraciones mas avanzadas, tener varios servidores virtuales ejecutandose, hacer uso de expresiones regulares para el módulo similar a mod_rewrite de Apache, etc., pero eso será otro tema.
Suerte.
Escuchando: Cama y mesa
Tres comentarios ]
del.icio.us Estrella este post
Entradas relacionadas:
Han escrito 3 comentarios de «Compilar y configurar nginx con php»
presu
Lunes 27 de octubre, 2008 19:35.-
ay no manches! como voy a poder configurar eso, si ni siquiera puedo pronunciarlo: enjins, enmyink, ingyinss
chale me rindo!

ToRo
Lunes 27 de octubre, 2008 19:36.-
aquí está la documentación original: http://sysoev.ru/nginx/ (en ruso) jaja. También hay un wiki en inglés, pero aquí puse resumido lo que yo he hecho y que ha funcionado.

Gaia
Martes 28 de octubre, 2008 11:29.-
sudo, make jaja.. saludos.

