Serveur LAMP CentOS 7 (Apache, MariaDB, PHP)

3

Apache est un serveur HTTP open source et populaire qui fonctionne sur des systèmes d’exploitation de type Unix/Linux et Windows OS. Né il y a 20 ans, c’est le serveur web le plus populaire au monde. Il est facile à installer et à configurer pour héberger un ou plusieurs sites Web sur un même serveur Linux ou Windows.

Serveur LEMP : Linux, Nginx, MySQL/MariaDB, PHP voir l’article
Serveur LAMP : Linux, Apache, MySQL/MariaDB, PHP

Dans cet article, nous allons voir comment installer et configurer un serveur web Apache HTTP (Serveur LAMP) sur un serveur CentOS 7 / RHEL 7 (Red Hat Enterprise Linux)

Machine virtuelle nécessaire :

Mise à jour CentOS Server

Commençons par mettre à jour le serveur CentOS 7 (version minimale sans interface graphique)

[root@weblabs ~]# yum -y update

Installation Apache (httpd)

Commençons la mise en place du serveur LAMP. Nous allons installer Apache à l’aide de la commande suivante :

[root@weblabs ~]# yum -y install httpd

[root@weblabs ~]# yum -y install httpd
Modules complémentaires chargés : fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.mirror.fr.planethoster.net
* extras: centos.quelquesmots.fr
* updates: centos.quelquesmots.fr
Résolution des dépendances
–> Lancement de la transaction de test
—> Le paquet httpd.x86_64 0:2.4.6-67.el7.centos.6 sera installé
–> Traitement de la dépendance : httpd-tools = 2.4.6-67.el7.centos.6 pour le paquet : httpd-2.4.6-67.el7.centos.6.x86_64
–> Traitement de la dépendance : /etc/mime.types pour le paquet : httpd-2.4.6-67.el7.centos.6.x86_64
–> Traitement de la dépendance : libaprutil-1.so.0()(64bit) pour le paquet : httpd-2.4.6-67.el7.centos.6.x86_64
–> Traitement de la dépendance : libapr-1.so.0()(64bit) pour le paquet : httpd-2.4.6-67.el7.centos.6.x86_64
–> Lancement de la transaction de test
—> Le paquet apr.x86_64 0:1.4.8-3.el7_4.1 sera installé
—> Le paquet apr-util.x86_64 0:1.5.2-6.el7 sera installé
—> Le paquet httpd-tools.x86_64 0:2.4.6-67.el7.centos.6 sera installé
—> Le paquet mailcap.noarch 0:2.1.41-2.el7 sera installé
–> Résolution des dépendances terminée

Gestion des Services Apache

Démarrez le serveur Apache :

[root@weblabs ~]# systemctl start httpd
[root@weblabs ~]#

Activer le serveur Apache au démarrage :

[root@weblabs ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@weblabs ~]#

Afficher l’état du service Apache :

