Voici le troisième tuto portant sur la création d’un serveur web sur Raspberry Pi. Ce tuto se concentre sur la façon d’installer et de configurer un serveur web Nginx et PHP sur le système d’exploitation Raspbian. Les prochains tuto vous montrerons l’installation et la configuration de MySQL server puis l’installation d’un CMS très en vogue en ce moment, et pour de bonnes raisons : WordPress.
Bien qu’efficace, Apache 2 est devenu trop lourd et utilise beaucoup de ressources qu’il n’en a réellement besoin. Nous préférerons Nginx pour sa légèreté qui en fait un serveur web parfait pour un Raspberry Pi !
Table des matières
Prérequis :
Avant de commencer ce tuto, assurez-vous d’avoir votre Raspberry Pi configuré et à jour (voir bonus dans WebServer sur RPI : configuration réseau et premier démarrage).
Rappel pour mettre à jour les packages :
Commande : sudo apt-get update && sudo apt-get upgrade
Mise à jour du firmware de la carte :
Commande : sudo rpi-update
Voici la version de mon firmware lorsque j’ai effectué ce tuto :
Etape 1 – Installer Nginx :
Pour commencer, connectons-nous en ssh à notre Raspberry Pi. Nous somme maintenant dans le terminal. Tapez la commande suivante pour installer Nginx :
Commande : sudo apt-get install nginx
En cas de questions, faites « oui » en tapant « O » ou « yes » en tapant « Y » si vous êtes configuré en anglais.
Maintenant, Nginx est installé, mais il n’est pas démarré. Nous allons maintenant démarrer Nginx pour vérifier son bon fonctionnement. Tapez la commande suivante :
Commande : sudo /etc/init.d/nginx start
Si tout va bien, vous devez arriver à ce résultat :
Si vous visitez l’IP locale ou l’IP de votre routeur (si la redirection vers le port 80 de votre Raspberry Pi est effectué), vous devez arriver sur la page suivante :
Bien ! Vous avez maintenant un serveur web Nginx qui tourne sur votre Raspberry Pi ! Prochaine étape : installer PHP.
Etape 2 – Installer PHP :
Les packages requis pour que PHP fonctionne avec Nginx sont légèrement différents par rapport à une utilisation sur Apache 2. PHP démarre sous Nginx comme une interface FastCGI. Nous devons donc installer le package PHP FPM correspondant avec la commande suivante :
Commande : sudo apt-get install php5-fpm
Et voilà ! Vous avez installé le moteur PHP avec succès ! Maintenant, nous devons réaliser quelques changements dans les fichiers de configuration de Nginx afin de le faire fonctionner avec PHP.
Etape 3 – Configurer Nginx et PHP :
On y est presque ! Tout comme Apache 2, Nginx fonctionne sur le principe d’hôtes virtuels (virtual hosts). Mais je dois avouer qu’il est nettement plus simple de configurer plusieurs vhosts sur Nginx. Ici, nous allons configurer qu’un seul hôte. Je reviendrai peut-être sur le multi-hosts plus tard.
Nous allons dès à présent, modifier la configuration par défaut de Nginx pour que ce dernier fonctionne avec les requêtes PHP. Commencez par taper la commande suivante :
Commande : sudo nano /etc/nginx/sites-available/default
J’utilise l’éditeur Nano (disponible par défaut sur la plupart des distributions linux). Sentez-vous libre d’en utiliser un autre éditeur si vous préférez. Perso, j’aime bien Nano. 🙂
Descendez dans ce fichier de configuration jusqu’à trouver les lignes suivantes :
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default_server ipv6only=on; ## listen for ipv6
Dé-commenter la première ligne en retirant le premier « # » de la ligne. Faites de même pour la deuxième ligne si votre routeur (ou box adsl) supporte l’ipv6 (attention, souvent il vous faudra activer l’option IPv6 dans les paramètres de votre routeur, si ce dernier supporte ce type d’IP).
listen 80; ## listen for ipv4; this line is default and implied
listen [::]:80 default_server ipv6only=on; ## listen for ipv6
Ces deux lignes permettent d’écouter sur le port 80 (le port http par défaut) pour écouter les requêtes sur les protocoles IPv4 ou IPv6.
Maintenant, changez le nom du serveur, qui correspond à votre nom de domaine. Dans mon cas, mon domaine est bentek.fr. Remplacez ce nom de domaine par le votre ou par votre adresse IP (box internet pour un accès via le net ou raspberry pi pour un accès uniquement local).
# Make site accessible from http://localhost/
server_name www.bentek.fr;
N’oubliez pas de finir chaque ligne interprétée par un point-virgule. Pour interpréter la page PHP de démarrage, changez la configuration d’index :
index index.html index.htm;
Par cette configuration (ajoutez index.php en 2ème position pour la priorité sur les htm et html) :
index index.php index.html index.htm;
Maintenant, nous avons besoin d’intégrer notre interface d’interprétation PHP : FastCGI. Pour cela, descendez dans le fichier de configuration, jusqu’à trouver ça :
#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;
#}
Dé-commentez quelques lignes afin d’avoir ceci :
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;
}
Soyez prudent, éditez les bonnes lignes. La moindre erreur peut faire échouer le tuto. Finalement, nous allons aussi configurer la configuration PHP pour résoudre une possible vulnérabilité :
sudo nano /etc/php5/fpm/php.ini
Descendez dans le fichier (ou recherchez avec CTRL+W avec Nano), jusqu’à trouver cette ligne :
;cgi.fix_pathinfo=1
Dé-commentez cette ligne en enlevant le point-virgule « ; » devant cette ligne et changez le « 1 » en « 0 » comme ceci :
cgi.fix_pathinfo=0
Pour que les modifications soient prises en compte, redémarrer php5-fpm et nginx avec la commande :
Commande :sudo /etc/init.d/php5-fpm reload && sudo /etc/init.d/nginx reload
Etape 4 – Tester la configuration PHP :
Maintenant nous allons tester que PHP et Nginx fonctionnent bien ensemble et soient bien configurés. Pour ce faire, aller dans le dossier racine de votre serveur web :
Commande : cd /usr/share/nginx/www
Créez un fichier que vous nommerez index.php :
Commande :sudo nano index.php
Ajoutez-y la ligne suivante :
<?php phpinfo(); ?>
Cette ligne appelle la fonction PHP qui recense toutes les informations sur l’interpréteur PHP. Visitez l’adresse IP de votre Raspberry Pi ou votre nom de domaine dans votre navigateur web. SI tout fonctionne bien, vous tombez sur une page d’information PHP ressemblant à celle-ci :
Voilà qui est fait ! Nous avons installé, configuré et testé PHP5 et Nginx. Je pense que c’était la plus longue étape ! Pour toutes questions ou tout commentaires, n’hésitez pas !
Le prochain tuto se concentrera sur l’installation de MySQL sur Raspberry Pi et de sa configuration en vue d’installer WordPress.
BenTek.
0 commentaires