Categories
Informatique

Nginx: installation et configuration basique

Nginx (prononcez à l’Américaine “Engine-X”), tout comme Apache ou IIS, est un moteur web; grosso-modo, c’est lui qui va s’occuper de répondre à votre navigateur web (Firefox, IE, etc…) en lui envoyant les pages web et infos désirées (c’est simple non ? :-)).

Nginx est une application très en vogue, sa populartité monte, monte… pourquoi ? Il semblerait qu’Apache commence à souffrir d’une image de mastodonte un peu lourd consommateur de mémoire et de temps CPU comparé à Nginx. Vous l’aurez compris, Nginx est, sur le papier, on comparera plus tard, plus léger mais malheureusement, possède moins de modules que ces autres frangins… du moins, pour le moment.

Pour info, en Chine, étant donné le “petit” nombre d’internautes Chinois, Nginx est franchement préféré à Apache, du moins, dans le monde Linux.

Installation

Son installation est d’une simplissité déconcertante… sur Debian ;-):
root@server:~# aptitude install nginx
Voilà, c’est fait, vous pouvez rentrer chez vous B-)

Nan, faut penser à configurer l’bestiau.

Configuration

Sur Debian, comme beaucoup d’applications, la configuration de la bébète se trouve dans /etc/nom_application/… ici, nom_application = nginx, réperoitre dans lequel on trouve:

drwxr-xr-x  2 root root 4.0K Mar 17 09:28 conf.d
-rw-r--r--  1 root root  909 Nov 26  2009 fastcgi_params
-rw-r--r--  1 root root 2.8K Nov 26  2009 koi-utf
-rw-r--r--  1 root root 2.2K Nov 26  2009 koi-win
-rw-r--r--  1 root root 3.0K May  6  2010 mime.types
-rw-r--r--  1 root root 1019 Nov 26  2009 nginx.conf
drwxr-xr-x  2 root root 4.0K Jul  3 21:42 sites-available
drwxr-xr-x  2 root root 4.0K Jun 19 23:55 sites-enabled
-rw-r--r--  1 root root 3.6K Nov 26  2009 win-utf

Si vous êtes un particulier qui héberge son propre blog/site ou autre application personnelle, pour éviter un fichier de configuration trop différent du “standard”, je vous conseille de placer vos pages dans /var/www mais STOP !!

Un autre conseil: j’aime beaucoup cloisonner les choses pour éviter, disons, les “débordements” volontaires ou non (piratage, uploads massifs, espace disque consommmé qui explose le FS, etc…). C’est pourquoi, je vous conseille de créer un filesystem dédié aux fichiers ou applications web.

Par exemple, créez un filesystem monté sous /var/www avec une taille de 1GB… 1GB, c’est bien pour commencer. Pas d’inquiétude, si vous manquez de place par la suite, vous pourrez augmenter cette espace (vive LVM ;-)). Laissez root en tant que propriétaire de ce point de montage.

Ne mettez pas directement vos fichiers sous /var/www mais plutôt dans un sous-répertoire type /var/www/pages ou sites ou html… whatever et donnez les droits de ce répertoire à votre utilisateur applicatif, ie, celui qui est propriétaire des process nginx. Sur Debian, l’utilisateur par défaut est www-data (vous pouvez le modifier dans /etc/nginx/nginx.conf, ligne “user www-data;“).

Bon, maintenant que tout ça c’est configuré, on va tester, un p’tit test, pas plus… on a quand même pas fait grand chose hein ! 🙂

Ze test

Le test consiste simplement à créer une page qui affichera un slogan mondialement connu: “Hello World !!!”

On va donc créer le fichier /var/www/index.html avec pour contenu:

<HTML>
Hello World !!!
</HTML>

(au passage, mon niveau de HTML est de plus en plus excellent je trouve :-))

Puis, un p’tit démarrage de nginx via:
root@server:~# /etc/init.d/nginx start

Contrôlez qu’il est bien démarré via les commandes ps ou netstat ou regardez les logs… ah les logs, on y regarde jamais assez. Pour connaître leur emplacement, jettez un oeil à la conf. d’Nginx.

Puis ouvrez votre navigateur web préféré [ou pas] et comme URL, entrez votre adresse IP…. celui de votre serveur sur lequel tourne Nginx bien entendu 🙂 et là, vous devez obtenir une magnifique page blanche avec écrit en noir: Hello World !!!

Ben comme on dit, ça marche. Vous avez donc, un serveur web qui répond aux requêtes.

Bon, la configuration est plutôt simple et votre site encore plus ! Donc ce sera à fignoler plus tard en fonction de vos besoins.

Chez moi, ça marche pas

Tant pis pour vous 😉

Voici une liste de trucs que je teste pour vérifier le biniou (l’ordre des tests est fonction de l’état de mon cerveau au moment où ça merde):

  1. le process tourne-t-il ?
  2. le port est-il en écoute ? Par quel process ?
  3. est-ce que l’IP est pingable ?
  4. est-ce qu’un telnet sur le port configuré fonctionne ? Depuis votre PC ? Depuis un PC/serveur dans le même réseau ?
  5. qu’est-ce que j’ai dans les logs d’nginx (remarquez le “d” apostrophe devant nginx ;-)) ?
  6. artillerie lourde: tcpdump. Est-ce que j’ai bien des paquets qui arrivent sur le serveur sur le port configuré ?