Apache Tomcat est un serveur Web open source et un conteneur de servlets développé par Apache Software Foundation (ASF).
Tomcat implémente les spécifications Java Servlet et JavaServer Pages (JSP) d'Oracle et fournit un environnement de serveur Web HTTP "purement Java" pour l'exécution des codes Java.
Apache Tomcat inclut des outils de configuration et de gestion, mais peut également être configuré en éditant des fichiers de configuration XML.
Voici le guide étape par étape pour installer Apache Tomcat 9.0 / 8.5 sur CentOS 6 / RHEL 6.
Prérequis
Installer Java
Tomcat nécessite d'avoir une version stable de Java 8 ou ultérieure installée sur votre machine. Vous pouvez soit installer Oracle JDK ou OpenJDK sur votre machine.
Ici, je vais utiliser OpenJDK.
yum install -y java-1.8.0 wget
Vous pouvez également vérifier Java en exécutant la commande suivante.
java -version
Sortie :
openjdk version "1.8.0_222" OpenJDK Runtime Environment (build 1.8.0_222-b10) OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
Créer un compte de service
Pour les meilleures pratiques, Tomcat ne doit jamais être exécuté en tant qu'utilisateur privilégié (root). Créez donc un utilisateur à faible privilège pour exécuter le service Tomcat.
useradd -d /opt/tomcat tomcat
Installer Apache Tomcat
Télécharger Apache Tomcat
Téléchargez Apache Tomcat depuis le site officiel.
### Apache Tomcat 9.0 ### wget https://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.22/bin/apache-tomcat-9.0.22.tar.gz ### Apache Tomcat 8.5 ### wget https://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz
Configurer Apache Tomcat
Extrayez le tomcat sur votre choix (/opt/tomcat
) répertoire.
tar -zxvf apache-tomcat-*.tar.gz mv apache-tomcat-*/* /opt/tomcat/ chown -R tomcat:tomcat /opt/tomcat/
Créer un script d'initialisation
Apache Tomcat peut être démarré et arrêté manuellement par le script fourni avec le package. Mais, ici, nous utiliserons le script init pour le gérer.
vi /etc/init.d/tomcat9
Utilisez les informations ci-dessous.
#!/bin/bash # chkconfig: 2345 95 20 # description: This application was developed by me and is tested on this server # processname: my_app # # Tomcat 8 start/stop/status init.d script # Initially forked from: https://gist.github.com/valotas/1000094 # @author: Miglen Evlogiev <[email protected]> # # Release updates: # Updated method for gathering pid of the current proccess # Added usage of CATALINA_BASE # Added coloring and additional status # Added check for existence of the tomcat user # Added termination proccess #Location of JAVA_HOME (bin files) export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64/ #Add Java binary files to PATH export PATH=$JAVA_HOME/bin:$PATH #CATALINA_HOME is the location of the bin files of Tomcat export CATALINA_HOME=/opt/tomcat/ #CATALINA_BASE is the location of the configuration files of this instance of Tomcat export CATALINA_BASE=/opt/tomcat/ #TOMCAT_USER is the default user of tomcat export TOMCAT_USER=tomcat #TOMCAT_USAGE is the message if this script is called without any options TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;31mkill\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}" #SHUTDOWN_WAIT is wait time in seconds for java proccess to stop SHUTDOWN_WAIT=20 tomcat_pid() { echo `ps -fe | grep $CATALINA_BASE | grep -v grep | tr -s " "|cut -d" " -f2` } start() { pid=$(tomcat_pid) if [ -n "$pid" ] then echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m" else # Start tomcat echo -e "\e[00;32mStarting tomcat\e[00m" #ulimit -n 100000 #umask 007 #/bin/su -p -s /bin/sh $TOMCAT_USER if [ `user_exists $TOMCAT_USER` = "1" ] then /bin/su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh else sh $CATALINA_HOME/bin/startup.sh fi status fi return 0 } status(){ pid=$(tomcat_pid) if [ -n "$pid" ]; then echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m" else echo -e "\e[00;31mTomcat is not running\e[00m" fi } terminate() { echo -e "\e[00;31mTerminating Tomcat\e[00m" kill -9 $(tomcat_pid) } stop() { pid=$(tomcat_pid) if [ -n "$pid" ] then echo -e "\e[00;31mStoping Tomcat\e[00m" #/bin/su -p -s /bin/sh $TOMCAT_USER sh $CATALINA_HOME/bin/shutdown.sh let kwait=$SHUTDOWN_WAIT count=0; until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ] do echo -n -e "\n\e[00;31mwaiting for processes to exit\e[00m"; sleep 1 let count=$count+1; done if [ $count -gt $kwait ]; then echo -n -e "\n\e[00;31mkilling processes didn't stop after $SHUTDOWN_WAIT seconds\e[00m" terminate fi else echo -e "\e[00;31mTomcat is not running\e[00m" fi return 0 } user_exists(){ if id -u $1 >/dev/null 2>&1; then echo "1" else echo "0" fi } case $1 in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; kill) terminate ;; *) echo -e $TOMCAT_USAGE ;; esac exit 0
Crédit :Timothée Hutz.
Définissez le script pour qu'il soit exécutable.
chmod +x /etc/init.d/tomcat9
Démarrer Apache Tomcat
Démarrez le service.
service tomcat9 start
Vous pouvez vérifier le service en cours d'exécution, par défaut tomcat s'exécute sur le port no 8080
netstat -antup | grep 8080
Sortie :
tcp 0 0 :::8080 :::* LISTEN 1526/java
Activez le service Tomcat pour qu'il démarre automatiquement au démarrage du système.
chkconfig --add tomcat9 chkconfig tomcat9 on
Pare-feu
Autoriser les demandes d'applications Web Tomcat via le pare-feu.
iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT /etc/init.d/iptables save
Configurer l'interface utilisateur Web Apache Tomcat
Tomcat peut être géré via le gestionnaire Web et le gestionnaire d'hôte virtuel. Le gestionnaire Web et le gestionnaire d'hébergement sont tous deux protégés par un mot de passe et nécessitent un nom d'utilisateur et un mot de passe pour y accéder.
L'utilisateur avec manager-gui et admin-gui ont accès respectivement au gestionnaire d'applications Web et au gestionnaire d'hôte. Ces utilisateurs et rôles sont définis dans tomcat-users.xml.
vi /opt/tomcat/conf/tomcat-users.xml
Placez les deux lignes suivantes juste au-dessus de la dernière ligne.
<role rolename="admin-gui,manager-gui"/> <user username="admin" password="tomcat" roles="manager-gui,admin-gui"/>
Pour des raisons de sécurité, Web Manager et Host Manager ne sont accessibles que depuis l'hôte local, c'est-à-dire depuis le serveur lui-même.
Pour accéder aux gestionnaires Web et hôtes à partir du système distant, vous devez ajouter votre réseau source dans la liste d'autorisation. Pour ce faire, modifiez les deux fichiers ci-dessous.
### Web Manager ### vi /opt/tomcat/webapps/manager/META-INF/context.xml ### Host Manager ### vi /opt/tomcat/webapps/host-manager/META-INF/context.xml
Mettez à jour la ligne ci-dessous sur les fichiers ci-dessus avec l'adresse IP source à partir de laquelle vous accédez au gestionnaire Web et hôte. .* permettra à chacun d'avoir accès aux deux gestionnaires.
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|.*" />
OU
Vous pouvez également n'autoriser qu'une partie de votre réseau. Par exemple :pour autoriser uniquement le réseau 192.168.1.0/24, vous pouvez utiliser les valeurs ci-dessous.
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.1.*" />
Redémarrez le service Tomcat.
service tomcat9 restart
Accéder à Apache Tomcat
Ouvrez le navigateur Web et pointez sur
http://ip.add.re.ss:8080Vous obtiendrez la page par défaut de Tomcat.
Gestionnaire Web :– Connexion requise. Nom d'utilisateur :admin, Mot de passe :tomcat.
Ici, vous pouvez déployer une nouvelle application, déployer une nouvelle application sur un contexte spécifié, répertorier les applications actives ou inactives, démarrer et arrêter les applications Web.
Vous pouvez également vérifier l'état du serveur .
Gestionnaire d'hôte :– Connexion requise. Nom d'utilisateur :admin, Mot de passe :tomcat.
Ici, vous pouvez gérer les hôtes virtuels de Tomcat.
Conclusion
C'est tout. J'espère que vous avez appris à installer Tomcat 9 sur CentOS 6 / RHEL 6. Vous êtes maintenant prêt à déployer votre première application Web. Comme recommandation de sécurité, envisagez d'implémenter SSL/TLS pour Tomcat