Aller au contenu

Installer Nginx Raspbian, et accélérez votre serveur web Raspberry

Tuto Raspberry pi 4 ovh
Publié dans Tutoriels · 18 Février 2016

Installer Nginx Raspbian, et accélérez votre serveur web Raspberry

C’est donc ici un tutoriel venant compléter celui traitant de l’installation d’un serveur web sur la Raspberry. En effet, il sera ici question de l’installation d’un serveur web autre qu’Apache, à savoir Nginx.

Nginx c’est quoi ?

Avant d’installer Nginx, il convient de comprendre ce qu’est au juste Nginx.

Nginx c’est un serveur web.

Il permet donc à un client d’accéder à une ressource sur une machine distante, et à cette machine de retourner la ressource adaptée au client. Il s’agit d’un logiciel libre, distribué sous licence BSD. Il a vu le jour en 2002, en Russie, mais ne c’est vraiment développé qu’à partir de 2006, quand il a commencé à être traduit du russe vers l’anglais.

Les parts de marché de Nginx monte rapidement

Nginx monte rapidement, ici l’évolution des parts de marché des serveurs web en 2016 – source : w3techs.com

Nginx représente 20,4 % des serveurs. C’est bien moins que son principal concurrent Apache, qui représente 60,6 % de parts de marché, mais c’est tout de même énorme. Il occupe ainsi la deuxième place des serveurs (devant les boulets de chez Microsoft avec leurs 14,1%), ce qui est une performance d’autant plus importante que le concurrent Apache occupe une place historique absolument énorme, et est un acteur majeur, non seulement au-travers de son serveur, mais aussi au-travers de la licence Apache.

Mais pourquoi installer Nginx plutôt qu’Apache ?

C’est bien sûr la question la plus importante. Pourquoi choisir un serveur secondaire plutôt que l’acteur principal du marché ? La réponse est simple, les performances !

Nginx est un serveur dit « Asynchrone ». Cela signifie qu’il peut exécuter plusieurs actions en même temps, sans attendre la fin de la première pour passer à la seconde. Ce n’est pas le cas d’Apache qui, s’il permet plusieurs requêtes en même temps va alors lancer de nouveaux processus.

En clair, cela signifie trois choses.

Premièrement, Nginx répond beaucoup plus vite qu’Apache.

Deuxièmement, Nginx permet de supporter plus d’utilisateurs simultanément.

Troisièmement, Nginx consomme moins de RAM qu’Apache, ce qui est très important compte tenu du fait que la Raspberry, même dans son modèle 2, ne dispose que de 1024Mo de RAM non extensibles. Cela est d’autant plus important dans le cadre du modèle B+ et de ses 512 Mo de RAM.

Alors vous vous doutez bien que tout cela n’est pas sans contrepartie.

Nginx ne réagit pas toujours comme Apache2 avec PHP.

Il n’est pas aussi facile de tester Nginx qu’Apache sur une machine Windows.

Enfin, Nginx ne supporte pas les fichiers .htaccess, que vous devrez convertir pour Nginx, et que vous ne mettrez pas dans un fichier dans le répertoire cible, mais dans le fichier de configuration du site.

Cependant, Nginx vaut vraiment le coup, et c’est sans doute un meilleur choix qu’Apache pour un serveur web sur la Raspberry.

Désactiver le serveur Apache

Nous considérerons ici que vous avez déjà suivi le tutoriel sur l’installation d’un serveur web Apache, avec PHP et MySQL. Par conséquent nous ne réinstallerons pas les deux derniers, et nous désactiverons le premier, sans toutefois le désinstaller. Il s’agira là de notre première étape. Si vous n’avez pas installé de serveur Apache, vous pouvez passer cette première étape.

Tout d’abord, il convient de désactiver le serveur Apache actuellement en cours d’exécution.

Pour cela, il suffit d’utiliser la commande suivante :

1
sudo /etc/init.d/apache2 stop

Le serveur Apache2 ne tourne plus. Nous allons maintenant l’empêcher de se lancer automatiquement au démarrage de Raspbian comme il le fait pour l’instant.

Ne pas lancer Apache au démarrage

Sur les dernières versions de Debian (et donc Raspbian), systemd a pris le pas sur la méthode traditionnel de gestion des services.

Nous allons donc désactiver Apache au démarrage. Pour cela, il vous suffit de lancer la commande suivante :

1
sudo systemctl disable apache2

Si vous le souhaitez, vous pouvez redémarrer votre Raspberry Pi

Lancer automatiquement Apache au démarrage

Il est possible que vous souhaitiez un jour réactiver le démarrage automatique d’Apache. Pour cela, vous devrez utiliser la même commande que pour le désactiver, mais avec des arguments différents :

1
sudo systemctl enable apache2

Cette fois l’argument « enable » va demander au programme de lancer Apache2 au démarrage du serveur.

Notez que vous ne pourrez pas (par défaut) faire cohabiter Apache et Nginx !

Vous savez désormais comment activer ou désactiver le démarrage automatique d’Apache et nous allons maintenant pouvoir installer Nginx.