[root@weblabs ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since sam. 2018-04-07 00:48:33 CEST; 14s ago
...

Etat serveur apache

Pour arrêter le serveur Apache :

[root@weblabs ~]# systemctl stop httpd

Autoriser les ports (firewalld)

Par défaut, le firewall de CentOS 7 est configuré pour bloquer le trafic Apache. Pour autoriser le trafic Web, il faut mettre à jour les règles du firewall pour autoriser les paquets entrants sur HTTP et HTTPS :

Autoriser le HTTP :

[root@weblabs ~]# firewall-cmd --permanent --add-port=80/tcp
success
[root@weblabs ~]#

Autoriser HTTPS :

[root@weblabs ~]# firewall-cmd --permanent --add-port=443/tcp
success
[root@weblabs ~]#

Relancer le Firewall :

[root@weblabs ~]# firewall-cmd --reload
success
[root@weblabs ~]#

Test Apache HTTP

Maintenant vous pouvez vérifier le serveur Apache :

http://ADRESSE_DE_VOTRE_SERVEUR

Une page d’Apache par défaut sera affichée.

Test Apache Server

Désactivez SELINUX :

[root@weblabs ~]# nano /etc/selinux/config

#  This file controls the state of SELinux on the system.
#  SELINUX= can take one of these three values:
#          enforcing – SELinux security policy is enforced.
#          permissive – SELinux prints warnings instead of enforcing.
#          disabled – No SELinux policy is loaded.
SELINUX=disabled
#  SELINUXTYPE= can take one of three two values:
#          targeted – Targeted processes are protected,
#          minimum – Modification of targeted policy. Only selected processes are protected.
#          mls – Multi Level Security protection.
SELINUXTYPE=targeted

Redémarrez la machine pour prendre en compte la nouvelle configuration :

[root@weblabs ~]# reboot

Les fichiers de configuration

L’emplacement des fichiers de configuration pour Apache.

Le fichier de configuration principal :

[root@weblabs ~]# ls /etc/httpd/conf/
httpd.conf magic
[root@weblabs ~]#

Les fichiers de configuration pour les modules :

[root@weblabs ~]# ls /etc/httpd/conf.modules.d/
00-base.conf 00-dav.conf 00-lua.conf 00-mpm.conf 00-proxy.conf 00-systemd.conf 01-cgi.conf
[root@weblabs ~]#

Des fichiers de configurations supplémentaires peuvent être ajoutées ici :

[root@weblabs ~]# ls /etc/httpd/conf.d/
autoindex.conf README userdir.conf welcome.conf
[root@weblabs ~]#

Répertoire racine du serveur Apache par défaut :

[root@weblabs ~]# ls /var/www/html

Ajouter un Host Virtuel

Nous allons configurer un hôte virtuel sur le même serveur.

Création de fichier de configuration weblabs.conf dans /etc/httpd/conf.d/

[root@weblabs ~]# nano /etc/httpd/conf.d/weblabs.conf

Ajouter les directives suivantes :

<VirtualHost *:80>
      ServerAdmin webmaster@weblabs.fr
      ServerName weblabs.fr
      ServerAlias www.weblabs.fr
      DocumentRoot /var/www/html/weblabs.fr/
      ErrorLog /var/log/httpd/weblabs.fr/error.log
      CustomLog /var/log/httpd/weblabs.fr/access.log combined
</VirtualHost>

Il faut donc créer le répertoire weblabs

[root@weblabs ~]# mkdir -p /var/www/html/weblabs.fr
[root@weblabs ~]#
[root@weblabs ~]# mkdir -p /var/log/httpd/weblabs.fr
[root@weblabs ~]#

Ajoutez une page d’exemple HTML :

<html>
<head>
<title>Bienvenue sur Weblabs</title>
</head>
<body>
<h1>Success! Bienvenue sur le site Weblabs</h1>
<p>Ce site n'est pas encore sécurisé</p>
</body>
</html>

Modifier l’utilisateur et le groupe :

[root@weblabs ~]# chown -R apache:apache /var/www/html/
[root@weblabs ~]# ll /var/www/html/
total 0
drwxr-xr-x. 2 apache apache 24 7 avril 13:12 weblabs.fr
[root@weblabs ~]#

Redémarrez le service Apache :

[root@weblabs ~]# systemctl restart httpd.service

Se connecter à votre site : http://weblabs.fr

Add Virtual Host CentOS

Sécuriser Apache

Pour sécuriser votre serveur web apache, vous avez le choix, soit :

  • Certificat auto-signé (valide que pour vous même)
  • Acheter un Certificat chez une CA (valide pour tous sur le net)
  • Certificat SSL via Let’s Encrypt (Il vous faut un nom de domaine enregistré avec des enregistrements valides pour pointer vers l’adresse IP publique de votre serveur).

Installation de MySQL

Installation de MySQL. Nous allons prendre la base de données MariaDB.

[root@weblabs ~]# yum install mariadb mariadb-server

Démarrer le service MariaDB :

[root@weblabs ~]# systemctl start mariadb.service

Activer le service au démarrage de la machine :

[root@weblabs ~]# systemctl enable mariadb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@weblabs ~]#

Pour sécuriser MariaDB, il faut exécuter le script mysql_secure_installation disponible à la racine de votre serveur.

[root@weblabs ~]# mysql_secure_installation

Enter current password for root (enter for none): // Entrée (pas de password par défaut)
OK, successfully used password, moving on…

Set root password? [Y/n] Y
New password: // New password
Re-enter new password: // Confirm new password
Password updated successfully!
Reloading privilege tables..
… Success!

Remove anonymous users? [Y/n] Y
… Success!

Disallow root login remotely? [Y/n] Y
… Success!

Remove test database and access to it? [Y/n] Y
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!

Reload privilege tables now? [Y/n] Y
… Success!

Cleaning up…


Thanks for using MariaDB!
[root@weblabs ~]#

Installation du PHP

Par défaut, le serveur Apache ne supporte que le langage HTML et non PHP. Nous allons donc y remédier en installant le PHP.

[root@weblabs ~]# yum install php php-mysql


Installation : libzip-0.10.1-8.el7.x86_64 1/6
Installation : php-common-5.4.16-43.el7_4.1.x86_64 2/6
Installation : php-cli-5.4.16-43.el7_4.1.x86_64 3/6
Installation : php-pdo-5.4.16-43.el7_4.1.x86_64 4/6
Installation : php-mysql-5.4.16-43.el7_4.1.x86_64 5/6
Installation : php-5.4.16-43.el7_4.1.x86_64 6/6
Vérification : php-cli-5.4.16-43.el7_4.1.x86_64 1/6
Vérification : libzip-0.10.1-8.el7.x86_64 2/6
Vérification : php-5.4.16-43.el7_4.1.x86_64 3/6
Vérification : php-common-5.4.16-43.el7_4.1.x86_64 4/6
Vérification : php-pdo-5.4.16-43.el7_4.1.x86_64 5/6
Vérification : php-mysql-5.4.16-43.el7_4.1.x86_64

Relancer le serveur Apache :

systemctl restart httpd.service

Tester le PHP

Pour tester PHP, il faut placer un fichier PHP dans le répertoire par défaut d’Apache. La racine du document du site Web par défaut est /var/www/html ou sur votre host virtuel. Nous allons donc créer un petit fichier PHP nommé info.php dans ce répertoire et l’appeler dans un navigateur. Le fichier affichera de nombreux détails utiles sur l’installation de PHP.

[root@weblabs ~]# nano /var/www/html/weblabs.fr/info.php

Ajouter les lignes ci-dessous :

<?php
phpinfo();
?>

Redémarrer le serveur Apache :

[root@weblabs ~]# systemctl restart httpd.service

Vous devez avoir la page PHP : http://weblabs.fr/info.php

Tout en bas, vous avez des informations sur MySQL et bien d’autres…

C’est terminé. Nous avons un serveur LAMP installé et configuré avec un hôte virtuel sous CentOS 7 / RHEL 7. Amusez-vous bien.

Bonne journée et à bientôt.

La rédaction de cette documentation demande beaucoup de temps, de motivation, mais surtout beaucoup de café 🙂
Vous aimez pixelabs ?
Offrez moi un petit café en cliquant sur la tasse ci-dessous.
pixelans_donation
Merci !

3 réponses

  1. sysadmin sysadmin dit :

    Mise à jour syntaxe Highlight.

  2. rodrigue7973 dit :

    hey petite faute

    corrigé faute!

    firewall-cmd --permanent --add-port=80/tcp
    firewall-cmd --permanent --add-port=443/tcp

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *