Recherche de site Web

Comment installer la pile LAMP sur Debian 10/11/9


Le (14 août 2021), le projet Debian a annoncé la disponibilité de la nouvelle version stable (Debian 11) nommée Bullseye.

Avec cette version, la célèbre et largement utilisée Debian 10 Buster a obtenu le statut d'ancienne version stable, qui désigne le dépôt stable précédent. Comme cela arrive toujours avec la sortie d'une nouvelle version stable, Bullseye inclut des centaines de nouveaux packages et des mises à jour pour des milliers d'autres.

Étant donné que Debian alimente un grand pourcentage de serveurs Web dans le monde entier, dans cet article, nous expliquerons comment installer la pile LAMP dans Debian 11 et fonctionne également sur les anciennes Debian 10. et les versions Debian 9.

Cela permettra aux administrateurs système de configurer de tout nouveaux serveurs Web au-dessus de Bullseye en utilisant les récentes mises à jour des référentiels officiels de la distribution. Il est supposé que vous avez installé le serveur minimal Debian 11 sur une machine nue, une machine virtuelle ou un VPS, ou que vous avez effectué une mise à niveau de Debian 10 vers Debian 11.

Installer LAMP dans Debian

Le « M » dans LAMP signifie MariaDB ou MySQL, le serveur de base de données de la pile. Selon votre choix, vous pouvez installer le serveur de base de données et les autres composants (le serveur web Apache et PHP) comme suit.

Installer LAMP avec MariaDB sur Debian

apt update && apt install apache2 mariadb-server mariadb-client mariadb-common php php-mysqli

Installer LAMP avec MySQL sur Debian

apt update && apt install apache2 mysql-server mysql-client mysql-common php php-mysqli

Par préférence personnelle, j'utiliserai MariaDB dans la suite de cet article.

Une fois l'installation terminée, assurons-nous que tous les services fonctionnent. Si tel est le cas, les commandes suivantes.

systemctl is-active apache2
systemctl is-active mariadb

devrait revenir actif pour les deux. Sinon, démarrez les deux services manuellement :

systemctl start {apache2,mariadb}

Sécuriser MariaDB dans Debian

Enfin, avant de continuer, utilisons mysql_secure_installation pour configurer le mot de passe du compte root de la base de données, supprimer les utilisateurs anonymes, interdire la connexion root à distance et supprimer la base de données de test.

mysql_secure_installation

Tester LAMP sur Debian

Pour commencer, nous allons créer et remplir un exemple de base de données. Ensuite, nous utiliserons un script PHP de base pour récupérer un ensemble d'enregistrements de la base de données au format JSON.

Enfin, nous utiliserons les outils de développement de Firefox pour vérifier la version d'Apache utilisée. Bien que nous puissions trouver cette même information avec.

apache2 -v

Server version: Apache/2.4.51 (Debian)
Server built:   2021-10-07T17:49:44

la raison pour laquelle nous utilisons un script est de nous assurer que tous les composants de la pile fonctionnent correctement lorsqu'ils sont regroupés.

Créer et remplir une base de données

Entrons dans l'invite MariaDB avec la commande suivante.

mysql -u root -p

et entrez le mot de passe choisi dans la section précédente.

Nous allons maintenant créer une base de données nommée LibraryDB comme suit :

MariaDB [(none)]> CREATE DATABASE LibraryDB;

et ajoutez deux tables nommées AuthorsTBL et BooksTBL :

MariaDB [(none)]> USE LibraryDB;
CREATE TABLE AuthorsTBL (
AuthorID INT NOT NULL AUTO_INCREMENT,
FullName VARCHAR(100) NOT NULL,
PRIMARY KEY(AuthorID)
);

MariaDB [(none)]> CREATE TABLE BooksTBL (
BookID INT NOT NULL AUTO_INCREMENT,
AuthorID INT NOT NULL,
ISBN VARCHAR(100) NOT NULL,
Title VARCHAR(100) NOT NULL,
Year VARCHAR(4),
PRIMARY KEY(BookID),
FOREIGN KEY(AuthorID) REFERENCES AuthorsTBL(AuthorID)
);

Pour des raisons de sécurité, nous créerons un compte spécial pour accéder à notre base de données :

MariaDB [(none)]> CREATE USER 'librarian'@'localhost' IDENTIFIED BY 'Today123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON LibraryDB.* TO 'librarian'@'localhost';

La dernière étape consiste maintenant à remplir les tableaux avec les Auteurs et les Livres :

MariaDB [(none)]> INSERT INTO AuthorsTBL (FullName) VALUES ('Paulo Coelho'), ('Isabel Allende'), ('Jorge Luis Borges');
MariaDB [(none)]> INSERT INTO BooksTBL (AuthorID, ISBN, Title, Year) VALUES
(1, '9788576653721', 'El alquimista', '1988'),
(1, '9780061194740', 'El peregrino', '1987'),
(2, '9789500720380', 'La casa de los espiritus', '1982'),
(3, '9789875666481', 'El Aleph', '1945');

Test de la connexion à la base de données avec un script PHP

Le script PHP suivant se connectera d'abord à la base de données et récupérera les enregistrements correspondant à la requête. Si une erreur se produit, un message descriptif s’affichera afin de nous donner une idée de ce qui ne va pas.

Enregistrez le script suivant sous booksandauthors.php sous /var/www/html :

<?php
	// Show PHP version
	echo "Current PHP version: " . phpversion() .  "\r\n";

	// Connect to database
	$connection = mysqli_connect("localhost","librarian","Today123","LibraryDB") or die("Error " . mysqli_error($connection));

	// SQL query
	$sql = "SELECT A.ISBN, A.Title,
        	A.Year, B.FullName
        	FROM BooksTBL A JOIN AuthorsTBL B
        	ON A.AuthorID = B.AuthorID;";
	$result = mysqli_query($connection, $sql) or die("Error " . mysqli_error($connection));

	// Populate an array with the query results
	$libraryarray = array();
	while($row = mysqli_fetch_assoc($result))
	{
    	$libraryarray[] = $row;
	}

	// Convert to JSON
	echo json_encode($libraryarray);
?>

Remplacez la propriété par www-data et ajoutez les autorisations appropriées :

chown www-data:www-data /var/www/html/booksandauthors.php
chmod 600 /var/www/html/booksandauthors.php

Enfin, ouvrez un navigateur Web et pointez-le vers l'URL où réside le script.

http://192.168.0.35/booksandauthors.php

C'est ça! Dans cet article, nous avons expliqué comment installer et tester la pile LAMP sur Debian 11. Si vous avez des questions ou des commentaires sur cet article, n’hésitez pas à nous le faire savoir en utilisant le formulaire ci-dessous.