He leído muchos tutoriales sobre como instalar nginx y php-fpm.
Sigo usando apache2 más que nada debido por la facilidad del archivo .htaccess que permite hacer uso de mod_rewrite y proteger las rutas con un password (así como usar otros módulos como mod_svn, etc)
No he encontrado una manera 100% transparente como ngninx, pero detallo lo que uso para trabajar con php-fpm y apache2. Pasos en debian:
echo "deb http://packages.dotdeb.org stable all" >> /etc/apt/sources.listapt-get updateapt-get install libapache2-mod-fastcgi apache2-mpm-worker php5-fpm php5-common php5-cli- hacer todo los
apt-getde todos los módulosphp5-*que quieras - Agregar lo siguiente a un nuevo archivo:
/etc/apache2/mods-enabled/fpm.loadAddType application/x-httpd-fastphp5 .php .phtml Action application/x-httpd-fastphp5 /fast-cgi-fake-handler
- en
/etc/php5/fpm/pool.d/www.confcambiar:listen = 127.0.0.1:9000
por:
; listen = 127.0.0.1:9000 listen = /var/run/php-fpm.socket
Esto habilitará el socket de unix que debe ser más eficiente
/etc/init.d/php-fpm restart/etc/init.d/apache2 restart
Con esto podrás usar php-fpm a través de una url “ficticia”: /fast-cgi-fake-handler si quieres cambiar tu archivo /etc/apache2/sites-enabled/000-default se vería de esta manera:
FastCGIExternalServer /var/www/fast-cgi-fake-handler -socket /var/run/php-fpm.socket DocumentRoot /var/www
El sistema cambiará la url /index.php por: /fast-cgi-fake-handler/index.php que será enviada a php-fpm mediante fastcgi
Esto tiene dos problemas:
- Necesitas especificar
FastCGIExternalServerde la forma${DOCUMENT_ROOT}/fast-cgi-fake-handleren todos tus hosts virtuales para que funcione - Zend framework y otros que utilicen el patron de consumir cualquier url y pasársela a un script
index.phpno funcionarán porque generarán un ciclo infinito; pero hay una solución sencilla en tu código.htaccessescribe después deRewriteEngine On:RewriteRule ^fast-cgi-fake-handler/ - [L,NC]
Esto evitará procesar todas las ligas que contengan “
fast-cgi-fake-handler” como su inicio; o claro puedes usarRewriteCondpara evitar esto.