install-apache-php-mysql
Comment installer Linux, Apache, MySQL, PHP
Introduction
"LAMP" est un groupe de logiciels libres qui sont généralement installés ensemble pour permettre à un serveur d'héberger des sites web dynamiques et des applications web. Ce terme est un acronyme qui représente le système d'exploitation Linux, avec le serveur web Apache. Les données du site sont généralement stockées dans une base de données MySQL et le contenu dynamique est traité par PHP.
Détails
Sur la plupart des systèmes Linux, vous pouvez installer MySQL en téléchargeant le paquetage mysql-server à partir des dépôts de gestion de paquets par défaut de votre système. Cependant, sous Debian, le paquet mysql-server installera en fait MariaDB, un dérivé du système de gestion de bases de données relationnelles MySQL développé par la communauté et qui fonctionne comme un remplacement direct de MySQL.
LAMP (Linux, Apache, MariaDB, and PHP)
Installation du serveur Web Apache
Apache est un serveur Web open source populaire qui permet d'afficher des pages Web aux visiteurs. Vous pouvez le configurer pour qu'il diffuse des pages PHP.
Tapez cette commande dans votre terminal pour installer le package httpd Apache :
Mettre à jour les packages
sudo apt update
Install apache2
sudo apt install apache2
Lorsque vous y êtes invité, saisissez Y pour confirmer l'installation d'Apache. Une fois l'installation terminée, démarrez votre serveur Apache avec cette commande :
sudo systemctl start apache2
Vous pouvez tester si votre serveur fonctionne en saisissant votre adresse IP publique ou votre nom de domaine dans votre navigateur Web
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
192.168.231.124
fe80::20c:29ff:fe9f:d513
Cela imprimera plusieurs adresses différentes. Vous pouvez essayer chacune d'elles dans votre navigateur Web.
Une autre méthode consiste à utiliser un tiers pour vous dire comment il perçoit votre serveur. Vous pouvez le faire en demandant à un serveur spécifique quelle est votre adresse IP avec cette commande :
curl http://icanhazip.com
Success! The your_domain virtual host is working!
Vous pouvez activer Apache pour démarrer au démarrage avec :
sudo systemctl enable apache2
Installation de MySQL (MariaDB)
Une fois votre serveur Web opérationnel, vous pouvez installer MariaDB. Elle organisera et fournira l'accès aux bases de données dans lesquelles votre site peut stocker des informations.
Pour installer le package logiciel MariaDB, exécutez :
sudo systemctl start mariadb
Une fois l'installation terminée, démarrez MariaDB :
sudo systemctl start mariadb
Vous pouvez activer MariaDB pour démarrer au démarrage avec cette commande :
sudo systemctl enable mariadb.service
Pour améliorer la sécurité de votre serveur de base de données, il est recommandé d’exécuter un script de sécurité préinstallé avec MariaDB. Ce script supprimera certains paramètres par défaut non sécurisés et verrouillera l’accès à votre système de base de données.
sudo mysql_secure_installation
Ce script vous emmène à travers une série d'invites où vous pouvez faire quelques changements dans votre configuration MariaDB.
-
La première invite vous demandera d'entrer le mot de passe de la racine de la base de données. Ce mot de passe ne doit pas être confondu avec celui de l'utilisateur racine du système. L'utilisateur root de la base de données est un utilisateur administratif qui a tous les privilèges sur le système de base de données. Comme vous venez d'installer MariaDB et que vous n'avez fait aucun changement de configuration, ce mot de passe sera vierge. Appuyez sur ENTER à l'invite.
-
L’invite suivante vous demande si vous souhaitez définir un mot de passe root pour la base de données. Tapez N, puis appuyez sur ENTRÉE.
À partir de là, vous pouvez appuyer sur Y, puis sur ENTER, pour accepter les valeurs par défaut pour toutes les questions suivantes. Cela supprimera les utilisateurs anonymes et la base de données de test, désactivera l'accès à distance à la racine et chargera ces nouvelles règles de sorte que le serveur respecte immédiatement les modifications que vous avez apportées.
Lorsque vous avez terminé, connectez-vous à la console MariaDB en entrant :
sudo mysql
Cela vous connecte au serveur MariaDB en tant qu'utilisateur root de la base de données administrative :
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 12
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Pour une sécurité accrue, il est préférable de disposer de comptes utilisateurs dédiés avec des privilèges moins étendus configurés pour chaque base de données. Cela est particulièrement important si vous prévoyez d'héberger plusieurs bases de données sur votre serveur.
Pour illustrer une telle configuration, créez une base de données nommée example_database et un utilisateur nommé example_user. Vous pouvez remplacer ces noms par des valeurs différentes.
Exécutez la commande suivante depuis votre console MariaDB pour créer une nouvelle base de données :
CREATE DATABASE example_database;
Vous pouvez créer un nouvel utilisateur et lui accorder tous les privilèges sur la base de données personnalisée que vous venez de créer. La commande suivante définit le mot de passe de cet utilisateur comme password, mais vous devez remplacer cette valeur par un mot de passe sécurisé :
GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
Cette commande donne à l'utilisateur example_user tous les privilèges sur la base de données example_database, tout en empêchant cet utilisateur de créer ou de modifier d'autres bases de données sur votre serveur.
Utilisez l'instruction FLUSH pour recharger et enregistrer les privilèges que vous venez d'accorder à example_user :
FLUSH PRIVILEGES;
exit
Vous pouvez tester si le nouvel utilisateur dispose des autorisations appropriées en vous connectant à nouveau à la console MariaDB, mais en utilisant les informations d'identification example_user que vous avez créées ci-dessus :
mysql -u example_user -p
[Notez] l'indicateur -p dans cette commande, qui vous demandera le mot de passe que vous avez choisi lors de la création de l'utilisateur example_user. Après vous être connecté à la console MariaDB, confirmez que vous avez accès à la base de données example_database avec cette instruction :
SHOW DATABASES;
Output
+--------------------+
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)
exit
Installation de PHP
Apache est installé pour servir votre contenu et MariaDB pour stocker et gérer vos données. PHP traitera le code pour afficher un contenu dynamique à l'utilisateur. En plus du paquetage php, vous aurez besoin de php-mysql, un module PHP qui permet à PHP de communiquer avec les bases de données basées sur MySQL. Les principaux paquets PHP seront automatiquement installés en tant que dépendances.
Utilisez cette commande pour installer les packages php et php-mysql avec
sudo apt install php php-mysql
Redémarrez le serveur Web Apache pour activer le module PHP que vous avez installé :
sudo systemctl restart apache2
Tester PHP sur votre serveur Web Apache
L’installation par défaut d’Apache sur Debian 12 crée une racine de document située dans /var/www/html
. Vous n’avez pas besoin de modifier les paramètres par défaut d’Apache pour que PHP fonctionne correctement sur votre serveur Web.
Vous pouvez toutefois modifier les paramètres d'autorisation par défaut du dossier racine de votre document Apache. Cela vous permet de créer et de modifier des fichiers dans ce répertoire avec votre utilisateur système habituel, sans avoir à faire précéder chaque commande de sudo.
La commande suivante modifiera la propriété de la racine du document Apache par défaut en un utilisateur et un groupe appelés mekoo, alors assurez-vous de remplacer le nom d'utilisateur et le groupe en surbrillance dans cette commande pour refléter le nom d'utilisateur et le groupe de votre système :
sudo chown -R mekoo-digital.mekoo-digital /var/www/html/
Vous pouvez créer un fichier de test PHP pour vous assurer que le serveur Web fonctionne comme prévu. Utilisez votre éditeur de texte préféré pour créer ce fichier. Les exemples suivants utilisent l'éditeur de texte vi par défaut dans Debian 12.
Créez un fichier PHP appelé info.php dans le répertoire /var/www/html
:
sudo nano /var/www/html/info.php
Cela ouvre un fichier PHP vide dans le répertoire /var/www/html
. Appuyez sur I pour entrer en mode INSERT dans l'éditeur nano. Cela vous permet de saisir et d'effectuer des modifications dans l'éditeur de texte. Tapez le code PHP suivant :
<?php phpinfo(); ?>
Vous pouvez tester si votre serveur Web affiche correctement le contenu PHP en accédant à l’adresse IP publique de votre serveur, suivie de /info.php :
http://your_server_IP_address/info.php
Cette page vous donne des informations sur votre serveur du point de vue de PHP. Elle est utile pour le débogage et pour s'assurer que vos paramètres sont appliqués correctement. Après avoir vérifié les informations pertinentes sur votre serveur PHP, il est préférable de supprimer ce fichier car il contient des informations sensibles sur votre environnement PHP et votre serveur Debian 12.
sudo rm /var/www/html/info.php
Tester la connexion à la base de données avec PHP (facultatif)
Vous pouvez tester si PHP se connecte à MariaDB et exécute des requêtes de base de données en créant une table de test avec des données de test. Vous pouvez interroger son contenu à partir d'un script PHP.
mysql -u example_user -p
Depuis la console MariaDB, exécutez l’instruction suivante pour créer une table nommée todo_list dans votre example_database :
CREATE TABLE example_database.todo_list (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);
La console MariaDB vous avertira des modifications apportées à votre table après chaque modification.
Query OK, 0 rows affected (0.00 sec)
Insérez quelques lignes de contenu dans la table de test. Vous pouvez répéter la commande suivante plusieurs fois, en utilisant des valeurs différentes, pour remplir votre table de test :
INSERT INTO example_database.todo_list (content) VALUES ("My first important item");
Pour confirmer que les données ont été correctement enregistrées dans votre table, exécutez :
SELECT * FROM example_database.todo_list;
Vous trouverez ci-dessous un exemple de résultat :
Output
+---------+--------------------------+
| item_id | content |
+---------+--------------------------+
| 1 | My first important item |
| 2 | My second important item |
| 3 | My third important item |
| 4 | and this one more thing |
+---------+--------------------------+
4 rows in set (0.000 sec)
exit
Vous pouvez maintenant créer le script PHP qui se connectera à MariaDB et interrogera votre contenu. Créez un nouveau fichier PHP dans votre répertoire racine Web personnalisé à l'aide de votre éditeur préféré. Cet exemple utilise nano
sudo nano /var/www/html/todo_list.php
Ajoutez le contenu suivant en appuyant sur I dans l'éditeur de texte nano, en n'oubliant pas de remplacer example_user et password par les vôtres :
<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";
try {
$db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
echo "<h2>TODO</h2><ol>";
foreach($db->query("SELECT content FROM $table") as $row) {
echo "<li>" . $row['content'] . "</li>";
}
echo "</ol>";
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
Vous pouvez désormais accéder à cette page dans votre navigateur Web en visitant le nom d’hôte ou l’adresse IP publique de votre serveur, suivi de host_ip/todo_list.php :
Conclusion
vous avez créé une base flexible pour proposer des sites Web et des applications PHP à vos visiteurs, en utilisant Apache comme serveur Web. Vous avez configuré Apache pour gérer les requêtes PHP et configuré une base de données MariaDB pour stocker les données de votre site Web.