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

Cela fait quelques temps que nous n’avons pas écrit de tutoriel. En effet, nous nous sommes octroyé quelques jours de vacances, et nous voici aujourd’hui de retour.

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 2013 – 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 B, ne dispose que de 512Mo de RAM non extensibles. Cela est d’autant plus important dans le cadre du modèle A et de ses 256Mo 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 :

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

Sous Linux, les scripts lancés au démarrage le sont via l’utilisation de liens symboliques contenus dans les dossiers /etc/rc*.d.

Vous pouvez lister tous ces liens via la commande :

sudo find /etc/rc*.d -name *apache*

Il faut donc supprimer ces liens symboliques. Cependant, cela peut être lourd et long à faire. C’est pourquoi des commandes spécifiques furent créées, afin de faciliter la gestion de ces démarrages automatiques.

C’est donc grâce à ces commandes qui se chargeront de supprimer les liens adaptés que nous désactiverons le démarrage automatique d’Apache. Dans notre cas il s’agit de la commande « update-rc.d » (il est à noter que cette commande n’est valable que pour les systèmes de type Debian et dérivés, dont Raspbian). Voici donc la commande et ses arguments :

sudo update-rc.d -f apache2 remove

L’argument « remove » signifie que les liens doivent êtres supprimés, et l’argument « -f » signifie que les liens doivent être supprimés même si le script sur lesquels ils pointent existent encore. Cela permet donc de supprimer le lancement automatique du programme sans que ce dernier n’ai été désinstallé.

Vous pouvez vérifier que tous les liens sont bien supprimés, simplement en réutilisant la commande listant les liens symboliques, commande qui devrait cette fois vous retourner un résultat vide.

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 :

sudo update-rc.d apache2 defaults

Cette fois l’argument « defaults » va demander au programme de remettre les liens par défaut pour le programme Apache2, ce qui aura pour effet de remettre en place le démarrage automatique du serveur Apache au démarrage. Là aussi vous pouvez si vous le souhaitez vérifier que les liens ont été mis en place correctement, et ce comme précédemment par l’utilisation de la commande « find » pour les lister.

Voilà, vous savez maintenant 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 :

sudo aptitude install nginx php5-fpm

Nous avions dit que nous n’installerions pas PHP. Cependant, Nginx n’est pas lié automatiquement à PHP. Lors du développement de Nginx, le choix a été fait d’utiliser plutôt PHP-FMP qu’un PHP plus traditionnel. Par conséquent, on va installer php-fpm pour gérer les fichiers PHP avec Nginx.

Une fois l’installation finie, il est possible que Nginx ne démarre pas tout seul. Lancez donc la commande suivante pour redémarrer (ou démarrer si ce n’est pas déjà fait) Nginx :

sudo /etc/init.d/nginx restart

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 :

nano /etc/nginx/sites-available/default

et cherchez les lignes

root /usr/share/nginx/www;
index index.html index.htm;

pour les remplacer par les lignes

root /var/www;
index index.html index.htm index.php;

Cela va changer le répertoire général de Nginx pour le répertoire « /var/www «  (comme c’était le cas pour Apache), et cela va rajouter une redirection automatique vers les fichiers « index.php » pour les dossiers du site, du moins si il existe, comme c’était là aussi le cas pour Apache.

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

#location ~ \\.php$ {
        #       fastcgi_split_path_info ^(.+\\.php)(/.+)$;
        #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        #
        #       # With php5-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
        #       fastcgi_pass unix:/var/run/php5-fpm.sock;
        #       fastcgi_index index.php;
        #       include fastcgi_params;
        #}

et décommentez les lignes nécessaires, afin d’obtenir le résultat suivant :

location ~ \\.php$ {
               fastcgi_split_path_info ^(.+\\.php)(/.+)$;
        #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        #
        #       # With php5-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
               fastcgi_pass unix:/var/run/php5-fpm.sock;
               fastcgi_index index.php;
               include fastcgi_params;
        }

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

sudo /etc/init.d/nginx restart

Vous n’avez plus qu’à vérifier le bon fonctionnement du serveur comme précédemment.

Erreur 403 forbidden, un classique de Nginx.

Il est possible que vous obteniez une erreur « 403 forbidden ». Cela peux signifier deux 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, il vous 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 :

echo 'Nginx marche !' > /var/www/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ésoud pas le problème, alors le problème est probablement que Nginx ne peut accéder au répertoire « /var/www ». Dans ce cas, il faut donner le répertoire à « www-data », avec les autorisations suffisantes.

Pour cela, utilisez les deux lignes suivantes :

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

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.

The post Installer Nginx Raspbian, et accélérez votre serveur web Raspberry appeared first on Raspbian-France.

Vus : 674
Publié par RaspbianFrance : 122