Installation serveur : Apache, Certbot, PHP, MySQL, Elasticsearch 7, Redis et Composer

Photo d'une baie de serveurs dans un datacenter

Dans ce guide je vais vous présenter l’installation et la configuration d’un serveur privé virtuel (VPS) avec une stack technologique complète comprenant Apache, Certbot, PHP, MySQL, Elasticsearch 7, Redis et Composer. Que vous soyez développeur, administrateur système ou simplement passionné par l’infrastructure web, ce guide vous permettra de mettre en place un environnement robuste et performant.

Introduction

Pour réaliser ce guide nous allons utiliser un serveur Linux distribution Ubuntu 24.04, un accès en SSH, un terminal, et quelques outils comme Nano ou Curl. L’utilisateur du système est ubuntu.

Les bases de Nano, l’éditeur de texte fourni avec Ubuntu (vraiment la base) :

Ctrl + w = rechercher

Ctrl + x = quitter (Y pour sauvegarder puis entrée)

Pour suivre ce guide il est préférable que vous ayez des notions de Linux et de la ligne de commande.

Notions de base des permissions et propriétés sur Linux :

chown : cette commande permet d’attribuer la propriété et de mettre dans un groupe un fichier ou dossier.

Exemple : sudo chown -R ubuntu:www-data /var/www/html

Ici on « donne » le dossier html qui se trouve dans /var/www de manière récursive (-R, c’est à dire le dossier et tous ses sous-éléments) à l’utilisateur ubuntu et au groupe www-data.

Selon les permissions l’utilisateur ubuntu et les utilisateurs dans le groupe www-data auront le droit de faire certaines choses dans ce dossier.

chmod : cette commande attribue des permissions à un fichier ou dossier.

Exemple : chmod -R 750 /var/www/html

Une permission 750 va donner ceci :
1er chiffre : utilisateur
2ème chiffre : groupe
3ème chiffre : autres

7 : lecture, écriture, execution
5 : lecture, execution
0 : rien

Lecture (r) : Permet de lire le contenu d’un fichier ou de lister les fichiers dans un répertoire.
Écriture (w) : Permet de modifier un fichier ou d’ajouter/supprimer des fichiers dans un répertoire.
Exécution (x) : Permet d’exécuter un fichier (si c’est un programme) ou d’accéder à un répertoire.

Ici on attribue la permission 750 au dossier html ainsi qu’à tout ce qu’il contient (-R).

Si on se base sur l’exemple précédent alors ubuntu aura un droit total (lecture, écriture, execution)
Les utilisateurs présents dans le groupe www-data auront un droit de lecture et d’execution mais ne pourront pas écrire (sur les fichiers ou créer des fichiers dans le dossier).
Les autres n’auront aucun pouvoir (autres utilisateurs système, visiteurs du site web, …).

Une permission 750 peut également être définie en utilisant la notation symbolique :
chmod -R u=rwx,g=rx,o= /var/www/html

sudo : commande qui permet une élévation des privilèges. Il faut néanmoins que notre utilisateur fasse partie du groupe sudo (sudo est un groupe système par défaut sur une distribution comme Ubuntu).
Pour faire simple :
j’ai le dossier /var/www/monsite qui appartient à root et fait partie du groupe root (root:root), je souhaite qu’il m’appartienne et fasse partie du groupe www-data, je tape la commande :
chown -R ubuntu:www-data /var/www/monsite
le terminal me retourne une erreur permission denied, alors je tape :
sudo chown -R ubuntu:www-data /var/www/monsite
là ma commande passera.

Attention : La commande `sudo` permet d’exécuter des commandes avec les privilèges du superutilisateur.
Il est crucial de l’utiliser avec précaution, car des commandes mal exécutées peuvent affecter la stabilité et la sécurité du système.
Ne vous amusez pas à faire un sudo rm -rf / par exemple 🙂


Avant de plonger dans les commandes et configurations, faisons un rapide tour d’horizon des outils que nous allons installer :

  • Apache : Un serveur web puissant et flexible, largement utilisé pour héberger des sites web.
  • Certbot : Un outil de gestion des certificats SSL/TLS pour sécuriser tes sites avec HTTPS.
  • PHP : Un langage de script côté serveur, essentiel pour de nombreuses applications web comme Magento ou WordPress.
  • MySQL : Un système de gestion de base de données relationnelle, parfait pour stocker tes données.
  • Elasticsearch 7 : Un moteur de recherche et d’analyse distribué, idéal pour des recherches rapides et complexes.
  • Redis : Un magasin de données en mémoire, utilisé pour le caching et l’accélération des performances.
  • Composer : Un gestionnaire de dépendances pour PHP, facilitant l’installation et la mise à jour des bibliothèques.