Installer le serveur Nginx pour Raspbian

Comme nous l’avions fait pour Apache2, nous allons de nouveau utiliser le gestionnaire de paquet « aptitude » pour installer Nginx et php-fpm sur la Raspberry depuis les dépôts Raspbian.

Pour cela, il vous suffit d’utiliser la commande :

1
sudo aptitude install nginx php5-fpm

Par défaut, Nginx n’est pas lié à PHP. Lors du développement de Nginx, le choix a été fait d’utiliser PHP-FMP (une version plus rapide de PHP) plutôt qu’un PHP plus traditionnel. Par conséquent, on va installer php-fpm pour gérer les fichiers PHP avec Nginx.

Vous pouvez vérifier si votre serveur marche correctement de la même façon que pour vérifier si un serveur Apache fonctionne, c’est-à-dire en lançant une requête sur le port 80 de votre serveur. Vous obtiendrez alors une page marquée « Welcome to nginx! ».

Configurer Nginx

Maintenant que Nginx est bien installé, il va falloir rajouter un tout petit peu de configuration. Nous n’allons pas ici vous expliquer comment se configure un serveur Nginx, nous allons simplement modifier le dossier contenant vos sites,ajouter les pages index.php comme pages par défaut, et enfin ajouter PHP.

Pour cela, éditez le fichier « /etc/nginx/sites-available/default », par exemple via la commande :

1
nano /etc/nginx/sites-available/default

et cherchez la ligne

1
index index.html index.htm index.nginx-debian.html;

pour la remplacer par la ligne

1
index index.html index.htm index.php;

Cela va rajouter une redirection automatique vers les fichiers « index.php » pour les dossiers du site, comportement par défaut de Apache.

Nous allons maintenant activer php-fpm pour Nginx. Pour cela, cherchez les lignes

1
2
3
4
5
6
7
8
#location ~ \.php$ {
#   include snippets/fastcgi-php.conf;
#
#   # With php5-cgi alone:
#   fastcgi_pass 127.0.0.1:9000;
#   # With php5-fpm:
#   fastcgi_pass unix:/var/run/php5-fpm.sock;
#}

et modifier les afin d’obtenir le résultat suivant :

1
2
3
4
location ~ \.php$ {
   include snippets/fastcgi-php.conf;
   fastcgi_pass unix:/var/run/php5-fpm.sock;
}

Il ne nous reste plus qu’à modifier les droits du dossier « /var/www/html » pour pouvoir gérer nos sites plus facilement. Pour cela, il vous suffit de lancer les commandes suivantes :

1
2
sudo chown -R www-data:pi /var/www/html/
sudo chmod -R 770 /var/www/html/

Enfin, vous allons ajouter un fichier « index.php » pour vérifier que PHP fonctionne. Pour cela, lancez la commande suivante :

1
echo "<?php phpinfo(); ?>" > /var/www/html/index.php

Une fois tout ceci fait, vous devez redémarrer Nginx, afin d’appliquer les modifications, toujours avec la commande :

1
sudo /etc/init.d/nginx restart

Vous n’avez plus qu’à vérifier le bon fonctionnement du serveur, comme précédemment. Vous devriez obtenir une page affichant les informations de PHP.

Erreur 403 forbidden, un classique de Nginx.

Il est possible que vous obteniez une erreur « 403 forbidden ». Cela peux signifierdeux choses.

Page d'erreur 403 d'un serveur Nginx

L’erreur 403 est fréquente avec Nginx, mais simple à corriger.

Tout d’abord, cela peut signifier que Nginx ne trouve pas de fichier à afficher, mais contrairement à Apache, il ne va pas lister les fichiers du dossier. Pour tester cela, ilvous suffit de créer un fichier index.html dans le répertoire « /var/www », et de re-essayer d’accéder à votre site. Par exemple via la commande :

1
echo 'Nginx marche !' > /var/www/html/index.html

Si le problème venait bien de là, vous devriez obtenir une page marquée « Nginx marche ! « . À vous maintenant de mettre un fichier d’index qui vous convienne.

En revanche, si cela ne résout pas le problème, alors le problème est probablementque Nginx ne peut accéder au répertoire « /var/www/html ». Dans ce cas, il fautdonner le répertoire à « www-data », avec les autorisations suffisantes.

Pour cela, utilisez les deux lignes suivantes :

1
2
chown www-data:www-data /var/www
chmod 744 /var/www

Conclusion

Voilà, Nginx est installé sur la Raspberry, et votre serveur web Raspbian devrait tourner encore plus vite qu’avant !

Et si ce n’est pas suffisant, vous pouvez par exemple installer un cache php. Nous ferons peut-être un tutoriel dessus dans quelques temps ;).

Et dans tous les cas, vous pouvez toujours allez faire un tour ici, et vous trouverez peut-être de nouvelles idées d’utilisations de votre Raspberry.




Mentions Légales - raspberry-pi.ovh 2022 © Copyright- Raspberry Pi est une marque déposée de la Raspberry Foundation - Les contenus rédigés par raspberry-pi.ovh sont distribués sous license open source.
Retourner au contenu