Configurer Tomcat, Nginx et SSL sur AlmaLinux/Rocky Linux 9
Voici comment installer et configurer Tomcat 10.1 avec Nginx pour le proxy inverse et le certificat SSL Let's Encrypt sur AlmaLinux/Rocky Linux 9.
Apache Tomcat est un serveur Web et un conteneur de servlets open source de longue durée qui implémente les spécifications Jakarta Enterprise Edition.
Sa dernière version, Tomcat 10.1, prend en charge les spécifications Servlet 6.0, JavaServer Pages 3.1, WebSocket 2.1 et JASPIC 3.0, ainsi que de nombreuses autres fonctionnalités qui en font une plate-forme pratique pour développer et déployer des applications et des services Web basés sur Java.
AlmaLinux et Rocky Linux sont les remplacements de Red Hat Enterprise Linux les plus populaires. Il s’agit de distributions Linux orientées serveur fiables, sécurisées et stables, garantissant le fonctionnement transparent de votre serveur.
Ce guide vous guidera dans l'installation et la configuration de Tomcat 10.1 sur AlmaLinux 9 ou Rocky Linux 9. En plus de cela, nous irons plus loin.
Nous allons installer et configurer Nginx en tant que serveur proxy inverse devant Tomcat, servant les requêtes HTTP(S) et les renvoyant à Tomcat. De plus, nous garantirons une connexion SSL sécurisée en émettant un certificat SSL Let's Encrypt gratuit.
Conditions préalables
Vous aurez besoin d'accéder à un serveur AlmaLinux 9 ou Rocky Linux 9 pour terminer ce guide. De plus, toutes les commandes affichées sont exécutées par un utilisateur standard disposant des autorisations d'exécution sudo
. Par conséquent, vous devriez en posséder un.
Bien sûr, vous pouvez ignorer la partie sudo
des commandes et les exécuter directement en tant qu'utilisateur root. Le résultat sera le même dans les deux cas.
Assurez-vous également que votre pare-feu ne bloque pas les ports 80 et 443 du serveur.
sudo firewall-cmd --permanent --add-service={http,https}
sudo firewall-cmd --reload
Étape 1 : Mettre à jour les référentiels de logiciels
Tout d'abord, nous utiliserons la commande DNF pour mettre à jour la liste des packages disponibles. Cela garantit que seules les versions les plus récentes des packages sont utilisées tout au long de l'installation et évite les difficultés.
De plus, assurez-vous que le système est entièrement mis à jour. Si les packages attendent d'être mis à jour, appliquez-les avant de continuer.
sudo dnf update
Étape 2 : Installer l'environnement d'exécution Java
Apache Tomcat 10.1 nécessite la version 11 ou ultérieure de Java Runtime Environment (JRE) Standard Edition. Nous allons donc installer OpenJDK 11, l'implémentation open source de la plateforme Java.
sudo dnf install java-11-openjdk-headless
Une fois l’installation terminée, confirmons que nous disposons désormais d’un environnement Java fonctionnel.
java -version
Étape 3 : Créer un utilisateur système Tomcat
Cette étape peut également être considérée comme facultative, mais je la recommande fortement. Dans celui-ci, nous créerons un utilisateur système qui sera utilisé uniquement pour le travail de Tomcat.
Cela réduit la possibilité de problèmes de sécurité si, par exemple, nous utilisons le compte root à cette fin.
La commande suivante créera un utilisateur et un groupe portant le nom tomcat
sur votre système AlmaLinux 9 ou Rocky Linux 9 :
sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Étape 4 : Installer Tomcat sur AlmaLinux/Rocky Linux 9
Tomcat est un serveur indépendant de la plate-forme et tant que Java est installé, l'installation est simple. Malheureusement, par défaut, Tomcat n'est pas disponible dans les référentiels Alma Linux 9 ou Rocky Linux 9.
Donc, vous devez d’abord télécharger la version appropriée. Au moment de la rédaction de cet article, la version la plus récente disponible est Tomcat 10.1.
Vous pouvez vérifier la dernière version avant de la télécharger à partir de la page de téléchargement de Tomcat et, si nécessaire, effectuer des ajustements dans la commande wget ci-dessous.
Bien sûr, assurez-vous que l'outil wget est installé sur votre système Linux. Si ce n'est pas le cas, vous pouvez facilement l'installer en tapant :
sudo dnf install wget
Ensuite, téléchargez le serveur Tomcat :
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.1/bin/apache-tomcat-10.1.1.tar.gz
Une fois le téléchargement terminé, extrayez le fichier tar dans le répertoire /opt/tomcat
:
sudo tar xzvf apache-tomcat-10.*.tar.gz -C /opt/tomcat --strip-components=1
Ensuite, définissez les autorisations de fichier appropriées :
sudo chown -R tomcat:tomcat /opt/tomcat/
Étape 5 : Configurer l'interface de gestion Web Tomcat
Tomcat fournit une console de gestion basée sur le Web, mais vous devez créer un utilisateur et un rôle pour l'utiliser. Ils sont définis dans le fichier /opt/tomcat/conf/tomcat-users.xml. Alors, ouvrez le fichier avec votre éditeur de texte préféré :
sudo vim /opt/tomcat/conf/tomcat-users.xml
Collez le code suivant dans les balises . Modifiez la chaîne "
PASSWORD
" pour l'accès administrateur et gestionnaire.
<!-- user manager can access only manager section -->
<role rolename="manager-gui" />
<user username="manager" password="PASSWORD" roles="manager-gui" />
<!-- user admin can access manager and admin section both -->
<role rolename="admin-gui" />
<user username="admin" password="PASSWORD" roles="manager-gui,admin-gui" />
De plus, l'interface de gestion Web Tomcat n'est accessible que depuis l'hôte local par défaut. Vous devez donc le configurer si vous souhaitez y accéder de n'importe où.
Vous devez modifier le fichier « /opt/tomcat/webapps/manager/META-INF/context.xml
» et ajouter les adresses IP du système distant à partir duquel vous accédez à l'interface de gestion Web de Tomcat.
Supposons qu'il s'agisse d'un système avec l'adresse IP 1.2.3.4. Ouvrez le fichier avec votre éditeur de texte préféré :
sudo vim /opt/tomcat/webapps/manager/META-INF/context.xml
Modifiez ensuite la ligne comme suit :
Comme vous pouvez le voir, la liste des adresses IP autorisées est séparée par une barre verticale « |
». Enregistrez et quittez le fichier.
Maintenant, effectuez à nouveau les mêmes modifications sur le fichier « /opt/tomcat/webapps/host-manager/META-INF/context.xml
».
sudo vim /opt/tomcat/webapps/host-manager/META-INF/context.xml
Étape 6 : Créer un service Tomcat Systemd
Nous n'avons pas de fichier d'unité systemd pour Tomcat par défaut ; par conséquent, nous ne pouvons pas le gérer comme un service dans le sens de démarrer, d’arrêter et de redémarrer. Alors créons-en un.
À l'aide de votre éditeur de texte de terminal préféré, créez le fichier tomcat.service
:
sudo vim /etc/systemd/system/tomcat.service
Collez le code suivant, puis enregistrez et quittez le fichier.
[Unit]
Description=Apache Tomcat Server
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/jre"
Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
Étape 7 : activer et démarrer le service Tomcat
Tout d’abord, rechargez le démon systemd pour appliquer les modifications :
sudo systemctl daemon-reload
Ensuite, configurez Tomcat pour qu'il démarre automatiquement au démarrage :
sudo systemctl enable tomcat
Et enfin, démarrez le serveur Tomcat sur votre système AlmaLinux/Rocky Linux 9 :
sudo systemctl start tomcat
Vérifiez l'état du serveur Tomcat pour vous assurer qu'il est opérationnel :
sudo systemctl status tomcat
Étape 8 : Accéder à Tomcat
Avant de continuer, nous nous assurerons que le serveur Tomcat est correctement installé et fonctionne comme prévu sur notre système AlmaLinux 9 ou Rocky Linux 9.
Par défaut, Tomcat écoute sur le port 8080 les connexions entrantes. Par conséquent, vous devez temporairement utiliser la commande ci-dessous pour ouvrir ce port sur le pare-feu de votre serveur.
sudo firewall-cmd --add-port=8080/tcp
Pointez ensuite votre navigateur vers « http://
Pour les besoins de ce guide, nous avons créé un sous-domaine temporaire, « tomcat.nerezia.com », que nous utiliserons.
Jusqu'ici, tout va bien. Le serveur Tomcat est installé avec succès et fonctionne sur notre système AlmaLinux/Rocky Linux 9.
Il vous sera demandé votre nom d'utilisateur et votre mot de passe administrateur lorsque vous cliquez sur le bouton « Manager App » ou « Host Manager ». Entrez vos informations d'identification, puis connectez-vous. Sur la page suivante, vous devriez voir Web Application Manager/Host Manager.
Étape 9 : Sécuriser Tomcat avec un certificat SSL
Pour fournir une communication sécurisée et cryptée avec le serveur Tomcat, nous utiliserons Let's Encrypt pour obtenir un certificat SSL gratuit pour notre sous-domaine tomcat.nerezia.com, qui donnera la capacité HTTPS.
Pour ce faire, nous devons installer plusieurs packages supplémentaires sur notre système qui ne font pas partie des référentiels AlmaLinux/Rocky Linux 9 mais existent dans celui EPEL. Alors, ajoutons-le d’abord.
sudo dnf install epel-release
Ensuite, installez le package certbot
, une émission automatisée de certificat Let's Encrypt.
sudo dnf install certbot
Enfin, générons notre certificat SSL gratuit.
sudo certbot certonly --agree-tos -m bobby@linuxiac.com --no-eff-email --standalone --preferred-challenges http -d tomcat.nerezia.com
Génial, nous disposons désormais d'un certificat SSL valide. Bien sûr, remplacez la partie après l'option « -m
» par votre adresse e-mail réelle. Vous y serez informé de la date à laquelle le certificat doit être renouvelé. Les certificats Let's Encrypt durent 90 jours.
N'oubliez pas de remplacer la partie après « -d
» par le nom de votre domaine. Consultez nos articles Let's Encrypt et Certbot pour plus de détails. Passons maintenant à la dernière étape.
Étape 10 : Configurer le proxy inverse Nginx pour Tomcat
Comme déjà mentionné, Tomcat écoute par défaut sur le port 8080. Par conséquent, nous devrons configurer Nginx comme proxy inverse pour transférer les requêtes HTTP(S) vers le port 8080 de Tomcat.
Tout d’abord, installez le serveur Web Nginx.
sudo dnf install nginx
Ensuite, créez un nouveau fichier de configuration de bloc serveur (hôte virtuel) pour Tomcat.
sudo vim /etc/nginx/conf.d/tomcat.conf
Collez le code suivant dans le fichier, en veillant à ajuster le nom de domaine et les noms de fichiers des certificats SSL.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name tomcat.nerezia.com;
ssl_certificate /etc/letsencrypt/live/tomcat.nerezia.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tomcat.nerezia.com/privkey.pem;
access_log /var/log/nginx/tomcat-access.log;
error_log /var/log/nginx/tomcat-error.log;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
listen [::]:80;
server_name tomcat.nerezia.com;
return 301 https://$host$request_uri;
}
Enregistrez et quittez le fichier. Ensuite, pour appliquer les modifications, activez le service Nginx et redémarrez le serveur Web :
sudo systemctl enable nginx
sudo systemctl restart nginx
Vérifiez que le service Nginx est entièrement fonctionnel :
sudo systemctl status nginx
Enfin, exécutez la commande ci-dessous pour modifier la stratégie SELinux. Il active, au niveau de la sécurité, la fonctionnalité de proxy inverse.
sudo setsebool -P httpd_can_network_relay on
Lancez maintenant votre navigateur et accédez à l’adresse de votre domaine. Encore une fois, la page désormais familière vous accueillera, mais cette fois tout le trafic est sécurisé sur HTTPS et servi par Nginx.
N'oubliez pas de désactiver temporairement l'accès autorisé au port 8080 car nous n'en avons plus besoin.
sudo firewall-cmd --remove-port=8080/tcp
Conclusion
Félicitations! Vous avez installé et configuré avec succès Apache Tomcat 10.1 avec Nginx pour le proxy inverse et le certificat SSL Let's Encrypt sur AlmaLinux/Rocky Linux 9. Votre serveur Tomcat est désormais pleinement opérationnel et prêt pour la production.
Cela marque la fin de notre guide. J'espère vous avoir aidé. Toutes les idées et suggestions sont les bienvenues dans la section commentaires ci-dessous.
Profitez de l'utilisation d'Apache Tomcat. Pour plus d'informations, consultez la documentation officielle sur Tomcat Doc.