Rpi - Installer un serveur (Apache - PHP - mySQL)
[Mise à jour le 9/7/2024]
Sources
- Tutoriel sur Raspberry Pi FR : “Installer un serveur Web sur votre Raspberry”
Lectures connexes
- Documentation du serveur Apache
- Manuel de PHP
- phpMyAdmin Bringing MySQL to the web
- Bienvenue sur WebPEM - Concevoir un site Web (côté serveur)
Mots-clés
- serveur HTTP, PHP, SQL, SQLi, mySQL
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
1.3 Affectation des droits
- Ressource : "Les utilisateurs et les droits" sur Openclassrooms.
- *.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
- Lecture de la version
- *.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.
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
- *.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.
Une page ressemblant à la copie d'écran ci-dessous doit s'afficher.
3. Installation d'une base de données
- Installation de MariaDB (MySQL)
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)
- Vérification
- *.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)]>
- Création d'un nouvel utilisateur root
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
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.
- Installation
- *.bash
sudo apt install phpmyadmin -y
- Réglages
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.
Si nécessaire, activer l’extension mysqli avec les commandes suivantes :
- *.bash
sudo phpenmod mysqli sudo /etc/init.d/apache2 restart
- Vérification
Exemples
127.0.0.1/phpmyadmin # sur le Raspberry 192.168.x.y/phpmyadmin # sur un réseau local
- *.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
- Documentation sur le site PHP.
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