Comment installer un serveur web sur le Raspberry Pi (Apache + PHP + MySQL)
ⓘ Cet article peut avoir été partiellement ou entièrement traduit en utilisant des outils automatiques. Nous nous excusons pour les erreurs que cela pourrait causer.
Après avoir créé votre carte SD, et après avoir démarré votre Raspberry Pi pour la première fois, il y a de fortes chances que vous vouliez l’utiliser comme serveur web.
Pourquoi un Raspberry Pi comme serveur web ?
Mais pourquoi utiliser un Raspberry comme serveur web, plutôt que d’utiliser des prestataires de services spécialisés dans l’hébergement web ?
D’abord, d’un point de vue économique, vous devez savoir que les services d’hébergement web ne sont pas gratuits et que vous devez payer chaque mois / année. Contrairement aux Raspberry qui ont juste besoin d’une connexion.
En outre, en choisissant Raspberry, vous avez la possibilité de modifier vos services comme vous le souhaitez (exemples : la taille du disque, l’hébergement de Base de données, etc.), ce qui n’est généralement pas le cas avec les hébergeurs spécialisés , Qui vendent souvent des hébergements mutualisés avec une faible capacité de configuration.
Cependant, pour prendre en charge plus d’utilisateurs, vous devriez utiliser un Raspberry Pi 3 (le Pi 3 peut être trouvé ici), le Raspberry Pi avec 1 GB de RAM, plutôt que le Raspberry type B + (512 MB de RAM)
La question qui se pose maintenant est, comment faire un serveur web sur Raspeberry Pi ?Installation du serveur Apache avec Raspbian
Qu’est-ce qu’Apache ?
D’abord, nous allons installer Apache, qui est le serveur web en tant que tel.
Quand on parle de serveur web, on pense souvent à la machine, mais ce terme désigne aussi le logiciel qui permet à la machine d’analyser les requêtes des utilisateurs (sous forme http), et de renvoyer le fichier correspondant à la requête (Ou une erreur si le fichier n’est pas trouvé, ou la requête mal formulée).
En tant que partie d’Apache, c’est du logiciel dont on parle.
À l’heure actuelle, Apache est le serveur web le plus utilisé, avec environ 60% de parts de marché. Apache a sa propre licence, utilisée par de nombreux autres projets. De plus, l’utilisation massive d’Apache (qui est devenu la norme pour les serveurs web), couplée à sa grande popularité, a conduit à une énorme abondance de documentation, de cours, et d’autres livres traitant de son utilisation, et de sa sécurité, comme ce livre.
Que ce soit pour le Raspberry Pi et Raspbian, ou pour une machine plus généraliste, Apache est donc un choix sûr, et les compétences que vous pourrez acquérir sur le sujet vous seront toujours utiles.
Installation d’Apache
Avant d’installer le serveur, il faut s’assurer que nous avons une machine à jour. Pour cela, nous devons avoir les droits d’administrateur, soit à cause de la commande sudo.
sudo apt updatesudo apt upgradesudo apt update
Une fois que le Raspberry Pi est à jour, nous allons installer le serveur Apache.
sudo apt install apache2
Au passage, nous en profiterons pour donner des droits au fichier apache que vous pourrez facilement gérer vos sites. Pour cela, exécutez les commandes suivantes :
sudo chown -R pi:www-data /var/www/html/sudo chmod -R 770 /var/www/html/
Vérifier si Apache fonctionne
Une fois l’installation terminée, nous pouvons tester qu’Apache fonctionne correctement en allant sur l’adresse du Raspberry.
Pour cela, il faut essayer d’accéder au Raspberry depuis le port 80 (ce port n’étant pas ouvert de l’extérieur, il faudra faire depuis le Raspberry lui-même). Ne vous inquiétez pas, c’est très simple. Il suffit d’ouvrir le navigateur web du Raspberry, et d’aller sur « http://127.0.0.1″. Vous devriez alors obtenir une page avec un message du type » Ça marche ! » et plein d’autres textes.
Si vous n’avez pas déjà une interface graphique sur votre Raspbian, ou si vous utilisez SSH pour vous connecter à votre Raspberry, vous pouvez utiliser la commande suivante :
wget -O check_apache.html http://127.0.0.1
Cette commande va enregistrer le code HTML de la page dans le fichier « check_apache.html » dans le répertoire courant.
Il ne vous reste donc plus qu’à lire le fichier avec la commande
cat ./check_apache.html
Si vous voyez marqué à un endroit du code » Ça marche ! « , c’est qu’Apache fonctionne.
Apache utilise le répertoire « /var/www/html » comme racine pour votre site. Cela signifie que lorsque vous appelez votre Raspberry sur le port 80 (http), Apache cherche le fichier dans « /var/www/html ».
Par exemple, si vous appelez l’adresse « http://127.0.0.1/exemple », Apache cherchera le fichier « exemple » dans le répertoire « /var/www/html ».
Pour ajouter de nouveaux fichiers, sites, etc, vous devrez les ajouter à ce répertoire.
Vous pouvez maintenant utiliser votre Raspberry pour faire un site en HTML, CSS et JavaScript, en interne.
Cependant, vous pouvez vouloir rapidement permettre des interactions entre le site et l’utilisateur. Par exemple, pour permettre à l’utilisateur de s’enregistrer, etc. Pour cela, vous allez avoir besoin de PHP.
Installation de PHP sur votre Raspberry Pi
Qu’est-ce que PHP ?
Tout d’abord, vous devez savoir que PHP est un langage interprété. Et comme dans le cas des serveurs, l’acronyme PHP peut avoir plusieurs significations. En effet, quand on parle de PHP, on peut parler soit du langage, soit de l’interpréteur.
Ici, quand on parle d’installer PHP, cela signifie que l’on va installer l’interpréteur, afin d’utiliser le langage.
Le PHP (le langage cette fois) est principalement utilisé pour rendre un site dynamique, c’est-à-dire que l’utilisateur envoie des informations au serveur qui renvoie les résultats modifiés en fonction de ces informations. A l’inverse, un site statique ne s’adapte pas aux informations fournies par l’utilisateur. Il est enregistré sous forme de fichier une fois pour toutes, et délivrera toujours le même contenu.
PHP est gratuit, et maintenu par la Fondation PHP, ainsi que par Zend Enterprise, et diverses autres sociétés (à noter que Zend est également l’auteur du célèbre framework Zend PHP, largement utilisé et reconnu dans le monde du » business « ).
C’est l’un des langages de programmation les plus utilisés, et c’est même le plus utilisé pour la programmation web, avec environ 79% de part de marché.
Encore, toutes les compétences que vous pourrez acquérir, sur le langage, ou sur l’installation et la configuration de l’interpréteur, vous seront toujours utiles. Nous ne pouvons donc que vous conseiller d’apprendre le PHP, qui est vraiment un langage merveilleux et trop souvent sous-estimé.
Comment installer PHP
Nous allons à nouveau utiliser l’administrateur pour installer PHP avec la ligne de commande.
sudo apt install php php-mbstring
Contrôler si PHP fonctionne
Pour savoir si PHP fonctionne correctement, ce n’est pas très compliqué, et la méthode est assez similaire à celle utilisée pour Apache.
Vous allez d’abord supprimer le fichier « index.html » dans le répertoire « /var/www/html ».
sudo rm /var/www/html/index.html
Puis créer un fichier « index.php » dans ce répertoire, avec cette ligne de commande
echo "<?php phpinfo ();?>" > /var/www/html/index.php
À partir de là, l’opération est la même que pour la vérification d’Apache. Vous essayez d’accéder à votre page, et vous devriez avoir un résultat proche de cette image (si vous n’avez pas d’interface, utilisez la même méthode que précédemment, et cherchez les mots « Version PHP »).
Tableau généré par la commande phpinfo sur un Raspberry.
Une base de données MySQL pour votre serveur
Un SGBD c’est quoi ? Pourquoi MySQL ?
Maintenant que nous avons mis en place PHP, vous voudrez probablement stocker des informations pour les utiliser dans vos sites. Pour cela, on utilise le plus souvent des bases de données.
Nous allons donc mettre en place un SGBD (Système de Gestion de Bases de Données), à savoir MySQL.
MySQL est un SGBD gratuit, puissant, massivement utilisé (environ 56% de part de marché des SGBD gratuits). Là encore, MySQL est tellement indispensable au développement, quel que soit le langage, qu’il faut absolument l’apprendre et le maîtriser, avec ce livre par exemple.
Comment installer MySQL
Pour cela, nous allons installer mariadb-server et php-mysql (qui servira de lien entre php et mysql)
sudo apt install mariadb-server php-mysql
Vérifier le bon fonctionnement de MySQL
Pour vérifier le fonctionnement de MySQL, nous allons cette fois-ci utiliser uniquement la ligne de commande. Pour cela, nous allons simplement nous connecter via la commande :
sudo mysql --user=root
Nous allons non supprimer l’utilisateur root mysql par défaut et créer un nouvel utilisateur root mysql, car celui par défaut ne peut être utilisé qu’avec le compte root Linux, et donc non disponible pour le serveur web et les scripts php.
Pour ce faire, une fois votre connexion à MySQL, exécutez simplement ces commandes (remplacez password
par le mot de passe que vous voulez) :
DROP USER 'root'@'localhost';CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
Vous avez donc maintenant un serveur web, connecté à PHP et MySQL. C’est tout ce qu’il faut.
(Lors de vos prochaines connexions, vous pourrez vous connecter à mysql sans utiliser sudo, avec la commande mysql --user=root --password=yourmysqlpassword
).
Ajouter PHPMyAdmin
L’installation de PHPMyAdmin n’est absolument pas nécessaire. Dans cette installation, nous ne nous occuperons d’aucun paramètre de sécurité particulier !
L’installation de PHPMyAdmin est assez rapide et facile, nous devons simplement utiliser le gestionnaire de paquets avec cette commande :
sudo apt install phpmyadmin
Le programme d’installation de PHPMyAdmin vous posera quelques questions. A propos de la partie dbconfig-common
, choisissez de ne pas l’utiliser (car nous avons déjà configuré notre base de données). Concernant le serveur pour lequel configurer PHPMyAdmin, choisissez Apache. Et le mot de passe root est celui que vous avez défini pour MySQL.
Vous devez également activer l’extension mysqli en utilisant la commande ci-dessus :
sudo phpenmod mysqlisudo /etc/init.d/apache2 restart
Vérifier que PHPMyAdmin fonctionne correctement
Pour vérifier que PHPMyAdmin fonctionne, vous allez simplement essayer d’y accéder, en utilisant l’adresse de votre Raspberry suivie de /phpmyadmin. Par exemple, localement, ce sera http://127.0.0.1/phpmyadmin
Si vous obtenez toujours une erreur, cela peut être dû au fait que PHPMyAdmin a été déplacé dans un autre répertoire. Dans ce cas, essayez la commande
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
Maintenant, nous pouvons accéder à PHPMyAdmin depuis le navigateur du Raspberry Pi, avec l’url : http://127.0.0.1/phpmyadmin
Rendre un serveur accessible depuis le web
Votre serveur web est prêt. Cependant, vous ne pouvez probablement pas y accéder depuis internet. En effet, il faudrait pour cela que votre modem redirige les requêtes vers votre Raspberry, les bons ports.
Pour mettre en place ces redirections, et même obtenir une URL, il faut se tourner vers DynDNS et la redirection de port !