installation serveur web raspberry pi

Comment Installer un Serveur Web sur Raspberry Pi ?

C’est une question de base que vous risquez de vous poser souvent, pour des projets variés.
En tant que développeur web, cela m’arrive souvent de me lancer dans des projets web et je suis habitué à cette installation, mais je peux comprendre que ce ne soit pas évident pour tout le monde.
Voyons donc comment installer un serveur web étape par étape sur un Raspberry Pi.

En règle générale, un serveur web complet est composé de 3 services : Apache, PHP et MySQL.
La mise en place d’un serveur web passe donc par l’installation et la configuration des logiciels correspondant avec le gestionnaire de paquets « apt » ou l’outil graphique.

Dans ce tutoriel, je vais vous expliquer comment installer et configurer tout cela pour qu’ils fonctionnent ensemble. Je vous donnerai aussi quelques astuces suivant ce dont vous avez besoin.

À propos, si vous débutez sur Raspberry Pi et que vous souhaitez accélérer les choses (tout en vous amusant), n’hésitez pas à télécharger mon e-book Maitrisez Raspberry Pi en 30 jours. Il s’agit d’un défi de 30 jours dans lequel vous apprendrez une nouvelle compétence chaque jour. Vous économiserez du temps et de l’argent et pourrez enfin profiter de votre Raspberry Pi à son plein potentiel. Je vous offre d’ailleurs 10% de remise aujourd’hui si vous utilisez ce lien !

Les bases d’un serveur web

Avant d’aller plus loin dans l’installation des logiciels, j’aimerais m’assurer que tout le monde comprend ce qu’on est en train de faire, et donc le fonctionnement d’un serveur web.

Apache

L’objectif principal du service Apache sera de répondre aux requêtes HTTP et HTTPS qui arriveront sur le Raspberry Pi.
HTTP et HTTPS sont les protocoles principaux pour le surf sur le web.
Cela fonctionne, car Apache est là pour répondre aux demandes des navigateurs sur les ports 80 et 443.

Apache reçoit une requête sur http://IP et doit afficher quelque chose en réponse, suivant comment il a été configuré.
Par exemple, cela peut être la page HTML du site ou de l’application que vous utilisez sur votre Raspberry Pi.

Exemple de page HTML

HTML est un langage de programmation, qu’Apache va retourner et que les navigateurs web sont capables de lire afin de les transformer en page web compréhensible pour nous.

PHP

PHP ajoute du contenu dynamique aux pages web.
HTML est un langage statique que vous pouvez améliorer avec du code PHP pour que votre page soit différente suivant certains facteurs (langue du visiteur, historique du visiteur, date du jour, etc.).

Voilà ce qu’il se produit lorsqu’un visiteur vient sur votre page :

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant
  • PHP compile le code PHP présent sur la page
  • PHP génère un code HTML à partir de ce code PHP
  • Apache affiche toujours du code HTML, mais cette fois PHP sera passé avant pour l’affiner suivant les besoins

Je vous donnerai des exemples plus concrets par la suite pour vous aider à bien comprendre.

Ajout de code PHP dans une page HTML, permettant la création de contenu dynamique.

MySQL

MySQL est un système de gestion de bases de données, pour stocker les données nécessaires au fonctionnement du site.
Par exemple, sur RaspberryTips, une base de données contient tous les articles, tous les liens des images, etc.

MySQL se décompose en 3 éléments :

  • Un serveur, pour enregistrer les données dans des fichiers et répondre aux requêtes
  • Un client, pour se connecter au serveur, que ce soit en local ou à distance
  • Un langage spécifique (SQL), qui permet par exemple d’écrire les requêtes nécessaires afin de récupérer les données voulues

Installation d’un serveur web sur Raspberry Pi

À cette étape, vous savez déjà à quoi sert chaque paquet, et si vous avez besoin de tout ou non.
Si vous souhaitez simplement afficher des pages web statiques par exemple, alors Apache seul est suffisant.
Ou si vous voulez des pages dynamiques, mais sans stockage de données, alors Apache et PHP suffiront, MySQL ne sera pas nécessaire pour vous.
Je vous laisse faire votre choix et passer les étapes inutiles dans votre cas.