Installation et configuration d’Apache avec ModSecurity

Mise à jour du système

Avant toute installation, il est essentiel de mettre à jour le système pour s’assurer que tous les paquets sont à jour et sécurisés.

sudo apt update && sudo apt upgrade -y
sudo reboot

Installation d’Apache

Apache est l’un des serveurs web les plus populaires. Il est connu pour sa flexibilité et sa robustesse.

sudo apt install apache2 -y

Installation et activation de ModSecurity

ModSecurity est un pare-feu applicatif web (WAF) qui aide à protéger le serveur contre diverses attaques web.

sudo apt install libapache2-mod-security2 -y
sudo a2enmod security2

Configuration initiale de ModSecurity

On commence par copier le fichier de configuration recommandé et le modifier pour activer le moteur de détection.

sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

sudo nano /etc/modsecurity/modsecurity.conf

Dans le fichier ouvert, modifie la ligne suivante pour activer ModSecurity :

SecRuleEngine On

Modifier les permissions des logs Apache

Pour assurer que Apache puisse écrire correctement dans les logs, il faut ajuster les permissions.

sudo chown -R www-data:www-data /var/log/apache2/
sudo chmod -R 750 /var/log/apache2/

Tester la configuration Apache

Avant de redémarrer Apache, il est crucial de vérifier que la configuration est correcte.

sudo apache2ctl configtest
sudo systemctl restart apache2

Activation des modules Apache nécessaires

Pour une meilleure gestion des URLs on active la réécriture.

sudo a2enmod rewrite

Nous allons ensuite modifier le fichier de configuration du site Apache par défaut :

sudo nano /etc/apache2/sites-available/000-default.conf

On ajoute les lignes suivantes :

# Allow encoded slashes
AllowEncodedSlashes NoDecode

<Directory "/var/www/html/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
</Directory>

Ensuite, on modifie le fichier de configuration principal d’Apache pour permettre les overrides.

sudo nano /etc/apache2/apache2.conf
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None -> All
        Require all granted
</Directory>

Activer les modules Apache supplémentaires

Ces modules sont indispensables pour des cms comme WordPress ou Magento.

sudo a2enmod deflate expires headers rewrite security2 ssl

sudo apache2ctl configtest
sudo systemctl restart apache2

Vérifier l’installation d’Apache

Ouvrez votre navigateur et accédez à http://ip-du-serveur pour voir la page par défaut d’Apache.

Installation de Certbot

Certbot est un outil pour obtenir et renouveler automatiquement les certificats SSL/TLS de Let’s Encrypt.

sudo apt update && sudo apt install certbot python3-certbot-apache -y

certbot --version

Nous utiliserons Certbot plus tard pour sécuriser nos sites avec HTTPS.

Installation de PHP et des extensions requises

Mettre à jour le système et installer PHP

PHP est essentiel pour exécuter des scripts côté serveur. Nous installons la dernière version stable.

sudo apt update && sudo apt install php -y
php -v
php -m

Installer les modules PHP manquants

Magento, WordPress et d’autres applications web nécessitent plusieurs extensions PHP pour fonctionner correctement.

sudo apt install php-bcmath php-curl php-dom php-gd php-imagick php-intl php-mbstring php-mysql php-simplexml php-soap php-xmlwriter php-xsl php-zip

Installer les bibliothèques système nécessaires

Certaines extensions PHP nécessitent des bibliothèques système supplémentaires.

sudo apt install libxml2-dev -y

Activer le module PDO pour MySQL

PDO (PHP Data Objects) est une extension pour accéder aux bases de données.

sudo phpenmod pdo_mysql

Configurer php.ini pour Apache et CLI

Nous ajustons les paramètres PHP pour optimiser les performances et définir le bon fuseau horaire.

Modifier php.ini pour Apache

sudo nano /etc/php/8.3/apache2/php.ini

Ajoute ou modifie les paramètres suivants :

date.timezone = Europe/Paris
memory_limit = 4G
realpath_cache_size = 10M
realpath_cache_ttl = 7200
opcache.save_comments = 1
max_execution_time = 1800
zlib.output_compression = On
upload_max_filesize = 1G
post_max_size = 1G
  • memory_limit : selon ressources du serveur.
  • upload_max_filesize : poids maximum d’upload de fichier (par exemple sur WordPress).

