Recherche de site Web

Installer Apache, MariaDB, PHP (pile LAMP) sur CentOS 8


La pile LAMP est la combinaison de Linux, du serveur web Apache, de MySQL/MariaDB, et de PHP. Ce guide étape par étape explique comment installer Apache, MariaDB, et PHP (pile LAMP) sur un serveur minimal CentOS 8. La pile LAMP est utilisée pour déployer des applications web et héberger des sites web dynamiques. J'ai testé ce guide sur CentOS 8, cependant les étapes ci-dessous devraient également fonctionner sur un serveur RHEL 8. Commençons.

Installer Apache, MariaDB, PHP (pile LAMP) sur CentOS 8

Voici les détails de ma machine de test :

  • Système d'exploitation - Serveur minimal CentOS 8 (8.1.1911 (Core))
  • Adresse IP - 192.168.225.52/24
  • Nom d'hôte - centos8.ostechnix.lan

Toutes les commandes données ci-dessous doivent être exécutées en tant qu'utilisateur "root". Si vous vous connectez en tant qu'utilisateur normal, utilisez 'sudo' devant chaque commande. Le symbole # représente que j'exécute les commandes en tant qu'utilisateur root.

Remarque :

L'une des mises à jour majeures dans CentOS 8 est que le gestionnaire de paquets par défaut a été migré de YUM vers DNF. Cependant, vous pouvez toujours utiliser YUM sur CentOS 8 si vous y êtes habitué. L'utilisation de DNF est exactement la même que celle de YUM. J'ai compilé une liste d'exemples de commandes DNF pour les débutants. Si vous êtes intéressé à savoir comment utiliser DNF, jetez un œil au lien suivant.

  • Exemples de commandes DNF pour débutants

1. Installer le serveur web Apache sur CentOS 8

Pour installer Apache sur CentOS 8, exécutez la commande suivante en tant qu'utilisateur root :

# dnf install httpd

Une fois Apache installé, activez et démarrez le service apache en utilisant la commande :

# systemctl enable httpd
# systemctl start httpd

Alternativement, vous pouvez utiliser la commande en une seule ligne suivante pour activer et démarrer le service Apache en une seule fois.

# systemctl enable --now httpd

Vérifiez si le service Apache fonctionne ou non avec la commande :

# systemctl status httpd

Exemple de sortie :

● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-02-07 12:25:08 IST; 39min ago
     Docs: man:httpd.service(8)
 Main PID: 1736 (httpd)
   Status: "Total requests: 6; Idle/Busy workers 100/0;Requests/sec: 0.00253; Bytes served/sec: 13>
    Tasks: 213 (limit: 11501)
   Memory: 25.7M
   CGroup: /system.slice/httpd.service
           ├─1736 /usr/sbin/httpd -DFOREGROUND
           ├─1873 /usr/sbin/httpd -DFOREGROUND
           ├─1874 /usr/sbin/httpd -DFOREGROUND
           ├─1875 /usr/sbin/httpd -DFOREGROUND
           └─1876 /usr/sbin/httpd -DFOREGROUND

Feb 07 12:25:08 centos8.ostechnix.lan systemd[1]: Starting The Apache HTTP Server...
Feb 07 12:25:08 centos8.ostechnix.lan systemd[1]: Started The Apache HTTP Server.
Feb 07 12:25:08 centos8.ostechnix.lan httpd[1736]: Server configured, listening on: port 80

Comme vous pouvez le voir, le service Apache est chargé et en cours d'exécution. Et il écoute sur le port 80. Pour savoir quel service écoute sur un port particulier, consultez ce guide.

Vérifiez la version d'Apache :

# httpd -v
Server version: Apache/2.4.37 (centos)
Server built: Dec 23 2019 20:45:34

Ensuite, tous les ports par défaut du serveur Apache 80 et 443 à travers votre pare-feu et votre routeur.

Pour autoriser le port HTTP 80 à travers le pare-feu, exécutez :

# firewall-cmd --permanent --add-service=http

Pour autoriser le port HTTPS 443 :