Avant de démarrer, voici les deux pré-requis :

Si les commandes Linux ce n’est pas trop votre truc, n’hésitez pas à jeter un œil à cet article qui vous explique les commandes qu’il faut absolument connaître. Je vous donne aussi une antisèche à télécharger pour les avoir toujours sous la main !

1. Installer Apache

La première étape sera d’installer Apache sur votre Raspberry Pi
Pour ce faire, utilisez apt de cette manière :
sudo apt install apache2

Vérifions ensuite que cela fonctionne correctement :

Comme vous pouvez le voir sur cette page, les pages web sont à placer dans le dossier /var/www/html sur le Raspberry Pi.
Vous pouvez éditer le fichier index.html pour changer cette page, ou en ajouter de nouvelles dans le même dossier (attention : les privilèges d’administrateur sont nécessaires, pensez à utiliser « sudo »).

Vous pouvez aussi simplement supprimer cette page et envoyer vos fichiers dans ce dossier.
Par exemple, si vous souhaitez juste partager des logiciels sur votre réseau, supprimez le fichier index.html et transférés les logiciels dans /var/www/html.
Apache générera automatiquement une page web avec la liste des fichiers et les liens pour les télécharger.

2. Installer PHP

Ensuite nous devons installer PHP pour ajouter la possibilité de créer du contenu dynamique sur notre serveur web.

Installation

Pour installer PHP, vous aurez besoin de 2 paquets supplémentaires :
sudo apt install php libapache2-mod-php

Le premier ajoute le paquet de base pour PHP et la possibilité de lancer des scripts PHP depuis le terminal. Le second explique à Apache comment interpréter le PHP, vous permettant d’inclure du code PHP dans vos pages web.

Votre première page PHP

Nous allons maintenant vérifier que tout fonctionne bien avec notre installation avant d’aller plus loin.
Suivez les étapes suivantes pour créer un fichier PHP et le tester dans votre navigateur :

  • Rendez-vous dans le dossier web d’Apache
    cd /var/www/html
    Vous pouvez aussi utiliser un logiciel comme FileZilla ou WinSCP, et créer le fichier sur votre ordinateur avant de le transférer ici (pour ceux qui ont du mal avec les commandes).
  • Créez un fichier PHP :
    sudo nano test.php
  • Copiez les lignes suivantes à l’intérieur :
    <?php
    phpinfo();
    ?>

    Il s’agit d’une fonction de base affichant la configuration PHP dans le navigateur
  • Sauvegardez et quittez nano (CTRL+O, CTRL+X)
  • Rendez-vous ensuite dans votre navigateur, et ouvrez la page http://IP/test.php
  • Cela devrait afficher quelque chose du genre :

Si vous avez pu voir cette page, c’est que tout est OK, vos serveurs Apache et PHP sont prêts.
Continuons avec MySQL (si nécessaire).

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

3. Installer MySQL

La dernière partie de notre serveur est MySQL, et à nouveau nous allons à nouveau utiliser apt pour l’installer :
sudo apt install mariadb-server php-mysql

Le second paquet ajouter la possibilité d’utiliser MySQL dans votre code PHP directement
Il faudra redémarrer Apache pour appliquer les changements :
sudo service apache2 restart

J’ai un article complet sur MariaDB que vous trouverez ici si besoin, mais je vais vous donner les informations importantes ici.

Créer le premier utilisateur MySQL