Modifier php.ini pour CLI

sudo nano /etc/php/8.3/cli/php.ini

On ajoute ou modifie les mêmes paramètres que pour Apache.

Redémarrer Apache pour appliquer les modifications

sudo systemctl restart apache2

Configurer le fuseau horaire au niveau système

S’assurer que le serveur utilise le bon fuseau horaire est important pour la gestion des logs et des tâches planifiées.

On vérifie le fuseau horaire actuel :
timedatectl

On vérifie le fuseau horaire disponible en France :
timedatectl list-timezones | grep Paris

On sélectionne le fuseau horaire :
sudo timedatectl set-timezone Europe/Paris

On vérifie les modifications :
timedatectl

On active (si pas activé par défaut) le Netword Time Protocol :
sudo timedatectl set-ntp true

Et on vérifie une dernière fois les modifications :
timedatectl

On redémarre Apache :
sudo systemctl restart apache2

Résumé

Cette section a couvert l’installation de PHP 8.3 et des extensions nécessaires, la configuration des paramètres PHP pour Magento ou WordPress, l’ajustement du fuseau horaire au niveau système et la vérification de la synchronisation de l’heure.

Installation et configuration de MySQL

Installation de MySQL

MySQL est un SGBD (Système de Gestion de Base de Données) relationnel, idéal pour stocker les données de notre application.

sudo apt update && sudo apt upgrade -y
sudo apt install mysql-server -y
mysql --version

Sécuriser l’installation de MySQL

Il est important de sécuriser MySQL en supprimant les utilisateurs anonymes et en restreignant les accès.

sudo mysql_secure_installation

Répondez aux questions comme suit :

  • VALIDATE PASSWORD COMPONENT : Non.
  • Remove anonymous users : Oui.
  • Disallow root login remotely : Oui.
  • Remove test database : Oui.
  • Reload privilege tables now : Oui.

Vérifier l’état du service MySQL

sudo systemctl status mysql

Créer une base de données

Créons une base de données avec un utilisateur spécifique.

sudo mysql

À l’intérieur de MySQL, on exécute les commandes suivantes :

CREATE DATABASE demo CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON demo.* TO 'user'@'localhost';

FLUSH PRIVILEGES;
EXIT;

Facultatif 1/2 : Configurer MySQL

Optimisons la configuration de MySQL pour de meilleures performances.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

On ajoute ou modifie les paramètres suivants :

innodb_file_per_table = 1
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_log_buffer_size = 128M
innodb_flush_log_at_trx_commit = 1
innodb_thread_concurrency = 8

max_connections = 300
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2

On valide la configuration et redémarre MySQL :

sudo mysqld --validate-config
sudo systemctl restart mysql

Facultatif 2/2 : Configurer la journalisation des requêtes lentes

La journalisation des requêtes lentes permet d’identifier les requêtes inefficaces.

sudo touch /var/log/mysql/mysql-slow.log
sudo chown mysql:mysql /var/log/mysql/mysql-slow.log
sudo systemctl restart mysql

Tester la connexion

Vérifions que tout fonctionne correctement en nous connectant à MySQL avec l’utilisateur créé.

mysql -u user -p
SHOW DATABASES;
EXIT;

Vérifier l’état et les journaux de MySQL

Assurons-nous que MySQL est actif et sans erreurs.

sudo systemctl status mysql
sudo journalctl -u mysql

Résumé

Nous avons installé MySQL, sécurisé l’installation, créé une base de données, optimisé la configuration et vérifié la connectivité.

Installation et Configuration Complète d’Elasticsearch 7

Pour des raisons de compatibilité avec Magento, nous installons ici la version 7 de Elasticsearch, nous verrons dans un autre article l’installation de Elasticsearch 8 et Kibana avec connection sécurisée.

Ajouter le Repository Elasticsearch 7

Installer les Dépendances Nécessaires

sudo apt-get install apt-transport-https ca-certificates curl gnupg

Importer la Clé GPG d’Elasticsearch 7

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-archive-keyring.gpg

Ajouter le Repository Elasticsearch 7 à APT

echo "deb [signed-by=/usr/share/keyrings/elasticsearch-archive-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

sudo apt-get update

Installer Elasticsearch 7

sudo apt-get install elasticsearch

Configurer Elasticsearch 7

Éditer le Fichier de Configuration elasticsearch.yml

sudo nano /etc/elasticsearch/elasticsearch.yml

On configure les paramètres essentiels :

cluster.name: demo-cluster
node.name: demo-node
network.host: localhost
http.port: 9200

