Après l’installation et la configuration de Debian sur le Seagate Dockstar, voici venu l’installation de ce qu’il faut pour qu’il remplisse son premier rôle : Serveur Web.

J’ai déjà fait un article sur l’installation d’un serveur Web Cherokee et Lighttpd, mais ces 2 serveurs web sont soit trop gourmand en ressource soit trop gros.

Il reste un autre challenger à Apache, il s’agit de nginx (se prononce engine X).

Ce serveur web en plus d’être incroyablement performant est incroyablement sobre en ressources, il est quasiment systématiquement installé sur les machines de faible puissance que sont les plug computer.

Contrairement aux articles précédemment cités sur l’installation de Cherokee et Lihttpd je ne détaillerais pas l’installation de MySQL ici, pour la simple et bonne raison que je ne l’ai pas installé sur mon Dockstar (cf. Installer et configurer Mysql sur le Dockstar)

 

Installation de nginx

L’installation peut se faire simplement avec aptitude/apt-get car il existe un paquet nginx mais ce dernier est en version 0.7.x dans les dépôt Debian Squeeze, c’est à dire la version « legacy » (que l’on peut traduire par dépassé).

Un paquet de la version 0.8.54 est disponible sur dotdeb mais ce dernier est disponible que pour les architectures i386 et amd64 mais pas pour l’architecture ARM

On va donc installer la version 0.8.54 à partir des sources, ce qui est tout de même un peu « touchy ».

Heureusement pour nous / moi Nicolargo a publié un script automatisant le process. Ce script installe nginx depuis les sources, le configure et installe php 5.x en mode FPM depuis les dépôts dotdeb, il faut donc l’adapter pour supprimer toute la partie installation de php-fpm qui n’est pas disponible non plus sur dotdeb pour les machines ARM.

Voici le script modifié :

#!/bin/bash
# Mon script d'installation automatique de NGinx (depuis les sources)
#
# Nicolargo - 01/2011
# Modifié VoidAndAny - 03/2011
# GPL
#
# Syntaxe: # su - -c "./nginxautoinstall.sh"
# Syntaxe: or # sudo ./nginxautoinstall.sh
VERSION="2.0"
 
##############################
# Version de NGinx a installer
 
NGINX_VERSION="0.8.54"
 
##############################
# Debut de l'installation
 
# Test que le script est lance en root
if [ $EUID -ne 0 ]; then
echo "Le script doit être lancé en root: # sudo $0" 1>&2
exit 1
fi
 
# Pre-requis
aptitude install build-essential libpcre3-dev libssl-dev zlib1g-dev
 
# Telechargement des fichiers
wget http://sysoev.ru/nginx/nginx-$NGINX_VERSION.tar.gz
 
# Extract
tar zxvf nginx-$NGINX_VERSION.tar.gz
 
# Configure
cd nginx-$NGINX_VERSION
./configure   --conf-path=/etc/nginx/nginx.conf   --error-log-path=/var/log/nginx/error.log   --pid-path=/var/run/nginx.pid   --lock-path=/var/lock/nginx.lock   --http-log-path=/var/log/nginx/access.log   --with-http_dav_module   --http-client-body-temp-path=/var/lib/nginx/body   --with-http_ssl_module   --http-proxy-temp-path=/var/lib/nginx/proxy   --with-http_stub_status_module   --http-fastcgi-temp-path=/var/lib/nginx/fastcgi   --with-debug   --with-http_flv_module
 
# Compile
make
 
# Install
make install
 
# Post installation
cd ..
mkdir /var/lib/nginx
mkdir /etc/nginx/conf.d
mkdir /etc/nginx/sites-enabled
mkdir /var/www
chown -R www-data:www-data /var/www
 
# Download the init script
wget http://svn.nicolargo.com/debianpostinstall/trunk/nginx
mv nginx /etc/init.d/
chmod 755 /etc/init.d/nginx
/usr/sbin/update-rc.d -f nginx defaults
 
