Compilation de Nginx sur un VPS Gandi

Publié le 04 juin 2009 par Cédrci Bousmanne

Hier soir, j’ai effectué une petite opération de maintenance sur le VPS Gandi qui héberge ce blog. J’avais besoin de la dernière version stable de Nginx (0.7.59) alors que la version installée, fournie par les dépôts officiels, était la 0.5.33. (Pour plus de détails, voir l’article : Installation de Nginx sur un VPS Gandi)

J’ai par conséquent dû me rendre à l’évidence et compiler la dernière release depuis les sources. Cet article est un peu long et risque d’en décourager plus d’un, mais j’ai absolument tenu à ce qu’il soit le plus complet possible.

Commençons par télécharger les sources de Nginx depuis le site officiel. A l’heure où j’écris ces lignes, la dernière version stable est la 0.7.59.

cd /opt
wget http://sysoev.ru/nginx/nginx-0.7.59.tar.gz
tar -zxfv nginx-0.7.59.tar.gz
cd nginx-0.7.59

Si l’on s’en tient à la documentation, il suffit d’exécuter le script de configuration. Ayant auparavant utilisé une version installée depuis les dépôts officiels d’Ubuntu, nous allons indiquer au script où installer le programme et où se situent les fichiers de configuration.

De plus, nous allons configurer Nginx pour pouvoir utiliser le module http_stub_status, qui nous permettra de récupérer les statistiques d’utilisation du serveur.

./configure --with-http_stub_status_module --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf

Une petite explication s’impose :

  • with-http_stub_status_module : compiler Nginx avec le support du module http_stub_status
  • prefix : Précise à Nginx le répertoire d’installation, par défaut /usr/local/nginx
  • sbin-path : Précise le chemin de l’exécutable, par défaut <prefix>/sbin/nginx
  • conf-path : Précise le chemin du fichier de configuration principal. Par défaut <prefix>/conf/nginx.conf
  • Toutes les options de compilation sont disponibles dans la documentation officielle : Nginx Install Options

Si vous avez un doute quant aux valeurs à passer aux options de compilation, vous pouvez localiser l’emplacement de l’exécutable avec la commande which :

akyrho@gus:~$ which nginx
/usr/sbin/nginx

Quant au fichier de configuration, utilisez la commande locate pour le retrouver. Vous pourrez également en déduire la valeur de l’option prefix :

akyrho@gus:~$ locate nginx.conf
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default

Si la configuration s’est bien déroulée, vous devriez voir ceci dans votre terminal :

nginx path prefix: "/etc/nginx/"
nginx binary file: "/usr/sbin/nginx"
nginx configuration prefix: "/etc"
nginx configuration file: "/etc/nginx/"
nginx pid file: "/etc/nginx//logs/nginx.pid"
nginx error log file: "/etc/nginx//logs/error.log"
nginx http access log file: "/etc/nginx//logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"

A ce stade, il ne nous reste plus qu’à lancer la compilation et à aller chercher un café :

make
sudo make install

Si tout s’est bien déroulé, vous devriez pouvoir relancer Nginx :

sudo /etc/init.d/nginx restart

Et c’est terminé