nginx-logo.png''Alors voilà , je vais essayer de présenter au mieux nginx , ou tout du moins , expliquer sont installation et utilisation .
On trouve de plus en plus de documentations sur le net , et je vais donc ici essayer de regrouper les choses , pour au final avoir un serveur HTTP digne de se nom , qui pourra sans problème remplacer son homologue Apache .
Je conseillerai même Nginx sur des machine de faible capacités en mémoire et/ou processeur .''

Présentation

Bon là je ne vais pas m'éterniser , le site NginxFr vous l'expliquera certainement mieux que moi .
En gros , c'est un serveur web ( entre autre ! ) open sources , d'origine Russe , développez pour répondre à une forte charge , grâce à une gestion des requêtes asynchrone , via des process innovants .
Ses points forts sont donc , une stabilité accrue , une faible consommation de mémoire , une simplicité de configuration , qui le rend ( je trouve ) agréable à administrer .

Notez qu'il vous est possible de tester ce serveur sans casser l'existant .. il vous suffira de le faire tourner sur un autre port , exemple , le 82 !
Aller , n'hésitez plus lancez vous dans l'aventure ...

L'installation

Comme à mon habitude , je n'utiliserai pas la version des paquet de ma distribution .
Il est pour moi important de savoir ce que j'ai sous le capot , et d'en maitriser ( ou au moins essayer ) toutes les facettes .

Récupération des sources et décompactage

cd /usr/local/src
wget http://sysoev.ru/nginx/nginx-0.7.65.tar.gz
tar xzf nginx-0.7.65.tar.gz
cd nginx-0.7.65

Nous voilà prêt à lancer la compilation de la bête ...
Commençons par éditer un fichier de configuration à la compilation , ( façon débian like comme le précise le site ) , j'ai juste ajouté l'option --with-http_stub_status_module qui permet d'avoir l'équivalent du server-status d'apache .
Pour les autres options , je vous laisse voir la description de chacun d'eux qui sont tres bien documenté à cette adresse

Fichier my_configure

vim my_configure

Et voici le contenu :

#!/bin/sh

./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 \
  --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 \
  --with-http_stub_status_module

Rendons le exécutable et go ! :

chmod 777 my_configure
./my_configure
make
make install
mkdir -p /var/lib/nginx/body

warning.png Il vous faudra certainement installer des librairies manquantes ... les messages d'erreurs vous indiquerons lesquels .

Configuration

Nous allons maintenant nous attaquer à la configuration de la bête ... pour commencer .. ou ce trouve quoi !

Emplacements des éléments

Petit tour d'horizon , comme spécifié à la configuration , les principaux fichiers de conf se trouvent dans :

/etc/nginx/

Les fichiers de logs :

/var/log/nginx/

L'exécutable :

/usr/local/nginx/sbin/

Rotation des logs

Si vous ne voulez pas que vos fichiers de logs remplissent le disque en quelques mois , alors , il est préférable de faire une rotation journalière .
Nous allons dédier cette tâche à logrotate .

cd /etc/logrotate.d/
vim nginx

Et voici le contenu :

/var/log/nginx/*.log {
        daily
	missingok
	rotate 5
	compress
	delaycompress
	notifempty
	create 640 root adm
	sharedscripts
	postrotate
    	if [ -f /var/run/nginx.pid ]; then
    		/usr/local/nginx/sbin/nginx -s reload > /dev/null
    	fi
   	endscript

}

download.pngOu si vous préférez en format à dl : nginx_logrotatenginx

Configuration principale

Le fichier de configuration principale se trouve donc là : /etc/nginx/nginx.conf
Nous allons sauvegarder la version originale , et démarrer de 0 , enfin presque ..

cd /etc/nginx/
mv nginx.conf nginx.conf.old
vim nginx.conf

warning.png Si vous souhaitez faire tourner votre serveur nginx sur un autre port , n'oubliez pas de le modifier ( directive listen ) . De même que l'utilisateur que j'utilise www-data n'est pas forcément le même pour vous .. adaptez à votre conf.

download.pngJe vous met le fichier de conf à dispo , ici : nginx.confnginx.conf

Pour ce qui est des explications sur chaque option , les utilisateurs d'apache trouverons tres vite leurs marques , de plus la documentation est compléte ici.

les Vhosts

Vous l'avez certainement remarqué , dans nginx.conf , il y a la ligne

include /etc/nginx/site-enabled/*;

Qui permet de gérer les vhosts de façons structuré , tous les fichiers de conf présents dans ce répertoire seront analysé par nginx à sont lancement .

Préparons le terrain avant de creer notre premier vhost .

mkdir site-available
mkdir site-enabled

Voici maintenant la création d'un vhost type , le plus simple du monde .

cd /etc/nginx/site-available
vim monsite.com

Et voilà le contenu type :

server {
        listen       80;
        
        server_name  monsite.com  www.onsite.com;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

Vous pouvez donc spécifier un ou plusieurs ports par vhost , ensuite définir des options propre à chaque location .
Nous verrons par la suite comment par exemple ajouter des régles de cache pour les données statics , ou rediriger en fonction de l'ip ect ... mais ne brulons pas les étapes .
Activons notre vhost !

ln -s /etc/nginx/site-available/monsite.com /etc/nginx/site-enabled/

Start Nginx

Pour la première fois nous allons donc lancer nginx afin de tester la conf de base , pour celà il faut vous rendre dans le répertoire contenant l'exécutable .

info.pngl'executable nginx s'utilise de cette façon :

nginx -s [ stop | quit | reopen | reload ] 

Pour démarrer :

cd /usr/local/nginx/sbin/

Et go

./nginx


Il ne doit y avoir aucun message au lancement , vous pouvez vérifier au niveau des logs si tout se passe bien ,

tail -f /var/log/nginx/error.log

Si tout est ok , alors vous voilà prêt à servir des page statiques .. testez avec votre navigateur !

http://localhost:80

Démarrage automatique

Vous avec votre serveur dans sa configuration de base prêt à l'emploi , mais au prochain redémarrage , celui-ci ne sera pas automatiquement lancé , nous allons donc créer de quoi automatiser tout ça ( debian like ).

Rendez-vous dans /etc/init.d/ et éditer le fichier nginx

cd /etc/nginx
vim nginx

Je vous met donc à disposition le script de démarrage ici : nginxnginx

warning.pngLe fichier que je vous donne est adapté à la configuration donné dans ce tuto , si vous avez modifié des choses à la compilation , n'oubliez pas d'adapter ce script au besoin .

Nous allons maintenant le rendre exécutable , puis le déclarer dans les RC

chmod 777 nginx
update-rc.d nginx defaults

Fin de la première partie ..

Et oui , bilan , vous avez un serveur web http , qui peut dés à présent servir du contenu statique , vous savez créer des hôtes virtuels , et votre serveur démarre automatiquement à démarrage de votre machine .
Ouf ... et bien il nous reste plus qu'à prendre en charge les scripts php , et - ou perl , qui sera le sujet de la deuxième partie .. ( rédaction en cours )