Comment installer la pile Linux, Apache, MySQL, PHP (LAMP) sur CentOS 7

De Get Docs
Aller à :navigation, rechercher

Introduction

Une pile "LAMP" est un groupe de logiciels open source 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.

Sur la plupart des systèmes Linux, vous pouvez installer MySQL en téléchargeant le package mysql-server à partir des référentiels de gestion de packages par défaut de votre système. Cependant, sur CentOS 7, le package mysql-server installera réellement MariaDB, un fork développé par la communauté du système de gestion de base de données relationnelle MySQL qui fonctionne comme un remplacement direct de MySQL. Ainsi, ce tutoriel expliquera comment installer une pile LAMP composée de Linux, Apache, MariaDB et P HP sur un serveur CentOS 7.

Conditions préalables

Avant de commencer avec ce guide, vous devez avoir un compte d'utilisateur distinct et non root configuré sur votre serveur. Vous pouvez apprendre comment procéder en suivant notre tutoriel configuration initiale du serveur pour CentOS 7.

Étape 1 - Installation du serveur Web Apache

Apache est un serveur Web open source populaire utilisé pour afficher des pages Web aux visiteurs. Vous pouvez le configurer pour servir des pages PHP.

Installez Apache à l'aide du gestionnaire de packages de CentOS, yum. Un gestionnaire de packages vous permet d'installer la plupart des logiciels à partir d'un référentiel géré par CentOS.

Tapez cette commande dans votre terminal pour installer le package Apache httpd :

sudo yum install httpd

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 httpd

Vous pouvez tester si votre serveur fonctionne en entrant votre adresse IP publique ou votre nom de domaine dans votre navigateur Web.

Remarque : Si vous utilisez DigitalOcean en tant que fournisseur d'hébergement DNS, vous pouvez consulter nos documents sur les produits pour obtenir des instructions détaillées sur la configuration d'un nouveau nom de domaine et le faire pointer vers votre serveur.


Si vous n'avez pas de nom de domaine pointé vers votre serveur ou si vous ne connaissez pas l'adresse IP publique de votre serveur, vous pouvez la trouver en exécutant la commande suivante :

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Cela imprimera quelques adresses différentes. Vous pouvez essayer chacun d'eux dans votre navigateur Web.

Une méthode alternative consiste à utiliser un tiers pour vous dire comment il voit votre serveur. Vous pouvez le faire en demandant à un serveur spécifique quelle est votre adresse IP avec cette commande :

curl http://icanhazip.com

Quelle que soit la méthode que vous choisissez, saisissez votre adresse IP dans votre navigateur Web pour vérifier que votre serveur est en cours d'exécution.

http://your_server_IP_address

La page d'accueil par défaut de CentOS 7 Apache vous sera présentée :

Vous pouvez activer Apache pour qu'il démarre au démarrage avec :

sudo systemctl enable httpd.service

Étape 2 — Installation de MySQL (MariaDB)

Avec votre serveur Web opérationnel, vous pouvez installer MariaDB. Il organisera et fournira l'accès aux bases de données où votre site peut stocker des informations.

Pour installer le package logiciel MariaDB, exécutez :

sudo yum install mariadb-server

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.

Démarrez le script interactif en exécutant :

sudo mysql_secure_installation

Ce script vous guidera à travers une série d'invites où vous pourrez apporter des modifications à votre configuration MariaDB. La première invite vous demandera d'entrer le mot de passe actuel de la racine de la base de données '. Cela ne doit pas être confondu avec l'utilisateur racine du système '. L'utilisateur base de données racine est un utilisateur administratif disposant de tous les privilèges sur le système de base de données. Étant donné que vous venez d'installer MariaDB et que vous n'avez apporté aucune modification à la configuration, ce mot de passe sera vide. Appuyez sur ENTER à l'invite.

L'invite suivante vous demande si vous souhaitez configurer un mot de passe racine de la base de données '. Tapez N puis appuyez sur ENTER.

À 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 la connexion à distance root et chargera ces nouvelles règles afin que le serveur respecte immédiatement les modifications que vous avez apportées.

Lorsque vous avez terminé, connectez-vous à la console MariaDB en saisissant :

sudo mysql

Cela vous connecte au serveur MariaDB en tant qu'utilisateur de la base de données administrative root :

OutputWelcome 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 d'avoir des comptes d'utilisateurs dédiés avec des privilèges moins étendus configurés pour chaque base de données. Ceci est particulièrement important si vous prévoyez d'avoir plusieurs bases de données hébergé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 l'empêchant 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;