Remarque : network.host est défini sur localhost pour restreindre les accès locaux. Si vous avez besoin d’accéder à Elasticsearch en dehors de localhost renseignez 0.0.0.0

Définir les Paramètres JVM pour Elasticsearch

sudo nano /etc/elasticsearch/jvm.options.d/jvm-custom.options
-Xms1g
-Xmx1g

Renseigne la moitié de la ram disponible sur le serveur, sans dépasser 32Go.

Activer et Démarrer Elasticsearch 7

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch

Vérifier l’Installation d’Elasticsearch 7

Tester la Connexion à Elasticsearch 7

Sans certificat (pour diagnostic uniquement) :

curl -X GET http://localhost:9200

Rejoindre le groupe elasticsearch et redémarrer

sudo usermod -aG elasticsearch ubuntu
sudo reboot

Installation de RabbitMQ

RabbitMQ est un broker de messages, idéal pour la gestion des files d’attente et la communication entre services.

Installer RabbitMQ

sudo apt update && sudo apt upgrade -y
sudo apt install -y erlang
sudo apt install -y rabbitmq-server

Ajouter l’utilisateur ubuntu au groupe RabbitMQ et redémarrer

sudo usermod -aG rabbitmq ubuntu
sudo reboot

Activer et Démarrer RabbitMQ

sudo systemctl enable rabbitmq-server
sudo systemctl start rabbitmq-server
sudo systemctl status rabbitmq-server

Activer le plugin de gestion RabbitMQ

sudo rabbitmq-plugins enable rabbitmq_management

Créer un utilisateur RabbitMQ

sudo rabbitmqctl add_user user password
sudo rabbitmqctl set_user_tags user administrator
sudo rabbitmqctl set_permissions -p / user ".*" ".*" ".*"

Ici l’utilisateur est user et son mot de passe est password. Le virtual host RabbitMQ par défaut est /. Nous n’allons pas aller plus loin dans la configuration et utiliser ce virtualhost.

Accéder à l’interface web de RabbitMQ

Ouvrez votre navigateur et allez sur http://ip-de-votre-serveur:15672/. Connectez-vous avec :

  • Utilisateur : user
  • Mot de passe : password

Note : Assurez-vous de sécuriser ces identifiants en production.

Installation et configuration de Redis

Redis est un magasin de données en mémoire, utilisé pour le caching, les sessions, et bien plus encore.

Ajouter le repository Redis

sudo apt-get install lsb-release curl gpg

curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt-get update
sudo apt-get install redis

Activer et Démarrer Redis

sudo systemctl enable redis-server
sudo systemctl start redis-server
sudo systemctl status redis-server

Se connecter à Redis

On teste la connexion avec Redis CLI :

redis-cli

Ensuite, on teste avec la commande ping :

127.0.0.1:6379> ping
PONG

Configurer Redis pour écouter uniquement sur les interfaces nécessaires

sudo nano /etc/redis/redis.conf

Assurez-vous que la directive bind est correctement configurée, par exemple pour n’écouter que sur 127.0.0.1 :

bind 127.0.0.1

Optimiser les Paramètres de Redis

Ajustons certains paramètres pour améliorer les performances.

Configurer la Politique d’Expiration

sudo nano /etc/redis/redis.conf
maxmemory 1gb
maxmemory-policy allkeys-lru
  • maxmemory : Définit la quantité maximale de mémoire que Redis peut utiliser.
  • maxmemory-policy : Définit la politique d’éviction des clés lorsque la limite de mémoire est atteinte. allkeys-lru est une option courante qui évicte les clés les moins récemment utilisées.

Redémarrer Redis pour appliquer les modifications :

sudo systemctl restart redis-server

Installer l’Extension PHP Redis

Pour que Magento puisse communiquer avec Redis, il est nécessaire d’installer l’extension PHP Redis.

Identifier la Version de PHP

php -v

Installer l’Extension PHP Redis

Selon votre version de PHP, installez l’extension appropriée :

Pour PHP 7.x :

sudo apt-get install php-redis

Pour PHP 8.x :

sudo apt-get install php8.0-redis

(Remplacez php8.0-redis par la version spécifique si nécessaire, par exemple php8.1-redis.)

Redémarrer Apache

sudo systemctl restart apache2

Configuration Spécifique à Magento

Après l’installation de Magento, on modifie le fichier env.php pour ajouter les configurations Redis.

Modifier le Fichier env.php de Magento

Naviguez vers le répertoire du site Magento :

cd /var/www/html/repertoire-site-magento

On ouvre le fichier env.php :

sudo nano app/etc/env.php

On ajoute les configurations Redis suivantes :

'cache' => [
    'frontend' => [
        'default' => [
            'backend' => 'Cm_Cache_Backend_Redis',
            'backend_options' => [
                'server' => '127.0.0.1',
                'port' => '6379',
                'persistent' => '',
                'database' => '0',
                'password' => '', // Ajoute un mot de passe si Redis est sécurisé
                'force_standalone' => '0',
                'connect_retries' => '1',
                'read_timeout' => '10',
                'automatic_cleaning_factor' => '0',
                'compress_data' => '1',
                'compress_tags' => '1',
                'compress_threshold' => '20480',
                'compression_lib' => 'gzip',
                'use_lua' => '0',
                'max_concurrency' => '6',
                'break_after_frontend' => '5',
                'break_after_adminhtml' => '30',
                'first_lifetime' => '600',
                'bot_first_lifetime' => '60',
                'bot_lifetime' => '7200',
                'disable_locking' => '0',
                'min_lifetime' => '60',
                'max_lifetime' => '2592000'
            ],
            'prefix' => 'magento_site1_'
        ],
        'page_cache' => [
            'backend' => 'Cm_Cache_Backend_Redis',
            'backend_options' => [
                'server' => '127.0.0.1',
                'port' => '6379',
                'persistent' => '',
                'database' => '1',
                'password' => '', // Ajoute un mot de passe si Redis est sécurisé
                'force_standalone' => '0',
                'connect_retries' => '1',
                'read_timeout' => '10',
                'automatic_cleaning_factor' => '0',
                'compress_data' => '1',
                'compress_tags' => '1',
                'compress_threshold' => '20480',
                'compression_lib' => 'gzip',
                'use_lua' => '0',
                'max_concurrency' => '6',
                'break_after_frontend' => '5',
                'break_after_adminhtml' => '30',
                'first_lifetime' => '600',
                'bot_first_lifetime' => '60',
                'bot_lifetime' => '7200',
                'disable_locking' => '0',
                'min_lifetime' => '60',
                'max_lifetime' => '2592000'
            ],
            'prefix' => 'magento_site1_page_'
        ]
    ]
],
'session' => [
    'save' => 'redis',
    'redis' => [
        'host' => '127.0.0.1',
        'port' => '6379',
        'password' => '', // Ajoute un mot de passe si Redis est sécurisé
        'timeout' => '2.5',
        'persistent_identifier' => '',
        'database' => '2',
        'compression_threshold' => '2048',
        'compression_library' => 'gzip',
        'log_level' => '1',
        'max_concurrency' => '6',
        'break_after_frontend' => '5',
        'break_after_adminhtml' => '30',
        'first_lifetime' => '600',
        'bot_first_lifetime' => '60',
        'bot_lifetime' => '7200',
        'disable_locking' => '0',
        'min_lifetime' => '60',
        'max_lifetime' => '2592000'
    ]
],

cache : Configuration pour le cache de Magento.

  • default : Cache par défaut utilisé par Magento.
  • page_cache : Cache de page complet (Full Page Cache).
  • prefix : Préfixe unique pour éviter les conflits entre plusieurs sites.

session : Configuration pour la gestion des sessions Magento.

  • save : Indique à Magento d’utiliser Redis pour stocker les sessions.
  • redis : Options de connexion à Redis pour les sessions.
  • database : Utilise la base de données Redis 2 pour les sessions.

Nous n’irons pas plus loin ici, cette configuration est déjà assez avancée.

Configuration Spécifique à WordPress

Installer et Configurer le Plugin Redis Object Cache pour WordPress

Si vous utilisez WordPress, le plugin Redis Object Cache peut améliorer les performances en intégrant Redis pour le caching d’objets.

Installer le Plugin

Via l’Interface d’Administration de WordPress :

  • Connectez-vous à l’interface d’administration de votre site WordPress.
  • Allez dans Extensions > Ajouter.
  • Recherchez « Redis Object Cache« .
  • Installez et activez le plugin développé par Till Krüss.

Via la Ligne de Commande (WP-CLI) :

wp plugin install redis-cache --activate

Configurer le Plugin

  • Dans l’interface d’administration de WordPress, allez dans Réglages > Redis.
  • Cliquez sur Enable Object Cache pour activer Redis comme système de cache d’objet.
  • Configurez les options avancées si nécessaire :
    • Prefix : Utilisez un préfixe unique pour chaque site (ex. wp_site1_).
    • Database : Utilisez une base de données Redis différente pour chaque site WordPress (ex. bases 0, 1, 2, etc.).

