Installation de nginx sous Debian

Pourquoi nginx

Mon objectif était de transformer un Dockstar en serveur Web, vu les capacités de la bête (Hardware Seagate Dockstar), j'ai voulu un serveur Web super léger. Après pas mal de lecture je suis tombé sur les alternatives suivantes :

  • Lighttpd
    • Avantage : Outil reconnu, beaucoup de documentation.
    • Défaut : Il a pas mal de dépendances.
  • Cherokee
    • Avantage : Vraiment très rapide, paramétrage PHP simplifié.
    • Défaut : L'installation sous Debian entraine énormément de dépendances y compris cron que je ne voulais pas installer.
  • nginx
    • Avantage : Pas de dépendances, pas mal de documentation sur le Web.

Installation de nginx

aptitude install nginx

Installation de PHP en fastcgi

Pour la suite je me suis inspiré de : http://neokraft.net/2010/serveur-web-nginx-php-mysql

Installation

Attention ne pas installer le paquet php car celui entraine l'installation d'apache et ce n'est pas vraiment le but.

aptitude install php5-cgi spawn-fcgi

Demon

Ce démon est à créer dans /etc/init.d

#!/bin/sh

### BEGIN INIT INFO
# Provides:       php5-fcgi
# Required-Start: $remote_fs $syslog
# Required-Stop:  $remote_fs $syslog
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description: PHP5 FastCgi Spawned processes
### END INIT INFO

COMMAND=/usr/bin/spawn-fcgi
ADDRESS=127.0.0.1
PORT=9000
USER=www-data
GROUP=www-data
PHPCGI=/usr/bin/php5-cgi
PIDFILE=/var/run/fastcgi-php.pid
RETVAL=0

PHP_FCGI_MAX_REQUESTS=500
PHP_FCGI_CHILDREN=2

start() {
    export PHP_FCGI_MAX_REQUESTS PHP_FCGI_CHILDREN
    $COMMAND -a $ADDRESS -p $PORT -u $USER -g $GROUP -f $PHPCGI -P $PIDFILE
}

stop() {
    /usr/bin/killall -9 php5-cgi
}

case "$1" in
    start)
      start
      RETVAL=$?
  ;;
    stop)
      stop
      RETVAL=$?
  ;;
    restart|reload)
      stop
      start
      RETVAL=$?
  ;;
    *)
      echo "Usage: fastcgi {start|stop|restart}"
      exit 1
  ;;
esac
exit $RETVAL

Il reste ensuite à le paramétrer pour qu'il démarre automatiquement :

cd /etc/init.d
chmod +x php5-fcgi
update-rc.d php5-fcgi defaults

Utilisation du PHP dans nginx

Mon fichier de configuration de nginx (/etc/nginx/sites-enabled) :

server {
        listen   80; ## listen for ipv4

        server_name blog.slucas.fr;

        access_log  /var/log/nginx/xxx.log;
        root   /xxx;
        index doku.php;

        location ~ \.php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_pass    127.0.0.1:9000;
        }
}

Dans le cas de dokuwiki tout passe par le php donc je n'ai même pas mis de /.


Published 12th Oct 2010 // #debian #nginx #php




comments powered by Disqus