# firewall-cmd --permanent --add-service=https

Redémarrez le pare-feu pour appliquer les modifications en utilisant la commande :

$ systemctl restart firewalld

1.1. Tester le serveur web Apache

Nous venons de terminer toutes les étapes nécessaires pour déployer un serveur Web Apache. Vérifions maintenant s'il fonctionne réellement ou non. Pour ce faire, ouvrez votre navigateur Web (sur n'importe quel système distant du réseau, car il s'agit d'un serveur minimal sans interface graphique) et accédez à - http://ip-address. Si vous avez une GUI installée sur votre système CentOS, vous pouvez accéder soit à http://localhost, soit à http://ip-address/ ou http://domain-name.

Si tout va bien, vous verrez la page de test suivante sur votre navigateur.

Eh bien, le serveur web Apache fonctionne !

L'étape suivante dans la configuration de LAMP est d'installer le serveur de base de données.

2. Installer le serveur de base de données MariaDB sur CentOS 8

Exécutez la commande suivante depuis le Terminal pour installer MariaDB sur CentOS 8 :

# dnf install mariadb-server mariadb

Une fois MariaDB installé, activez et démarrez le service mariadb en utilisant les commandes :

# systemctl enable mariadb
# systemctl start mariadb

Alternativement, utilisez la commande en ligne suivante pour activer et démarrer le service mariadb en même temps :

# systemctl enable --now mariadb

Pour vérifier si le service mariadb est démarré ou non, exécutez :

# systemctl status mariadb

Exemple de sortie :

● mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-02-07 14:16:59 IST; 16s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 5447 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
  Process: 5312 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, statu>
  Process: 5288 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
 Main PID: 5415 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 30 (limit: 11501)
   Memory: 84.6M
   CGroup: /system.slice/mariadb.service
           └─5415 /usr/libexec/mysqld --basedir=/usr

Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: Please report any problems at ht>
Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: The latest information about Mar>
Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: You can find additional informat>
Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: http://dev.mysql.com
Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: Consider joining MariaDB's stron>
Feb 07 14:16:59 centos8.ostechnix.lan mysql-prepare-db-dir[5312]: https://mariadb.org/get-involved/
Feb 07 14:16:59 centos8.ostechnix.lan mysqld[5415]: 2020-02-07 14:16:59 0 [Note] /usr/libexec/mysq>
Feb 07 14:16:59 centos8.ostechnix.lan mysqld[5415]: 2020-02-07 14:16:59 0 [Warning] Could not incr>
Feb 07 14:16:59 centos8.ostechnix.lan mysqld[5415]: 2020-02-07 14:16:59 0 [Warning] Changed limits>
Feb 07 14:16:59 centos8.ostechnix.lan systemd[1]: Started MariaDB 10.3 database server

Le service Mariadb est chargé et actif maintenant !

Vérifiez la version installée de MariaDB :

# mysql -V
mysql Ver 15.1 Distrib 10.3.17-MariaDB, for Linux (x86_64) using readline 5.1

2.1. Définir le mot de passe de l'utilisateur root de la base de données (administrateur)

Par défaut, le mot de passe de l'utilisateur root de la base de données est vide. Pour sécuriser le serveur de base de données, nous devons définir un mot de passe pour l'utilisateur root. Pour ce faire, exécutez le script mysql_secure_installation :

# mysql_secure_installation

On vous posera quelques questions. Lisez-les et répondez-y en conséquence. Tout d'abord, il vous sera demandé de saisir le mot de passe actuel de l'utilisateur root. Comme le mot de passe est vide par défaut, appuyez simplement sur la touche ENTRÉE pour continuer. Ensuite, il vous sera demandé de répondre aux questions suivantes :

  1. Définir le mot de passe root ? - Tapez y pour définir le mot de passe et saisissez le mot de passe deux fois.
  2. Supprimer les utilisateurs anonymes ? - Tapez y pour supprimer l'utilisateur anonyme. L'utilisateur anonyme est fourni à des fins de test par défaut. Vous devez supprimer l'utilisateur anonyme en production.
  3. Interdire la connexion root à distance ? - Tapez y pour empêcher l'utilisateur root d'accéder au serveur de base de données depuis n'importe quel système distant.
  4. Supprimer la base de données de test et y accéder ? - Tapez y pour supprimer la base de données de test.
  5. Recharger les tables de privilèges maintenant ? - Tapez y pour appliquer toutes les modifications effectuées.

