Table des matières

Sommaire Raspberry Pi sous Linux

Rpi - Installer un serveur (Apache - PHP - mySQL)

[Mise à jour le 9/7/2024]

Sources

Lectures connexes

Mots-clés


1. Apache HTTP Server

Le logiciel libre Apache HTTP Server est un serveur HTTP créé et maintenu au sein de la fondation Apache. Jusqu'en avril 2019, ce fut le serveur HTTP le plus populaire du World Wide Web. Il est distribué selon les termes de la licence Apache. Wikipédia


1.1 Mise à jour

*.bash
sudo apt update && sudo apt upgrade -y # A entrer dans une console (mise à jour)
sudo apt update # Vérification de la mise à jour


1.2 Installation

*.bash
sudo apt install apache2 -y


1.3 Affectation des droits

*.bash
# chown -R [UTILISATEUR]:[GROUPE] Répertoire
# -R change les modes de tous les fichiers dans les sous-répertoires de manière récursive.
sudo chown -R pi:www-data /var/www/html/ # l'utilisateur pi devient propriétaire de /var/www/html/
                                         # www-data devient le groupe avec les droits sur /var/www/html/
sudo chmod -R 770 /var/www/html/         # pi et www-data ont tous les droits sur /var/www/html/, les autres aucun

Exemple

*.bash
apt-cache policy apache2
 
# Exemple d'affichage obtenu
# apache2:
#   Installé : 2.4.25-3+deb9u9
#   Candidat : 2.4.25-3+deb9u9
#  Table de version :
#  *** 2.4.25-3+deb9u9 500
#         500 http://raspbian.raspberrypi.org/raspbian stretch/main armhf Packages
#         100 /var/lib/dpkg/status


1.4 Affichage de la page d'accueil dans un navigateur

Entrer l'@IP du Raspberry dans un navigateur pour afficher la page ci-dessous.

Apache utilise le répertoire /var/www/html comme racine pour le site. Cela signifie que quand on s'adresse au Raspberry sur le port 80 (HTTP), Apache cherche le fichier dans /var/www/html.

Exemple : si on entre l’adresse http://127.0.0.1/example, Apache cherchera le fichier example dans le répertoire /var/www/html.

Pour accéder aux fichiers, sites, etc., on doit les ajouter dans /var/www/html.


2. Langage PHP

PHP (officiellement, ce sigle est un acronyme récursif pour PHP Hypertext Preprocessor) est un langage de scripts généraliste et Open Source, spécialement conçu pour le développement d'applications Web côté serveur. Il peut être intégré facilement au HTML.


2.1 Installation

L'installation de PHP est vérifiable en effectuant le test du §2.4
*.bash
sudo apt install php php-common -y # installe les extensions communes (bz2, calendar, Core, ctype, 
                                   # curl, date, etc.)pour les paquets PHP


2.2 D'autres extensions

*.bash
sudo apt -y install php-mbstring # nécessaire pour le stockage et l'affichage des caractères multioctets


2.3 Version

*.bash
php -v
 
# Exemple d'affichage obtenu
# PHP 7.3.11-1~deb10u1 (cli) (built: Oct 26 2019 14:14:18) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies
#    with Zend OPcache v7.3.11-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies


2.4 Test

Créer un fichier index.php dans /var/www/html/ avec touch et y placer le code ci-dessous avec nano. Le tester dans un navigateur.

*.php
<?php
phpinfo()
?>

Une page ressemblant à la copie d'écran ci-dessous doit s'afficher.


3. Installation d'une base de données

MariaDB est un système de gestion de base de données édité sous licence GPL. Il s'agit d'un fork communautaire de MySQL : la gouvernance du projet est assurée par la fondation MariaDB, et sa maintenance par la société Monty Program AB, créateur du projet. Wikipédia

*.bash
sudo apt install mariadb-server php-mysql -y # on installe mariadb-server et php-mysql 
# (qui servira de lien entre php et mysql)
*.bash
sudo mysql --user=root # Connexion à la base
 
# Exemple d'affichage obtenu
# Welcome to the MariaDB monitor.  Commands end with ; or \g.
# Your MariaDB connection id is 47
# Server version: 10.3.17-MariaDB-0+deb10u1 Raspbian 10
 
# Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
# Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
# MariaDB [(none)]> 
 

Nous allons maintenant supprimer l’utilisateur root et créer un nouvel utilisateur root, car celui par défaut n’est utilisable que par le compte administrateur du système, et n’est donc pas accessible aux scripts PHP du serveur.

Pour cela, une fois connecté à mariaDB (invite MariaDB[(none)], lancez les commandes suivantes (remplacez password par le mot de passe de votre choix) :

*.sql
DROP USER 'root'@'localhost'; # Suppression de root
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password'; # password à remplacer
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
# Se déconnecter avec Ctrl-C
Pour se connecter, on utilisera la commande mysql --user=root --password=motdepasse. Pour se déconnecter : Ctrl-C
Un lien pour voir comment changer les mots de passe des utilisateurs et de root ici


4. PHPMyAdmin, gérer facilement ses bases de données

PHPMyAdmin est une application développée en PHP qui vise à fournir une interface simplifiée pour MariaDB (MySQL). Elle permet notamment de voir le contenu d'une base de données, ou de la manipuler sans avoir besoin de faire des requêtes MySQL.

*.bash
sudo apt install phpmyadmin -y

Choisir l'utilisation de PHPMyAdmin pour un serveur Apache.

Comme la base de données a déjà été configurée, choisir “NON” à la question concernant l’utilisation de dbconfig-common.

Le mot de passe root est celui défini pour MariaDB (MySQL).

Si nécessaire, activer l’extension mysqli avec les commandes suivantes :

*.bash
sudo phpenmod mysqli
sudo /etc/init.d/apache2 restart
Pour vérifier le bon fonctionnement de PHPMyAdmin, il suffit de s'y connecter avec l'adresse du Raspberry.

Exemples

127.0.0.1/phpmyadmin # sur le Raspberry
192.168.x.y/phpmyadmin # sur un réseau local
Si une erreur se produit, c'est peut-être dû au fait que PHPMyAdmin est installé dans un autre dossier. Dans ce cas, entrer la commande ci-dessous.
*.bash
# Création d'un lien symbolique (-s) entre la source et la destination
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

La page de connexion ci-dessous doit s'afficher dans le navigateur.


5. Extensions pour Apache

5.1 PHP cURL

cURL est un outil en ligne de commande qui permet de transférer des données depuis ou vers un serveur. Cet outil prend en charge divers protocoles réseau tels que HTTP, HTTPS, FTP, SFTP, SCP, etc. Curl peut être utilisé pour automatiser des tâches Web, télécharger des fichiers, envoyer des requêtes HTTP, pour l'exploration Web, etc. Wikipédia

cURL est installé avec les extensions communes en exécutant la commande sudo apt install php-common (§2.1).