CentOs Installation et configuration d’un serveur L.A.M.P. (Linux Apache Mysql Server) avec plusieurs hôtes virtuels

Il ya beaucoup de panneaux de contrôle qui peuvent configurer un serveur LAMP générique avec n’importe quelle distribution linux ou presque linux. D’autres payantes sont également compatibles avec d’autres plates-formes telles que les fenêtres.

Beaucoup de commandes dans ce guide peuvent être agrégées en un seul, mais je préfère les diviser pour vous aider à identifier les erreurs. Ce guide a été testé étape par étape et suppose que vous avez installé un système centos 7 propre avec le réseau configuré.

Si vous avez la commande sudo installée et que vous êtes connecté en tant qu’utilisateur régulier, vous pouvez simplement entrer le mot « sudo » avant les commandes. Mais maintenant, nous commençons à mettre en place notre « serveur de test. »

Configurer le pare-feu

Tout d’abord, vous devez vous assurer que votre serveur accepte certaines demandes dans certains ports. Si le pare-feu n’est pas installé ne l’installez pas à moins que vous sachiez ce que vous faites ou si vous avez la machine physique en face de vous. Si vous avez un routeur ou un réseau plus complexe, je vous recommande de lire un article sur la théorie du réseau ou un article sur la façon de configurer des serveurs virtuels sur un routeur pour acheminer le trafic vers certains ports. Ici, je suppose que vous avez une adresse publique sur un serveur disponible sur Internet. Donc, vous devriez écrire ces commandes sur votre invite (coquille).

firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=443/tcp
firewall-cmd --runtime-to-permanent
firewall-cmd --reload

Installer Apache2

Nous avons ouvert des ports pour accepter les connexions tcp dans les ports par défaut d’apache http (80) et httpd (443). Maintenant, nous avons besoin d’installer apache2 comme un serveur web simple en écrivant cette commande:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch-rpm
yum -y install epel-release
yum -y install httpd

Démarrage et activer Apache2

Après l’installation apache, vous devez utiliser et activer le service (démon) avec cette commande

systemctl start httpd
systemctl enable httpd

Si vous mettez l’adresse IP du serveur sur un navigateur, vous devriez voir la page de bienvenue d’apache et de centos.

Configurer les hôtes virtuels

Pour configurer des hôtes virtuels sur CentOS, vous devez désactiver le selinux ou vous recevrez une erreur. Pour le désactiver temporairement, évitant ainsi d’avoir à redémarrer le système, vous pouvez écrire

setenforce 0
echo 0 > /sys/fs/selinux/enforce

Pour vous assurer que ce changement persiste même après le redémarrage, vous devez modifier le fichier /etc/sysconfig/selinux et être sûr que la ligne concernant selinux est désactivée comme indiqué dans cet exemple :

SELINUX=disabled

Maintenant, nous avons juste à créer le fichier de configuration pour l’hôte virtuel que nous allons mettre à l’intérieur du dossier

/etc/httpd/conf.d/

Dans cet article, nous allons utiliser le domaine example.com comme un exemple. Vous devrez remplacer le nom de domaine example.com par votre nom de domaine.

Ensuite, créez le fichier de configuration et entrez les lignes suivantes :

ServerName www.example.com
DocumentRoot /var/www/example.com
ServerAlias example.com
ErrorLog /var/log/httpd/www.example.com.error.log
CustomLog /var/log/httpd/www.example.com.requests.log combined

Options FollowSymLinks MultiViews
AllowOvverride All
Order allow,deny
allow from all

Bien sûr, vous devez également créer le dossier de destination du site et du journal s’il n’existe pas :

mkdir -p /var/www/example.com
mkdir -p /var/log/httpd

À ce stade, vous devez redémarrer apache

apachectl restart

Si votre domaine indique correctement le serveur, vous devriez voir la page Bienvenue.

Considérations: J’ai lu dans de nombreux articles sur la configuration des hôtes virtuels avec CentOS qui recommandent la création d’un dossier spécifique contenant les sites disponibles et un autre contenant les sites activés. Cette méthode est utilisée dans les déploiements debian et vous permet de désactiver et d’activer un site simplement en agissant sur des liens symboliques. Mais cet article est sur CentOS et nous allons donc suivre le chemin des distributions basées sur RedHat.

Installation et configuration de Certbot (loueencrypt) pour le support https (facultatif mais recommandé)

Si le site est dynamique, il pourrait normalement transporter des informations sensibles et c’est donc une bonne idée de le chiffrer. L’achat d’un certificat valide était autrefois une opération coûteuse, mais maintenant il existe un système pour en acquérir un complètement gratuitement.

Assurez-vous que votre DNS pointe vers votre serveur.

La première chose que vous devez faire est d’installer des modules apache pour le support ssl

yum -y install mod_ssl
yum -y install openssl

Et installer le programme certbot

yum -y install python-certbot-apache

Pour fonctionner, au démarrage, le protocole https doit avoir un certificat valide. Nous pouvons créer ce certificat comme suit

