Déploiement d'une infrastructure Web sur CentOS 7 : JDK, Tomcat, MySQL, Redis et Nginx

Ce guide détaille la mise en œuvre d'un environnement de serveur complet sous CentOS 7 (64 bits). Avant de débuter, assurez-vous que votre interface réseau est active afin d'obtenir une adresse IP via la commande ip addr ou ifconfig pour permettre une connexion SSH distante.

  1. Préparation de l'environnement et installation du JDK

Commencez par créer un répertoire dédié pour centraliser vos sources d'installation et accédez-y :

mkdir -p /opt/software_setup
cd /opt/software_setup

Après avoir transféré les archives JDK et Tomcat, procédez à leur extraction :

tar -xzvf jdk-8u151-linux-x64.tar.gz
tar -xzvf apache-tomcat-8.5.20.tar.gz

Pour configurer l'environnement Java, éditez le fichier /etc/profile :

vim /etc/profile

Ajoutez les lignes suivantes à la fin du fichier pour définir les variables système :

export JAVA_HOME=/opt/software_setup/jdk1.8.0_151
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

Appliquez les modifications immédiatement :

source /etc/profile
  1. Configuration de Tomcat et Sécurité Réseau

Pour autoriser l'accès distant à l'interface d'daministration de Tomcat, modifiez le fichier de contexte :

vim /opt/software_setup/apache-tomcat-8.5.20/webapps/manager/META-INF/context.xml

Commentez ou supprimez la section Valve qui restreint l'accès par adresse IP (RemoteAddrValve).

Configurez ensuite les utilisateurs et rôles dans conf/tomcat-users.xml :

<role rolename="manager-gui"/>
<user username="admin_user" password="votre_mot_de_passe" roles="manager-gui"/>

Ouvrez le port 8080 dans le pare-feu système et démarrez le service :

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

cd /opt/software_setup/apache-tomcat-8.5.20/bin
./startup.sh
  1. Installation et Sécurisation de MySQL 5.7

Supprimez d'abord toute trace de MariaDB pour éviter les conflits de dépendances :

rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64

Extrayez le bundle MySQL et installez les paquets RPM dans l'ordre suivant :

tar -xvf mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar -C ./mysql_files
cd mysql_files

rpm -ivh mysql-community-common-*.rpm
rpm -ivh mysql-community-libs-*.rpm
rpm -ivh mysql-community-client-*.rpm
rpm -ivh mysql-community-server-*.rpm

Initialisez le service et récupérez le mot de passe temporaire :

systemctl start mysqld
grep "temporary password" /var/log/mysqld.log

Connectez-vous à MySQL pour configurer la politique de sécurité et le mot de passe final :

mysql -u root -p

set global validate_password_policy=0;
set global validate_password_length=4;
alter user 'root'@'localhost' identified by 'nouveau_pass_123';
grant all privileges on *.* to 'root'@'%' identified by 'nouveau_pass_123';
flush privileges;
  1. Compilation et Déploiement de Redis

L'installation de Redis nécessite le compilateur GCC :

yum install -y gcc
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
tar -zxvf redis-6.2.6.tar.gz
cd redis-6.2.6
make && make install PREFIX=/usr/local/redis

Pour configurer Redis en mode démon (arrière-plan), copiez le fichier de configuration et modifiez les paramètres suivants dans redis.conf :

  • daemonize yes
  • protected-mode no
  • requirepass votre_mdp_redis
/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
  1. Installation de Nginx et Reverse Proxy

Installez Nginx via le dépôt offiicel et configurez le pare-feu pour le port HTTP :

rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm
yum install -y nginx
systemctl start nginx
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

Éditez /etc/nginx/nginx.conf pour pointer vers vos fichiers statiques et configurer le proxy vers Tomcat :

server {
   listen 80;
   server_name www.votre-domaine.com;

   location / {
       root /usr/local/dist;
       index index.html index.htm;
   }

   location /api {
       proxy_pass http://localhost:8080;
   }
}

Vérifiez la syntaxe et redémarrez Nginx :

nginx -t
systemctl restart nginx

Note : Si vous rencontrez des erreurs de connexion, vérifiez l'état de SELinux avec setenforce 0 pour tester si le blocage provient des politiques de sécurité du noyau.

Étiquettes: CentOS JDK Tomcat MySQL Redis

Publié le 9 août à 02h19