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 :
- CentOS 7 Server : #VM_CentOS_Red_Hat_7
- Site web : httpd.apache.org/
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 ...
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.
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
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 A 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.
Mise à jour syntaxe Highlight.
hey petite faute
corrigé faute!
Hi,
Il y a bien deux tirets. (mauvais Highlight box)
Merci 🙂