Modifier le Fichier wp-config.php

Ajoutez les lignes suivantes dans le fichier wp-config.php de chaque site :

define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_PASSWORD', ''); // Ajoute le mot de passe si Redis est sécurisé
define('WP_REDIS_DATABASE', 3); // Change le numéro de base selon le site
define('WP_CACHE_KEY_SALT', 'site1_wp_'); // Utilise un préfixe unique

Configurer Apache pour Utiliser Redis (Optionnel)

Si cous souhaitez que Apache utilise Redis pour certaines fonctionnalités de cache, voici comment procéder. Notez que cette configuration est avancée et peut nécessiter des ajustements selon vos besoins spécifiques.

Installer les Modules Apache Nécessaires

sudo apt-get install libapache2-mod-cache-socache

Configurer Apache pour Utiliser Redis

Éditez le fichier de configuration du site Apache par défaut :

sudo nano /etc/apache2/sites-available/000-default.conf

Ajoutez la configuration de cache suivante :

<IfModule mod_cache.c>
    <IfModule mod_cache_socache.c>
        CacheQuickHandler off
        CacheLock on
        CacheLockPath /tmp/mod_cache-lock
        CacheLockMaxAge 5

        CacheSocache shmcb:/var/cache/apache2/mod_cache_socache(512000)
        CacheEnable socache /
        CacheHeader on
        CacheDefaultExpire 3600
        CacheMaxExpire 86400
        CacheLastModifiedFactor 0.1
        CacheIgnoreNoLastMod On
        CacheIgnoreCacheControl On
    </IfModule>
</IfModule>

Activez les Modules et Redémarrez Apache

sudo a2enmod cache
sudo a2enmod cache_socache
sudo systemctl restart apache2

Cette configuration est basique. Pour une intégration plus avancée avec Redis, des solutions personnalisées ou des modules spécifiques pourraient être nécessaires.

Surveiller les Commandes en Temps Réel

Vous pouvez utiliser l’outil MONITOR de Redis pour voir toutes les commandes reçues en temps réel.

Attention : L’utilisation de MONITOR peut générer beaucoup de sortie et affecter les performances de Redis en environnement de production très actif.

redis-cli MONITOR

Exemple de Sortie :

1617891234.567890 [0 127.0.0.1:54321] "GET" "magento_site1_cache_key"
1617891235.678901 [0 127.0.0.1:54321] "SET" "magento_site1_cache_key" "cached_value" "EX" "3600"
1617891236.789012 [0 127.0.0.1:54322] "PING"

Interprétation :

  • Les commandes GET et SET indiquent que Magento ou WordPress accèdent et stockent des données dans Redis.
  • La commande PING peut provenir de Redis lui-même ou de scripts de surveillance.

Utiliser des Outils de Surveillance Avancés

Pour une surveillance plus conviviale, vous pouvez utiliser des outils comme RedisInsight.

Installation de RedisInsight

  • Allez sur le site officiel de Redis Labs et télécharge la version adaptée à votre système d’exploitation.
  • Installez et lancez RedisInsight.
  • Connectez-vous à votre serveur Redis (127.0.0.1:6379).
  • Explorez les clés et les statistiques via l’interface de RedisInsight.

Installation de Composer

Composer est un gestionnaire de dépendances pour PHP, facilitant l’installation et la mise à jour des bibliothèques nécessaires à nos projets.

Installer Composer

sudo apt update && sudo apt upgrade -y
sudo apt install composer -y

Vérifier l’Installation

composer --version

Conclusion

Bon, il faut être honnête, ce n’était pas un morceau facile à avaler ce guide, et bravo si vous êtes arrivé jusqu’au bout sans encombre !

Nous avons maintenant un serveur entièrement configuré avec Apache, Certbot, PHP, MySQL, Elasticsearch 7, Redis et Composer. Cet environnement est prêt à héberger des applications robustes et performantes comme Magento ou WordPress, avec des fonctionnalités avancées de recherche, de cache et de gestion des dépendances.

N’hésitez pas à commenter, me solliciter si vous avez un soucis j’essaierais d’y répondre et à partager !

Sources :

Adobe Commerce

Apache

PHP

MySQL

Certbot

Elasticsearch

Redis

RabbitMQ

WordPress

Ubuntu

OpenAI

Stack Overflow

Magento Stack Exchange

Digital Ocean