nginx + PHP en Debian (+ W3TC)

nginx es un servidor web rápido que también puede ser utilizado como proxy inverso o para la transmisión de videos en Flash. Originalmente desarrollado para los requisitos de un motor de búsqueda ruso, cada vez más proyectos web también se basan en nginx. A diferencia del conocido servidor web Apache, la configuración de nginx en Debian no es tan simple - los archivos todavía tienen que ser adaptados a mano. Este artículo describe los cambios básicos necesarios para hacer que PHP5 funcione bajo Debian con Xcache como integración FastCGI. Los ajustes que se muestran siempre deben adaptarse a su entorno.

Instalación
El siguiente comando instalará los paquetes apropiados:

apt-get install php5-cgi php5-xcache php5-mysql nginx

En nuestro caso el servidor mysql se encuentra en un servidor diferente, de lo contrario el paquete correspondiente tendría que ser instalado adicionalmente. El siguiente paso es establecer el nginx, donde mantenemos el estándar de Debian. Con el comando

/etc/init.d/nginx start

se comprueba si la configuración funciona hasta aquí y el servidor web se inicia correctamente.

Configuración

Si este es el caso, aún deben hacerse algunos ajustes a la configuración de PHP para el host respectivo (el host por defecto está configurado en "/etc/nginx/sites-available/default").

ubicación ~ \ ~ - php$ {\a6} {\a6}
fastcgi_pass 127.0.0.1:9000; #php se ejecuta en el localhost, puerto 9000
#fastcgi_index index.php; # no es necesario para esta configuración
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; # define el directorio
incluyen /etc/nginx/fastcgi_params;
}

El fastcgi_params, que es creado por Debian bajo /etc/nginx, también necesita algunos cambios. Las siguientes líneas deben ser comentadas:

#fastcgi_param SCRIPT_NAME $document_root$fastcgi_script_name;

Ahora el php-cgi puede iniciarse solo para ver si todo funciona:

php-cgi -b 127.0.0.1:9000

Un archivo php-info en /var/www debería ahora devolver información sobre la instalación de PHP. Si aparece el mensaje "no se ha especificado ningún archivo de entrada" todavía hay algo mal en los directorios. Si todo funciona, el script de inicio php-cgi puede ser descargado desde Nginx Wiki y los ajustes en el XCache etc. deben hacerse. Los directorios de carga también deben ser protegidos como se describe en el Wiki, para que PHP no pueda ser ejecutado allí.

Pronto continuaremos aquí con redirecciones bajo Nginx y URLs de texto plano con WordPress (como este blog ya las usa).

Para WordPress, hay un muy buen plugin llamado W3TC, que provee/activa diferentes mecanismos que aceleran significativamente la entrega de WordPress. Este plugin también funciona con nginx, pero la configuración de reescritura tiene que ser ajustada (W3TC proporciona información sobre esto). "Minimizar" para CSS y JS ha causado que algunos gráficos de esta página no se carguen - la solución de problemas sigue en marcha, pero hasta entonces todavía hay una ventaja de velocidad significativa. Apache Bench muestra los valores correspondientes, que se ven bastante bien para un vServer:

Solicitudes completas: 1500
Solicitudes por segundo: 91,20 [#/segundo] (media)
Tiempo por solicitud: 10.965 [ms] (media)
Tasa de transferencia: 4084,89 [Kbytes/seg] recibidos

Veré en los próximos días si se puede optimizar más.

Deje una respuesta

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *