Hace no mucho hice el cambio de apache a Nginx en un servidor. La impresión general es del todo favorable. Aunque no era un servidor especialmente cargado, sí que en temas de memoria he podido apreciar que tengo mas espacio disponible para otras cosas.
Vamos por pasos. Lo primero, es ponerse el repositorio de Nginx. Tenemos un repositorio estable y otro de desarrollo.
Si queremos el repositorio de nginx estable:
sudo su -
echo "deb http://ppa.launchpad.net/nginx/stable/ubuntu lucid main" >> /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
apt-get update
apt-get install nginx
Si queremos el repositorio de nginx de desarrollo:
sudo su -
echo "deb http://ppa.launchpad.net/nginx/development/ubuntu lucid main" >> /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
apt-get update
apt-get install nginx
Para poner php5-fpm, tenemos 2 opciones. el paquete php5-fpm estará ya disponible para descarga en Maverick Merkaat (Ubuntu 10.10). Si no, siempre podremos usar los repositorios de dotdeb e instalarlo:
sudo su - echo "deb http://php53.dotdeb.org stable all" >> /etc/apt/sources.list apt-get update apt-get install php5-cli php5-common php5-suhosin php5-fpm php5-cgi
Ahora editamos la configuración inicial del primer host de Nginx, en /etc/nginx/sites-available/default
server { listen 80 default; server_name localhost aaa.bbb.ccc.ddd; access_log /var/log/nginx/access.log;## Raiz del sitio location / { root /var/www; index index.php; } ## Tratamiento especial para algunos archivos estaticos location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ { access_log off; expires 30d; root /var/www; } ## Con esto procesamos los php de /var/www location ~ .php$ { fastcgi_split_path_info ^(.+.php)(.*)$; fastcgi_pass backend; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } ## Cortar el acceso a .htaccess y .htpassword location ~ /.ht { deny all; } } upstream backend { server 127.0.0.1:9000; }
OJO: la directiva default después del puerto de escucha indica que es el vhost al que se acudirá en ausencia de configuración válida. Esto significa que, si de todos los vhost que tengamos configurados, ninguno coincide con el server_name, será éste el que se sirva.
Una vez configurado el host, escribimos algo de codigo php en el raiz del sitio en/var/www/index.php
y reiniciamos Nginx y php5-fpm:
sudo su - service nginx restart; service php5-fpm restart;
Debemos tener en cuenta que Nginx dispone de una acción configtest en su script de inicio de init.d, que nos permitirá validar los cambios antes de aplicarlos. (Esto será muy útil al principio hasta que terminemos de hacernos a la nueva sintaxis de configuración de Nginx)