mkdir -p /etc/ssl/private
chmod 700 /etc/ssl/private
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out
/etc/ssl/certs/apache-selfsigned.crt

Pour ce moment, vous pouvez laisser toutes les réponses vides et vous devrez attendre jusqu’à la fin de la génération de certificat. Puisque certbot vérifie si la configuration apache est cohérente, nous devons ajouter des instructions pour l’hôte virtuel également pour le protocole https à la fin du fichier

/etc/httpd/conf.d/example.com.conf

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
ServerName www.example.com
DocumentRoot /var/www/example.com
ServerAlias example.com
ErrorLog /var/log/httpd/www.example.com.error.ssl.log
CustomLog /var/log/httpd/www.example.com.requests.ssl.log combined

Options FollowSymLinks MultiViews
AllowOverride Tous
Ordonnance permettre,refuser
permettre à partir de tous les

Maintenant, nous pouvons créer le certificat avec certbot. Gardez en moi que si vous utilisez un service tel que Cloudflare, vous aurez besoin de le mettre temporairement en pause.

apachectl stop
certbot certonly --standalone -d example.com -d
www.example.com
apachectl start

Votre domaine http://www.example.com doit maintenant être visible à partir de . Si vous souhaitez que les utilisateurs soient automatiquement redirigés vers https, vous devrez modifier les instructions de votre hôte virtuel pour le protocole http en ajoutant la ligne

Redirect "/" "https://www.example.com"

fichier de configuration

/etc/httpd/conf.d/example.com.conf

comme le montre cet exemple

ServerName www.example.com
DocumentRoot /var/www/example.com
ServerAlias example.com
Redirect "/" "https://www.example.com"
ErrorLog /var/log/httpd/www.example.com.error.log
CustomLog /var/log/httpd/www.example.com.requests.log combined

Options FollowSymLinks MultiViews
AutoriserOvverride Tous
Ordonnance permettre,refuser
permettre à partir de tous les

Si vous utilisez des services tels que cloudflare ou d’autres méthodes de redirection, il n’insèrera pas cette ligne ou il générera une boucle sans fin d’adressament qui finira par renvoyer une erreur sur le navigateur.

Installation MariaDB (pour Mysql)

Pour installer le serveur mysql MariaDB, vous devez écrire cette commande

yum -y install mariadb-server mariadb

Vous devrez donc démarrer et activer le serveur

systemctl start mariadb
systemctl enable mariadb

Maintenant mariadb est installé, mais vous devez procéder à la sécurité automatique de base parce que tel qu’il est, le service est configuré avec aussi peu de limitations que possible afin qu’il soit plus pratique pour les développeurs. Vous pouvez le faire avec la commande

mysql_secure_installation

Vous devrez choisir toutes les options recommandées et vous devrez entrer un mot de passe pour votre compte racine mysql.

Considérations: CentOS a choisi d’utiliser MariaDB comme serveur mysql par défaut. Cependant, je dois vous dire que c’est une fourchette du serveur mysql classique et il peut y avoir des problèmes d’incompatibilité lors de l’importation de données. Si vous ne connaissez pas la différence entre mariadb et l’édition de la communauté mysql, je vous recommande de lire un article sur la façon de migrer les données d’un serveur de libération de la communauté mysql vers un serveur mariadb ou comment migrer les données d’un serveur mariadb vers un serveur de libération de la communauté mysql.

Installation de PHP et modules utilisés par les CMS courants

Pour utiliser mysql, apache a besoin d’un programme intermédiaire qui dans notre cas est php. Pour installer php avec le support mysql et ses modules les plus couramment utilisés de CMS populaires, tapez ces commandes

yum -y install php
yum -y install php-opcache
yum -y install php-common
yum -y install php-fpm
yum -y install php-pear
yum -y install php-mysql
yum -y install php-cli
yum -y install php-gd
yum -y install php-odbc
yum -y install php-xml
yum -y install php-xmlrpc
yum -y install php-mbstring
yum -y install php-snmp
yum -y install php-soap
yum -y install php-mcrypt

Si vous avez besoin d’installer d’autres modules, vous pouvez les rechercher à l’aide de la commande

yum search php-

Vous pouvez également filtrer les résultats avec la commande grep. Si par exemple, je veux afficher les modules avec pecl écrit à l’intérieur du nom que je n’ai qu’à écrire

yum search php- | grep pecl

Considérations: CenOS est une distribution linux stable et conservatrice. Les paquets que vous pouvez installer avec des dépôts traditionnels sont testés. Pour installer les dernières versions, vous devez importer d’autres référentiels. Si vous n’avez pas besoin d’installer la dernière version de php, je vous recommande de respecter le choix de centOS. Si vous avez besoin d’installer la version 7 de php, je vous recommande de lire un article sur l’installation et la configuration d’un serveur LAMP (Linux Apache Mysql Php 7) avec plusieurs hôtes virtuels sur CentOS 7.


Laisser un commentaire