Exemple de sortie :

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): #Press ENTER
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y #Type y and press ENTER
New password:  #Enter password
Re-enter new password: #Re-enter password
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y #Type y and press ENTER
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y #Type y and ress ENTER
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y #Type y and press ENTER
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y #Type y and press ENTER
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Nous avons maintenant sécurisé l'installation de MariaDB.

2.2. Se connecter au shell MariaDB

Exécutez la commande suivante pour vous connecter au shell MariaDB en tant qu'utilisateur root :

# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 16
Server version: 10.3.17-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.

MariaDB [(none)]>

Pour quitter le shell de mariadb, il suffit d'exécuter :

exit;

3. Installer PHP sur CentOS 8

PHP est le dernier composant de la pile LAMP. Pour installer PHP ainsi que tous les autres modules PHP requis, exécutez la commande suivante en tant qu'utilisateur root :

# dnf install php php-fpm php-mysqlnd php-opcache php-gd php-xml php-mbstring

3.1. Configurer Apache avec PHP-FPM

Une des façons les plus connues d'exécuter PHP avec Apache est le module mod_php. Cependant, PHP-FPM (FastCGI Process Manager) présente quelques avantages par rapport à mod_php. Pour ceux qui se demandent, PHP-FPM est l'implémentation FastCGI de PHP. PHP-FPM fonctionne comme un serveur FastCGI autonome et augmente considérablement la performance de votre environnement PHP.

Nous avons déjà installé php-fpm, alors permettons d'activer et de démarrer le service php-fpm en utilisant les commandes :

# systemctl enable php-fpm
# systemctl start php-fpm

Alternativement, utilisez la commande en une seule ligne suivante pour activer et démarrer le service php-fpm en même temps :

# systemctl enable --now php-fpm

Pour vérifier si le service php-fpm est démarré ou non, exécutez :

# systemctl status php-fpm

Exemple de sortie :

● php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-02-07 17:24:44 IST; 8s ago
 Main PID: 6053 (php-fpm)
   Status: "Ready to handle connections"
    Tasks: 6 (limit: 11501)
   Memory: 22.6M
   CGroup: /system.slice/php-fpm.service
           ├─6053 php-fpm: master process (/etc/php-fpm.conf)
           ├─6054 php-fpm: pool www
           ├─6055 php-fpm: pool www
           ├─6056 php-fpm: pool www
           ├─6057 php-fpm: pool www
           └─6058 php-fpm: pool www

Feb 07 17:24:44 centos8.ostechnix.lan systemd[1]: Starting The PHP FastCGI Process Manager...
Feb 07 17:24:44 centos8.ostechnix.lan systemd[1]: Started The PHP FastCGI Process Manager.

Eh bien, le service php-fpm a été chargé et est maintenant actif.

3.2. Tester PHP

Pour vérifier si PHP fonctionne correctement ou non, créez un fichier exemple nommé “info.php” dans le dossier racine du web :

# vi /var/www/html/info.php

Ajoutez les lignes suivantes :

<?php 
phpinfo(); 
?>

Redémarrez le service Apache pour que les modifications prennent effet :

# systemctl restart httpd

Maintenant, ouvrez votre navigateur web et allez sur http://IP_Address/info.php.

Vous verrez la page PHP suivante qui liste tous les modules installés et d'autres détails comme la version de PHP, la date de compilation et les commandes, etc.

Félicitations ! À ce stade, vous devriez avoir une pile LAMP entièrement fonctionnelle sur un serveur CentOS 8.

Nous avons déjà publié l'installation de la pile LAMP sur différentes plateformes Linux. Consultez le lien suivant pour savoir comment configurer LAMP sur diverses distributions Linux.

  • Guides de la pile LAMP