Mise en place de Nginx comme serveur web
Nginx est plutôt simple à configurer pour servir des fichiers statiques. Seul bug, un problème entre Firefox et les fichiers xslt : sa correction.
Configurer des sites dynamiques
Pour les sites dynamiques, Nginx se contente de faire proxy vers un processus fcgi déjà existant. Il faut donc démarrer et gérer (redémarrer en cas de crash...) ces processus en dehors de Nginx. Une manière simple est d'utiliser supervisord (et gunicorn pour les programmes Python).
Configurer un site en php
Lancer un interpréteur php pour l'utilisateur en question (configuration pour supervisord, utilisant php5-fcgi, et sans spawn-fcgi).
/etc/supervisor/conf.d/<user>_php.conf:
[fcgi-program:<user>_php] socket=tcp://127.0.0.1:<PORT> command=/usr/bin/php5-cgi numprocs=1 process_name=%(program_name)s_%(process_num)02d user=<user> group=www-data autorestart=true startsecs=1 startretries=3 stopsignal=QUIT stopwaitsecs=10 redirect_stderr=true stdout_logfile=/var/www/<user>/log/php5-cgi.log stdout_logfile_maxbytes=10MB
Configuration de Nginx pour exécuter les scripts PHP :
location ~ \.php$ { fastcgi_pass 127.0.0.1:<PORT>; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /var/www/<user>/<root>/$fastcgi_script_name; }
Problème de lenteur pour certains scripts PHP
Il s'avère que les scripts en question utilisent PostgreSQL. Dans la configuration, il faut utiliser 127.0.0.1 au lieu de localhost (problème de résolution IPv6 ?)
Compiler nginx avec l'authentification via pam
(source)
# Get the source apt-get source nginx # Copy the module NGINX_DEBIAN=$(ls -d nginx-*/debian) mkdir $NGINX_DEBIAN/ngx_http_auth_pam_module cp ngx_http_auth_pam_module-1.2/config $NGINX_DEBIAN/ngx_http_auth_pam_module/ cp ngx_http_auth_pam_module-1.2/ngx_http_auth_pam_module.c $NGINX_DEBIAN/ngx_http_auth_pam_module/ cd $NGINX_DEBIAN; cd ..; # Add the argument ``--add-module=./debian/ngx_http_auth_pam_module`` to the # ./configure call on the debian/rules file sed -i -e '/.\/configure .*\\$/,/[^\\]$/ { /^.*[^\\]$/ { s%^\(.*\)$%\t --add-module=./debian/ngx_http_auth_pam_module \\\n\1%; } }' debian/rules # Add the libpam-dev build dependency sed -i -e 's/^Build-Depends: /Build-Depends: libpam-dev, /;' debian/control # Update the package version using the dch command from devscripts dch -l'+authpam' 'Added ngx_http_auth_pam_module support' # Build the package dpkg-buildpackage # And install dpkg -i ../nginx*deb