MySQL permet d’enregistrer des données. Une authentification est nécessaire pour être sûr que seul les personnes autorisées puissent y accéder.
Afin de démarrer rapidement, nous allons créer un super utilisateur que vous utiliserez ensuite dans le code PHP.
Mais il est conseillé de créer des utilisateurs différents, avec uniquement les privilèges nécessaires.

  • Connectez-vous à la console MySQL
    sudo mysql
  • Créez une première base de donnée
    CREATE DATABASE test;
  • Créer votre premier utilisateur
    CREATE USER 'webuser' IDENTIFIED BY 'password';
    Pensez bien à remplacer « password » par un mot de passe compliqué dès maintenant, vous risquez d’oublier ensuite
  • Ajoutez-lui les permissions d’accéder à la base de donnée test :
    GRANT ALL PRIVILEGES ON test.* To 'webuser'@'localhost' IDENTIFIED BY 'password';
  • Appliquer les modifications :
    FLUSH PRIVILEGES;
  • Quittez la console MySQL
    quit

Créer une première table dans la base de donnée

Maintenant que nous avons notre base de donnée et un utilisateur autorisé, nous allons vérifier que tout fonctionne en créant une première table dans cette base de donnée, afin de l’utiliser plus tard dans du code PHP.

Si vous êtes débutant concernant les concepts de base de donnée, imaginez qu’une base de donnée et un fichier Excel, et que chaque page est un onglet différent. Chaque table nous permettra de stocker des données différentes.

  • Retournez dans la console MySQL, cette fois en utilisant notre nouveau compte :
    mysql -uwebuser -ppassword test
  • Créer une table toute simple :
    CREATE TABLE IF NOT EXISTS test (
    line_id INT AUTO_INCREMENT,
    data VARCHAR(255) NOT NULL,
    PRIMARY KEY (line_id)
    );

    Évidemment, cette table est inutile, c’est juste pour le test. Mais si vous souhaitez commencer par une table dont vous avez besoin, n’hésitez pas.
    Appuyez sur « Entrée » pour exécuter la requête.
  • Insérez une ligne dedans :
    INSERT INTO test (data) VALUES ("This is a test string in my database");
    Nous avons donc ajouté notre première ligne dans cette table, avec la phrase de test dans le champ « data ».
  • Quittez MySQL :
    quit

Maintenant que nous avons tout ce qu’il nous faut (utilisateur, base, table), nous pouvons passer à la partie PHP.

Votre premier script PHP en lien avec MySQL

Voici comment créer un fichier PHP qui affichera les données de la base :

  • Rendez-vous à nouveau dans le dossier Apache :
    cd /var/www/html
  • Créez un nouveau fichier PHP :
    sudo nano test-mysql.php
  • Coller les lignes suivantes à l’intérieur :
<?php
$link = mysqli_connect("127.0.0.1", "webuser", "password", "test");
if($link) {
  $query = mysqli_query($link, "SELECT * FROM test");
  while($array = mysqli_fetch_array($query)) {
    echo $array['data']."<br />";
  }
}
else {
  echo "MySQL error :".mysqli_error();
}
?>

Éditez la première ligne afin de mettre à jour l’utilisateur et le mot de passe si nécessaire.
Sauvegardez et quittez (CTRL+O, CTRL+W).

Testez à nouveau dans votre navigateur : http://IP/test-mysql.php.
Cela devrait afficher le contenu de votre table.

Nous y voilà, vous savez maintenant comment installer un serveur web basique et créer une première page pour vous connecter à MySQL et afficher quelque chose provenant de la base de donnée.
À vous de jouer maintenant, adaptez le code PHP et la base de donnée pour faire ce dont vous avez besoin.

Astuces supplémentaires pour gérer un serveur web

Pour terminer, je vais vous donner deux astuces pour améliorer votre serveur web ou le rendre plus simple à gérer.

Installer PhpMyAdmin

Dans cet article, nous avons fait toutes les modifications dans la base de donnée MySQL manuellement, en exécutant les requêtes permettant de créer les utilisateurs, de leur donner des droits ou d’insérer des données.
Mais il existe un outil très répandu et beaucoup plus rapide / pratique pour faire cela : PhpMyAdmin.

