The Fool

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