# Download the default configuration file
# Nginx + default site
wget http://svn.nicolargo.com/debianpostinstall/trunk/nginx.conf
wget http://svn.nicolargo.com/debianpostinstall/trunk/default-site
mv nginx.conf /etc/nginx/
mv default-site /etc/nginx/sites-enabled/
 
# Start NGinx
/etc/init.d/nginx start
 
# Summary
echo ""
echo "--------------------------------------"
echo "NGinx installation finished"
echo "--------------------------------------"
echo "NGinx configuration folder:       /etc/nginx"
echo "NGinx default site configuration: /etc/nginx/sites-enabled/default-site"
echo "NGinx default HTML root:          /var/www"
echo ""
echo "If you use IpTables add the following rules:"
echo "iptables -A INPUT -i lo -s localhost -d localhost -j ACCEPT"
echo "iptables -A OUTPUT -o lo -s localhost -d localhost -j ACCEPT"
echo "iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT"
echo "iptables -A INPUT  -p tcp --dport http -j ACCEPT"
echo "--------------------------------------"
echo ""
 
# Fin du script

 

A l’issu de ce script si on va à l’adresse IP du Dockstar avec un navigateur web, on doit avoir la page suivante qui s’affiche :

Pour être sûr que nginx peut nous restituer une page HTML on peut lancer les commandes suivante (sur la Dockstar)

 

echo "test" > index.html
sudo chown www-data:www-data index.html
sudo mv index.html /var/www

 

En allant sur l’adresse IP du Dockstar, on devrait désormais avoir test qui s’affiche.

 

Installation de PHP

Il existe de plusieurs façon pour un serveur web d’interagir avec le « moteur » d’interprétation de php  :

  • module  : php est interprété directement par le serveur Web (avec apache par exemple)
  • CGI : le serveur Web laisse l’interprétation de php au module cgi php
  • fastCGI : évolution de CGI pour le rendre plus performant
  • spawn-fcgi : une implémentation de fastCGI initialement faite pour le serveur web lighttpd
  • FPM : implémentation de fastCGI remplaçant de spawn-fcgi plus rapide et stable

Malheureusement il n’existe pas de paquet Debian de l’implémentation FPM de fastCGI (php-fpm) pour l’architecture ARM, donc à moins de vouloir le compiler depuis les sources on utilisera l’implémentation spawn-fcgi de php.

Pour l’installation on fera :

sudo aptitude install php5-cgi spawn-fcgi

(20,3 Mo utilisés)

 

Il faut ensuite faire un script init.d (/etc/init.d/php5-fcgi) pour que le serveur php démarre :

 

#!/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

 

Et on le démarre :

sudo /etc/init.d/php5-fcgi start

Il faut ensuite en théorie indiquer à nginx comment interpréter les fichiers php en ajouter ce genre de directives dans le fichier /etc/nginx/sites-enabled/default-site

 

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

 

J’ai marqué en théorie car l’installation de nginx faite par le script de Nicolargo créé un fichier default-site qui contient déjà cette directive.

 

Pour tester php, on crée un fichier php contenant la directive phpinfo :

echo "<?php phpinfo(); ?>" > phpinfo.php
sudo chown www-data:www-data phpinfo.php
sudo mv phpinfo.php /var/www

 

Et en allant sur l’adresse IP du Dockstar, sur la page phpinfo.php on doit voir cette page s’afficher :

 

PS : Quelques information concernant l’espace disque utilisé par les différents serveur web (sur une Debian de base)

  • nginx : 1.6 MB
  • apache2 : 44.4 MB
  • lighttpd : 35.8 MB

 

Sources :

Nicolargo : Installation automatique de NGinx, PHP-FPM, MemCached sous Debian

IT Wars : Seagate DockStar un plug computer green

Blog slucas : Installation de nginx sous Debian

Ici & Ailleurs : Un serveur web avec Nginx, PHP et MySQL

Linode library : Nginx and PHP-FastCGI on Debian 5 (Lenny)

Linode library : Basic Nginx Configuration

Linode Library : Nginx Configuration

Papy Geek : Optimiser son serveur Web avec Nginx

Les commentaires sont fermés.