Sommaire
Mise en place d’un serveur web Apache sur Raspberry Pi
Dans ce projet, je vous montre comment installer et configurer un serveur web Apache sur le Raspberry Pi.
Apache peut lui-même servir des fichiers HTML via les protocoles web HTTP et HTTPS. Grâce à des modules supplémentaires tels que PHP, Apache est également capable de servir du contenu dynamique.
Apache est l’un des serveurs web les plus populaires disponibles pour le Raspberry Pi. À lui seul, Apache représente 44 % de tous les serveurs web dans le monde.
Une alternative à Apache est un serveur web Nginx et est considéré comme étant beaucoup plus rapide qu’Apache pour certaines tâches. C’est à vous de choisir la technologie que vous voulez utiliser.
Dans ce tutoriel Apache Raspberry Pi, nous vous guiderons à travers les étapes de configuration d’Apache, d’installation de PHP et de création de votre premier fichier Apache VirtualHost de base.
Dans ce tutoriel, nous abordons toutes les bases d’Apache, mais nous n’abordons pas la configuration de MYSQL et de PHPMyAdmin. Nous n’abordons pas non plus la mise en place de WordPress sur le Raspberry Pi. Tous ces sujets seront traités dans des tutoriels séparés.
Matériel nécessaire
Vous trouverez ci-dessous tous les éléments que j’ai utilisés pour ce tutoriel sur le serveur web Apache Raspberry Pi.
- Raspberry Pi 2, 3 ou 4
- Carte Micro SD
- Alimentation
- Cordon Ethernet ou dongle WiFi (les Pi 3 et 4 ont le WiFi intégré)
- Un boitier (optionnel)
Installer un serveur web Apache sur le Raspberry Pi
1. Mettre à jour les paquets
Avant d’installer Apache sur notre Raspberry Pi, nous devons d’abord nous assurer que la liste des paquets est à jour en exécutant les deux commandes suivantes.
sudo apt-get update
sudo apt-get upgrade
2. Installer Apache2
Ensuite, nous devrons installer le paquet Apache2 sur notre Raspberry Pi.
Pour ceux qui ne savent pas ce qu’est Apache, il s’agit d’un logiciel serveur qui sert les fichiers HTML d’un ordinateur au navigateur web.
Pour installer apache2 sur votre Raspberry Pi, entrez la commande suivante dans le terminal.
sudo apt install apache2 -y
3. Vérifier le fonctionnement d’Apache2
Avec Apache2 installé sur notre Raspberry Pi, nous avons maintenant un serveur web extrêmement basique qui fonctionne. Le serveur sera en mesure de fournir du contenu non dynamique comme des fichiers HTML.
Dans la section suivante, nous allons étendre ce serveur web Apache de base en installant PHP sur le Raspberry Pi.
Pour vérifier qu’Apache fonctionne sur votre Raspberry Pi, vous pouvez entrer l’adresse IP du Raspberry Pi dans un navigateur web. Le serveur devrait retourner une page web avec un texte simple.
Si vous ne connaissez pas l’adresse IP, vous pouvez entrer la commande hostname dans le terminal pour la récupérer.
hostname -I
4. Se connecter au serveur web
Dans un navigateur web, entrez l’adresse IP de votre Raspberry Pi, il devrait se connecter et charger une page web d’Apache2.
5. Changement des droits du répertoire
Pour pouvoir apporter des modifications aux fichiers dans le répertoire /var/www/html sans utiliser la racine, nous devons configurer certaines permissions.
Tout d’abord, nous ajoutons l’utilisateur pi (notre utilisateur) au groupe www-data, le groupe par défaut pour Apache2.
Ensuite, nous donnons la propriété de tous les fichiers et dossiers du répertoire /var/www/html au groupe www-data.
sudo usermod -a -G www-data pi
sudo chown -R -f www-data:www-data /var/www/html
Une fois que vous avez exécuté cette commande, vous devez vous déconnecter puis vous reconnecter pour que les changements prennent effet.
6. Afficher la page web
Vous pouvez maintenant apporter des modifications à la page web par défaut en exécutant la commande suivante.
Cette commande utilisera l’éditeur de texte nano pour modifier le fichier index.html.
Le serveur web servira tous les fichiers du répertoire /var/ww/html/.
nano /var/www/html/index.html
Apache est un serveur web de base et il est très bien si vous voulez apprendre le HTML, le JS ou le CSS.
Cependant, si vous voulez utiliser PHP (utilisé pour les pages web dynamiques), passez à la section suivante du tutoriel.
Mise en place de PHP7 pour Apache
1. Installer les paquets PHP7
Veuillez noter qu’avant de commencer cette section, vous devez au moins être sous Raspbian Buster.
Pour commencer cette section, nous devons installer php7.3 et plusieurs autres paquets sur notre Raspberry Pi. Les paquets supplémentaires que nous installons sont ceux qui sont couramment utilisés par les applications PHP.
Heureusement pour nous, l’installation de tous les paquets dont nous avons besoin est un processus simple car PHP 7.3 est disponible dans le dépôt de paquets Raspbian.
Exécutez la commande suivante pour installer tous les paquets PHP sur votre Raspberry Pi.
sudo apt install php7.3 php7.3-mbstring php7.3-mysql php7.3-curl php7.3-gd php7.3-zip -y
2. Tester PHP sur le serveur web du Raspberry Pi
Maintenant que PHP est installé sur notre Raspberry Pi, nous pouvons le tester pour nous assurer qu’il fonctionne.
Nous n’avons pas à nous soucier de modifier les fichiers de configuration car cela se fait automatiquement lorsqu’Apache est détecté.
Nous pouvons tester pour voir si PHP fonctionne en créant un fichier PHP dans le répertoire /var/www/html/. La création d’un fichier dans ce répertoire permettra de le traiter et de l’afficher lorsque vous l’ouvrirez dans un navigateur web.
Pour notre exemple, nous allons créer un fichier PHP appelé exemple.php. Nous pouvons créer ce fichier en lançant la commande suivante.
sudo nano /var/www/html/exemple.php
3. Créer un fichier PHP
Dans ce fichier, nous devons ajouter les lignes suivantes sur le code PHP.
<?php
echo "La date d'aujourd'hui est ".date('Y-m-d H:i:s') ;
?>
Le code ci-dessus n’est qu’un script PHP très simple qui affiche la date du jour récupérée à l’aide de la fonction date() de PHP. Il permettra de vérifier que PHP est opérationnel.
Maintenant, enregistrez le fichier en appuyant sur Ctrl + X puis sur O et en appuyant sur ENTRÉE.
4. Tester le fichier et vérifier le fonctionnement de PHP
Dans votre navigateur web, allez à http://192.168.1.1/exemple.php. Veillez à remplacer 192.168.1.1 par l’adresse IP de votre Raspberry Pi.
En allant à l’URL suivante, vous devriez voir apparaître quelque chose comme ceci.
La date d'aujourd'hui est le 2019-06-28 21:30:45
Mise en place d’un hôte virtuel Apache
Les hôtes virtuels sont une partie essentielle du fonctionnement d’Apache. Apache utilise ces fichiers de Virtualhost pour savoir comment gérer un site individuel.
Dans cette section, nous vous montrerons comment créer un fichier d’hôte virtuel de base sur votre serveur web Apache Raspberry Pi. Les hôtes virtuels sont la façon dont Apache gère plusieurs sites web, chaque fichier d’hôte virtuel permettant de configurer et de paramétrer un domaine particulier.
1. Créer un fichier VirtualHost
Commencez par exécuter la commande suivante pour créer un fichier d’hôte virtuel de base appelé exemple.com.conf dans le dossier /etc/apache2/sites-available.
Si vous prévoyez de l’utiliser pour un nom de domaine réel, assurez-vous de remplacer exemple.com par le nom de domaine.
sudo nano /etc/apache2/sites-disponibles/exemple
2. Créer le VirtualHost
Dans ce fichier, saisissez le texte suivant. Nous expliquerons chaque partie du fichier d’hôte virtuel au fur et à mesure afin que vous puissiez avoir une idée de la manière de mettre en place un hôte virtuel très simple.
<VirtualHost *:80>
Cette ligne désigne le début de l’hôte virtuel et que cet hôte virtuel doit écouter sur le port 80.
Pour ceux qui ne connaissent pas le port 80, c’est le port par défaut pour http. De même, le port utilisé pour le https est le 443.
ServerName exemple.com
ServerAlias www.exemple.com
Nous ajoutons ici deux directives à notre hôte virtuel. La première de ces directives, appelée ServerName, désigne le domaine de base. Ce nom de serveur est utilisé pour faire correspondre le VirtualHost à un nom de domaine.
La seconde directive, ServerAlias, définit des noms de domaine supplémentaires qui seront mis en correspondance comme s’ils étaient le nom de domaine de base.
Cette directive est utile pour faire correspondre des noms supplémentaires tels qu’un sous-domaine www.
DocumentRoot /var/www/exemple.com/public_html
La directive DocumentRoot définit le répertoire à partir duquel tous les fichiers seront servis par Apache.
ErrorLog ${APACHE_LOG_DIR}/exemple.com_error.log
CustomLog ${APACHE_LOG_DIR}/exemple.com_access.log combined
Dans ces deux dernières directives, ErrorLog et CustomLog, nous précisons les endroits où nous voulons que les fichiers journaux soient conservés.
</VirtualHost>
Enfin, nous fermons la section VirtualHost
3. Enregistrer votre hôte virtuel
Une fois que tout cela sera fait, le code devrait ressembler à ce que nous avons ci-dessous. Bien sûr, en utilisant votre nom de domaine et non pas exemple.com.
<VirtualHost *:80>
ServerName exemple.com
ServerAlias www.exemple.com
DocumentRoot /var/www/exemple.com/public_html
ErrorLog ${APACHE_LOG_DIR}/exemple.com_error.log
CustomLog ${APACHE_LOG_DIR}/exemple.com_access.log combined
</VirtualHost>
Une fois que vous avez terminé, enregistrez le fichier en appuyant sur CTRL + X suivi de O puis sur ENTER.
4. Créer un dossier pour votre domaine
Créons maintenant le dossier dans lequel nous allons stocker nos fichiers HTML. Nous nous approprierons également ce dossier pour le groupe www-data.
Exécutez la commande suivante pour créer le dossier dont nous avons besoin et en prendre la propriété.
sudo mkdir -p /var/www/exemple.com/public_html
sudo chown -R www-data:www-data /var/www/exemple.com/public_html
5.Activier le Virtual Host
Maintenant que nous avons créé notre VirtualHost et le dossier correspondant, nous allons l’activer en exécutant la commande suivante.
Cette commande crée un lien symbolique pour notre fichier de configuration entre les répertoires /etc/apache2/sites-available/ et /etc/apache2/sites-enabled/.
sudo a2ensite exemple.com.conf
6. Recharger la configuration Apache
Enfin, pour que notre nouveau fichier d’hôte virtuel soit chargé, nous devons indiquer au service Apache2 de recharger sa configuration.
Cela peut être fait simplement en exécutant la commande ci-dessous.
sudo systemctl reload apache2
Vous pouvez maintenant faire pointer un serveur de nom de domaine (DNS) vers l’adresse IP publique de Raspberry Pi et lui faire servir des fichiers pour le nom de domaine demandé. Pour que cela fonctionne correctement, vous devez configurer la redirection de port.
Le serveur web Apache devrait maintenant fonctionner sur votre Raspberry Pi. Vous devriez également avoir une bonne idée de la manière de configurer PHP et les hôtes virtuels sur Apache.
Si vous avez des commentaires, des questions, des conseils ou quoi que ce soit d’autre, n’hésitez pas à laisser un commentaire ci-dessous.
6 commentaires
Bonjour,
lorsque j’arrive au point ” 5. Activer le Virtual Host” j’exécute la commande :
sudo a2ensite exemple.com.conf
–> dans mon cas sudo a2ensite AFDY21.com.conf
Message: Error site AFDY21.com does not exist
avez vous une idée?
merci en avance
Bonjour, oui j’ai remplacer la commande sudo nano /etc/apache2/sites-disponibles/exemple
par la commande sudo nano /etc/apache2/sites-available/exemple.
J’ai également lancé la commande pour renommer le fichier qui était en save : mv /etc/apache2/sites-available/exemple.com.conf.save /etc/apache2/sites-available/exemple.com.conf.
Puis commande : sudo a2ensite exemple.com.conf
Oui, il y a un oubli dans le nommage du fichier…
sudo nano /etc/apache2/sites-disponibles/exemple doit être sudo nano /etc/apache2/sites-disponibles/exemple.conf
à l’installation de PHP7.3 j’obtiens les messages suivants :
E: Unable to locate package php7.3
E: Couldn’t find any package by glob ‘php7.3’
E: Unable to locate package php7.3-mbstring
E: Couldn’t find any package by glob ‘php7.3-mbstring’
E: Unable to locate package php7.3-mysql
E: Couldn’t find any package by glob ‘php7.3-mysql’
E: Unable to locate package php7.3-curl
E: Couldn’t find any package by glob ‘php7.3-curl’
E: Unable to locate package php7.3-gd
E: Couldn’t find any package by glob ‘php7.3-gd’
E: Unable to locate package php7.3-zip
E: Couldn’t find any package by glob ‘php7.3-zip
j’ai une version toute fraichement installée de Raspberry OS Lite 64bit kernel 5.10
J’ai remplacé php7.3 par php7.4, et ça marche.
Bonjour.
Sur les changements de droits des utilisateurs, je suis d’accord avec les éléments présentés dans le paragraphe 5. Changement des droits du répertoire mais il me semble qu’il manque l’affectation des droits en écriture pour le groupe www-data.
En effet suite au chown, le dossier html hérite des droits précédents de root sur le dossier html à savoir les droits par défaut drwxr-xr-x. Si ces droits ne sont pas modifiés, il ne sera pas possible d’aller effectuer des transferts de fichiers en sftp dans ce dossier en étant connecté avec le compte pi. La seule solution pour développer du web dans le dossier var/www/html consisterait à utiliser nano en commande sudo et de rédiger tous ces scripts depuis le Rapsberry Pi, ce qui n’est peut être pas le plus pratique.
Un “sudo chmod g+w /var/www/html” résout le problème, quitte à enlever les droits par la suite.