Installer Nginx sur OsX en 3 étapes.

Je me suis remis récemment au développement avec l’excellent outil django. En arrivant aux problématiques de déploiement, il me faut un serveur WSGI. C’est donc l’occasion d’installer Nginx. Pour les tests, j’en ai besoin sous Mac.

Pour installer Nginx sous Os X, je me suis basé sur le tuto de Robert Mulley. Il utilise comme tout ce que vous trouverez sur le web sur Homebrew.

Installer Homebrew

Si Homebrew n’est pas installé sur votre système, il vous suffit d’exécuter la commande suivante.

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Brew dispose d’un outil diagnostique qu’il est conseillé d’executer par la commande

brew doctor

Sachez que si vous voyez des Warnings, ceux-ci sont principalement destinés aux développeurs et donc sans conséquence pour vous. Une explication et conseil s’affiche dans tous les cas expliquant ce que vous devez faire.

Installer Nginx

L’installation de Nginx à proprement parler se passe par

brew install nginx

L’installation est assez verbeuse. En plus des logs d’avancement de l’installation, le système affiche les informations que vous pouvez avoir besoin pour la suite. La sortie limitée aux informations utiles est la suivante :

==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
 /usr/local/etc/openssl/certs

and run
 /usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local.

Mac OS X already provides this software and installing another version in
parallel can cause all kinds of trouble.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

 LDFLAGS: -L/usr/local/opt/openssl/lib
 CPPFLAGS: -I/usr/local/opt/openssl/include

[...]

==> Caveats
Docroot is: /usr/local/var/www

The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.

nginx will load all files in /usr/local/etc/nginx/servers/.

To have launchd start nginx at login:
 ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
Then to load nginx now:
 launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
Or, if you don't want/need launchctl, you can just run:
 nginx

Si vous n’avez besoin de rien configurer d’autre, vous pouvez alors lancer le serveur avec la commande

sudo nginx

Vous pourvez alors tester votre installation en n’oubliant pas de vous connecter sur le port 8080.

Vous pouvez arrêter votre serveur avec

sudo nginx -s stop

Si vous n’avez pas de conflit de port (si rien n’utilisait le port 8080), vous avez une installation de Nginx prête à l’emploi.

Configurer Nginx

Si Nginx est  rapidement prêt à l’emploi, nous avons toujours besoin de reconfigurer quelques paramètres. De manière générale, il s’agit du port et la localisation des documents servis. Les logs d’installations vous ont informé que le fichier de configuration est

/usr/local/etc/hginx/nginx.conf

C’est dans ce fichier que vous pouvez changer les paramètres du serveur. La partie qui nous intéresse est

server {
 listen 8080;
 server_name localhost;

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

 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
  root html;
 }
}

La modification du port du serveur est assez évidente. Pour le contenu servi par ce virtualhost, c’est dans la partie location. Le répertoire racine se situe dans le répertoire d’installation de Nginx qui est du type

/usr/local/Cellar/nginx/1.8.0/

le dernier sous répertoire, 1.8.0, dépend de votre installation. Ce répertoire contient bien un sous répertoire html contenant les documents à afficher par défaut. C’est dans celui-ci que Nginx trouve les ressources à servir et à partir de là qu’est définit le chemin relatif de la configuration Nginx.

Pour remplacer votre serveur Apache par Nginx, la configuration du serveur devra ressembler à cela :

server {
 listen 80;
 server_name localhost;

 location / {
  root /usr/local/var/www/;
  index index.html index.htm;
 }

 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
  root html;
 }
}

Vous pouvez remarquer que par cette configuration, les pages d’erreur 50x seront toujours redirigé vers le répertoire html racine par défaut du serveur.

À propos de... Darko Stankovski

iT guy, photographe et papa 3.0, je vous fais partager mon expérience et découvertes dans ces domaines. Vous pouvez me suivre sur les liens ci-dessous.

Vous aimerez aussi...

Laisser un commentaire