''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
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
}
Ou 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
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.
Je 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 .
l'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
Le 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 )

