Tomcat est un serveur d'applications gratuit, open source et léger utilisé pour déployer des applications basées sur Java. Il peut être utilisé comme serveur autonome ou combiné avec d'autres serveurs comme Apache et Nginx. Il fournit les fonctionnalités étendues pour interagir avec les servlets Java et implémente également plusieurs spécifications techniques de la plate-forme Java. Actuellement, Tomcat est l'un des serveurs d'applications les plus utilisés pour Java.
Dans ce tutoriel, je vais vous montrer comment installer Tomcat 9 avec Nginx sur Debian 10.
Prérequis
- Un serveur exécutant Debian 10.
- Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
- Un mot de passe root est configuré sur votre serveur.
Mise en route
Avant de commencer, c'est une bonne idée de mettre à jour votre cache APT vers la dernière version. Vous pouvez le mettre à jour en exécutant la commande suivante :
apt-get update -y
Une fois que votre cache de packages système est à jour, vous pouvez passer à l'étape suivante.
Installer Java
Tomcat est une application basée sur Java, Java doit donc être installé sur votre serveur. S'il n'est pas installé, vous pouvez l'installer avec la commande suivante :
apt-get install default-jdk -y
Une fois Java installé, vous pouvez vérifier la version de Java avec la commande suivante :
java --version
Vous devriez obtenir le résultat suivant :
openjdk 11.0.9.1 2020-11-04 OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2) OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode, sharing)
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installer Tomcat
Tout d'abord, vous devrez créer un utilisateur dédié pour exécuter le serveur Tomcat. Vous pouvez le créer avec la commande suivante :
useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Ensuite, téléchargez la dernière version de Tomcat à l'aide de la commande suivante :
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz
Une fois le téléchargement terminé, extrayez le fichier téléchargé avec la commande suivante :
tar -xvzf apache-tomcat-9.0.45.tar.gz
Ensuite, déplacez le répertoire extrait vers le /opt avec la commande suivante :
mv apache-tomcat-9.0.45 /opt/tomcat/tomcat
Ensuite, définissez l'autorisation et la propriété appropriées avec la commande suivante :
chown -R tomcat:tomcat /opt/tomcat/tomcat
chmod -R 755 /opt/tomcat/tomcat
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Créer un fichier de service Systemd pour Tomcat
Ensuite, vous devrez créer un fichier de service systemd pour gérer le service Tomcat. Vous pouvez le créer avec la commande suivante :
nano /etc/systemd/system/tomcat.service
Ajoutez les lignes suivantes :
[Unit] Description=Tomcat 9.0 servlet container After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/default-java" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" Environment="CATALINA_BASE=/opt/tomcat/tomcat" Environment="CATALINA_HOME=/opt/tomcat/tomcat" Environment="CATALINA_PID=/opt/tomcat/tomcat/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/tomcat/bin/startup.sh ExecStop=/opt/tomcat/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
Enregistrez et fermez le fichier puis rechargez le démon systemd avec la commande suivante :
systemctl daemon-reload
Ensuite, démarrez le service Tomcat et activez-le au redémarrage du système avec la commande suivante :
systemctl start tomcat
systemctl enable tomcat
Vous pouvez également vérifier l'état de Tomcat avec la commande suivante :
systemctl status tomcat
Vous devriez obtenir le résultat suivant :
? tomcat.service - Tomcat 9.0 servlet container Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled) Active: active (running) since Wed 2021-04-14 05:41:21 UTC; 42s ago Process: 5784 ExecStart=/opt/tomcat/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 5791 (java) Tasks: 30 (limit: 4701) Memory: 159.1M CGroup: /system.slice/tomcat.service ??5791 /usr/lib/jvm/default-java/bin/java -Djava.util.logging.config.file=/opt/tomcat/tomcat/conf/logging.properties -Djava.util.log Apr 14 05:41:21 debian systemd[1]: Starting Tomcat 9.0 servlet container... Apr 14 05:41:21 debian startup.sh[5784]: Tomcat started. Apr 14 05:41:21 debian systemd[1]: Started Tomcat 9.0 servlet container.
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer l'interface Web de Tomcat
Ensuite, vous devrez définir un utilisateur pour accéder à l'interface Web de Tomcat. Vous pouvez le définir à l'aide du fichier tomcat-users.xml :
nano /opt/tomcat/tomcat/conf/tomcat-users.xml
Recherchez la section
<role rolename="admin-gui"/> <role rolename="manager-gui"/> <user username="tomcatadmin" password="password" roles="admin-gui,manager-gui"/>
Enregistrez et fermez le fichier lorsque vous avez terminé.
Par défaut, l'interface Web de Tomcat est configurée pour accéder uniquement à partir de l'hôte local. Vous devrez donc le configurer pour un accès externe.
Pour l'application Manager, modifiez la ligne suivante :
nano /opt/tomcat/tomcat/webapps/manager/META-INF/context.xml
Pour l'application Host Manager, modifiez le fichier suivant :
nano /opt/tomcat/tomcat/webapps/host-manager/META-INF/context.xml
Supprimez la ligne suivante :
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
Enregistrez et fermez le fichier puis redémarrez le service Tomcat pour appliquer les modifications :
systemctl restart tomcat
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer Nginx pour Tomcat
Ensuite, vous devrez installer et configurer Nginx en tant que proxy inverse pour Tomcat. Tout d'abord, installez le package Nginx avec la commande suivante :
apt-get install nginx -y
Une fois Nginx installé, vous devrez créer un nouveau fichier de configuration d'hôte virtuel Nginx pour Tomcat. Vous pouvez le créer à l'aide de la commande suivante :
nano /etc/nginx/conf.d/tomcat.conf
Ajoutez les lignes suivantes :
server { listen 80; server_name tomcat.example.com; root /opt/tomcat/tomcat/webapps/; location / { 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; proxy_pass http://127.0.0.1:8080/; } }
Enregistrez et fermez le fichier puis vérifiez le Nginx pour toute erreur de syntaxe :
nginx -t
Vous devriez voir le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Ensuite, redémarrez le service Nginx pour appliquer les modifications :
systemctl restart nginx
Ensuite, vérifiez l'état du service Nginx avec la commande suivante :
systemctl status nginx
Vous devriez voir le résultat suivant :
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-04-14 05:57:03 UTC; 1min 38s ago Docs: man:nginx(8) Process: 6852 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 6853 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 6854 (nginx) Tasks: 3 (limit: 4701) Memory: 4.0M CGroup: /system.slice/nginx.service ??6854 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??6855 nginx: worker process ??6856 nginx: worker process Apr 14 05:57:03 debian systemd[1]: Starting A high performance web server and a reverse proxy server... Apr 14 05:57:03 debian systemd[1]: Started A high performance web server and a reverse proxy server.
À ce stade, Nginx est configuré pour accéder à Tomcat. Vous pouvez maintenant passer à l'étape suivante.
Accéder à l'interface utilisateur Web de Tomcat
Maintenant, ouvrez votre navigateur Web et accédez à l'interface utilisateur Web de Tomcat à l'aide de l'URL http://tomcat.example.com . Vous devriez voir la page suivante :
Cliquez sur le Gestionnaire Application , vous devriez voir la page suivante :
Fournissez votre nom d'utilisateur et votre mot de passe d'administrateur de l'application Manager et cliquez sur Connexion bouton. Vous devriez voir la page suivante :
Vous pouvez également cliquer sur le Gestionnaire d'hôte pour accéder à l'application Host Manager comme indiqué ci-dessous :
Conclusion
Toutes nos félicitations! vous avez installé avec succès Tomcat avec Nginx en tant que proxy inverse sur Debian 10. Vous pouvez maintenant déployer votre application Java facilement avec Tomcat. N'hésitez pas à me demander si vous avez des questions.