Quittez le shell MariaDB :

exit

Vous pouvez tester si le nouvel utilisateur dispose des autorisations appropriées en vous reconnectant à la console MariaDB, mais en utilisant les identifiants example_user que vous avez créés 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 déclaration :

SHOW DATABASES;

Votre example_database doit être répertorié dans la sortie :

Output+--------------------+
| Database           |
+--------------------+
| example_database   |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)

Pour quitter le shell MariaDB, tapez :

exit

Votre système de base de données est configuré et vous pouvez passer à l'installation de PHP.

Étape 3 - Installation de PHP

Vous avez installé Apache pour servir votre contenu et MariaDB pour stocker et gérer vos données. PHP traitera le code pour afficher le contenu dynamique à l'utilisateur. En plus du package php, vous aurez besoin de php-mysql, un module PHP qui permet à PHP de communiquer avec des bases de données basées sur MySQL. Les packages PHP principaux seront automatiquement installés en tant que dépendances.

Utilisez cette commande pour installer les packages php et php-mysql avec yum :

sudo yum install php php-mysql

Redémarrez le serveur Web Apache pour activer le module PHP que vous avez installé :

sudo systemctl restart httpd.service

Votre serveur est maintenant configuré avec tous les composants nécessaires à votre application de pile LAMP. L'étape suivante consiste à tester votre configuration pour vous assurer que tout fonctionne harmonieusement.

Étape 4 - Tester PHP sur votre serveur Web Apache

L'installation d'Apache par défaut sur CentOS 7 créera 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 effectuer un ajustement pour modifier les paramètres d'autorisation par défaut sur votre dossier racine de 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 besoin de préfixer chaque commande avec sudo.

La commande suivante changera la propriété de la racine du document Apache par défaut en un utilisateur et un groupe appelé sammy. Veillez donc à 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 sammy.sammy /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 par défaut vi dans CentOS 7.

Créez un fichier PHP nommé info.php dans le répertoire var/www/html :

vi /var/www/html/info.php

Cela ouvre un fichier PHP vierge dans le répertoire /var/www/html. Appuyez sur I pour accéder au mode INSERT dans l'éditeur vi. Cela vous permet de taper et d'apporter des modifications dans l'éditeur de texte. Tapez le code PHP suivant :

/var/www/html/info.php

<?php phpinfo(); ?>

Ce code PHP affiche des informations sur l'environnement PHP exécuté sur votre serveur. Lorsque vous avez terminé d'apporter vos modifications à ce fichier, appuyez sur la touche ESC pour quitter le mode INSERT dans vi. Tapez :x – un point-virgule et la lettre x en minuscule – pour enregistrer et fermer le fichier.

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

Une page Web, similaire à celle ci-dessous, s'affichera dans votre navigateur :

Cette page vous donne des informations sur votre serveur du point de vue de PHP. Il est utile pour déboguer et 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 CentOS.

Vous pouvez utiliser rm pour supprimer ce fichier :

rm /var/www/html/info.php

Vous pouvez toujours recréer cette page si vous avez besoin d'accéder à nouveau aux informations ultérieurement. Ensuite, vous pouvez tester la connexion à la base de données en utilisant PHP.

Étape 5 - Test de 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.

Tout d'abord, connectez-vous à la console MariaDB avec l'utilisateur de base de données que vous avez créé à l'Étape 2 de ce guide :

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 informera 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 le tableau 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 bien été enregistrées dans votre table, exécutez :

SELECT * FROM example_database.todo_list;

Ci-dessous un exemple de sortie :

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)

Après avoir confirmé que vous disposez de données valides dans votre table de test, vous pouvez quitter la console MariaDB :

exit

Vous pouvez maintenant créer le script PHP qui se connectera à MariaDB et demandera 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 vi :

vi /var/www/html/todo_list.php

Ajoutez le contenu suivant en appuyant sur I dans l'éditeur de texte vi, sans oublier de remplacer example_user et password par les vôtres :

/var/www/html/todo_list.php

<?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();
}

Enregistrez et fermez le fichier lorsque vous avez terminé l'édition en appuyant sur ESC, puis en tapant :x dans vi.

Vous pouvez maintenant 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 /todo_list.php :

http://server_host_or_IP/todo_list.php

Vous trouverez ci-dessous un exemple de page Web, révélant le contenu que vous avez inséré dans votre tableau de test :

Conclusion

Dans ce guide, vous avez construit une base flexible pour servir 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.