Il s’agit d’un outil gratuit, vous donnant accès à une page web pour la gestion de votre serveur MySQL.
Voici comment l’installer :

  • Installez le paquet avec apt :
    sudo apt install phpmyadmin
  • Pendant l’installation, choisissez ces deux options :
    • Choisir Apache2 (appuyez sur espace puis entrée)
    • Configurer la base de donnée PhpMyAdmin avec db-common: non
  • Après l’installation, rendez-vous sur http://IP/phpmyadmin
  • Connectez-vous avec l’utilisateur créé précédemment
  • Vous trouverez ici notre base de donnée dans le menu, avec la table « test » à l’intérieur, et les données s’affichent à droite
    Cela ressemble à ça :
  • Vous trouverez également à droite un menu intuitif pour faire ce que vous voulez dans cette base de donnée

Créer des virtual hosts

Si vous avez besoin d’héberger plusieurs sites ou applications sur votre Raspberry Pi, il existe deux possibilités :

  • Créer des sous dossiers dans /var/www/html et y accéder via une url qui inclue le dossier en question
    Par exemple : http://IP/dossier1 et http://IP/dossier2
  • Ou alors utiliser les virtual hosts de Apache pour avoir des adresses plus propres comme http://app1.mondomaine.com et http://app2.mondomaine.com

Si vous souhaitez utiliser les virtual hosts, vous aurez besoin de :

  • Créer les sous-domaines dans votre serveur DNS ou dans le fichier hosts de votre ordinateur
  • Puis créer les virtual hosts dans la configuration Apache, un pour chaque sous-domaine

La configuration est à faire dans le dossier /etc/apache2/sites-enabled.
Vous trouverez plus d’informations ici concernant la syntaxe à utiliser.

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Rappel: J'ai crée une communauté d'utilisateurs de Raspberry Pi qui vous permet de partage vos avancées, poser vos questions et recevoir de nombreux avantages exclusifs (anglophones uniquement). Cliquez sur le lien pour en savoir plus.

Conclusion

J’espère que cet article vous aura été utile et que vous avez compris comment installer un serveur Web sur votre Raspberry Pi.
Il s’agit d’un guide principalement pour les débutants (ou en rappel), mais j’essayerai d’écrire davantage sur le sujet à l’avenir.

Une fois cela fait, vous pouvez installer des applications web telles que WordPress, Webmin ou autre.

Téléchargez mon antisèche !
Format PDF pratique, avec les 74 commandes à retenir pour maîtriser son Raspberry Pi.
Télécharger maintenant

Ressources supplémentaires pour votre Raspberry Pi

Initiation au Raspberry Pi en vidéo
Si vous débutez et voulez passer rapidement à la vitesse supérieure, j’ai exactement ce qu’il vous faut.
Regardez ma formation vidéo qui vous aidera à démarrer du bon bien, choisir votre matériel, installer les meilleures applications et vous lancer directement dans vos premiers projets avec mon aide.
Regarder les vidéos dès maintenant

Maîtrisez votre Raspberry Pi en 30 jours
Vous avez besoin de plus ? Si vous êtes à la recherche des meilleures astuces pour devenir expert sur Raspberry Pi, ce livre est fait pour vous. Développez vos compétences sous Linux et pratiquez via de nombreux projets en suivant mes guides étape par étape. 10% de remise aujourd’hui !
Télécharger le livre au format PDF ici

Maîtrisez Python sur Raspberry Pi
Pas besoin d’être un génie pour coder quelques lignes pour votre Raspberry Pi.
Je vous apprends juste ce qu’il faut sur Python afin de réaliser n’importe quel projet. La seconde partie du livre est d’ailleurs consacrée à des exemples de projets où je vous guide pas à pas.
Ne perdez pas de temps, apprenez le strict nécessaire et économisez 10% avec ce lien :
Télécharger maintenant

Autres ressources pour profiter de votre Raspberry Pi
J’ai regroupé toutes mes recommandations de logiciels, sites utiles et de matériel sur cette page de ressources. Je vous invite à la consulter régulièrement pour faire les bons choix et rester à jour.
Visiter les pages ressources


Ce tutoriel ne marche plus à 100%? Prévenez-moi pour que je le mette à jour!

A lire également

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *