Table des matières

, ,

Création d'un serveur Tomcat

Pré-requis

Installation

Installez les paquets tomcat7,libapache2-mod-php5 ou en ligne de commande :

$ sudo apt install tomcat7 libapache2-mod-php5

Autre possibilité : téléchargez Tomcat sur http://tomcat.apache.org/download-70.cgi

Dans Binary Distributions/Core, choisir le lien tar.gz.

Le placer, par exemple, dans le dossier /home/$USER/Téléchargements.

Pour l'installer sur un Raspberry, le copier via scp vers un répertoire du Raspberry Pi :

$ scp ~/Téléchargements/apache-tomcat-[version].tar.gz pi@framboise:/home/pi

Allez dans le répertoire de téléchargement et décompressez l’archive téléchargée vers le répertoire /usr/local :

$ cd /home/$USER/Téléchargements
$ sudo tar -zxvf apache-tomcat-v.x.y.tar.gz

Cela y fait apparaître un répertoire apache-tomcat-v.x.y/.

Déplacez ce répertoire et créez le lien tomcat :

$ sudo mv apache-tomcat-v.x.y/ /usr/local/
$ sudo ln -s /usr/local/apache-tomcat-v.x.y /usr/local/tomcat

Créez l'utilisateur tomcat avec le mot de passe tomcat :

$ sudo adduser tomcat
...
Ajout de l'utilisateur « tomcat » ...
Ajout du nouveau groupe « tomcat » (1001) ...
Ajout du nouvel utilisateur « tomcat » (1001) avec le groupe « tomcat » ...
Le répertoire personnel « /home/tomcat » existe déjà.  Rien n'est copié depuis « /etc/skel ».
...
Entrez le nouveau mot de passe UNIX : 
Retapez le nouveau mot de passe UNIX : 
passwd : le mot de passe a été mis à jour avec succès
Modification des informations relatives à l'utilisateur tomcat
Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée
	Nom complet []: 
	N° de bureau []: 
	Téléphone professionnel []: 
	Téléphone personnel []: 
	Autre []: 
Ces informations sont-elles correctes ? [O/n] 
$ 

Et rendez-le propriétaire des répertoires de tomcat :

$ cd /usr/local/tomcat
$ sudo chown -R tomcat:tomcat .
$ sudo chmod -R 6770 .

Pour pouvoir intervenir sans être root, rendre l'utilisateur $USER membre du groupe tomcat :

$ sudo usermod -aG tomcat $USER

Attention à mettre le -a : sinon, $USER changera de groupe au lieu d'ajouter tomcat

Configuration

Sauvegarde du site

$ sudo mkdir /usr/local/tomcat/oldwebapps
$ sudo mv /usr/local/tomcat/webapps/* /usr/local/tomcat/oldwebapps/

Utilisateurs et mots de passe

L'installation a créé un utilisateur tomcat7 sans droit.

Pour gérer tomcat, nous allons créer un utilisateur tomcat.

Pour cela, éditez avec les droits d'administration le fichier /etc/tomcat7/tomcat-users.xml pour ajouter entre les balises tomcat-users les lignes suivantes :

/usr/local/tomcat/conf/tomcat-users.xml
...
<tomcat-users>
  # ...
  <role rolename="tomcat"/>
  <role rolename="admin-gui"/>
  <role rolename="manager-gui"/>
  <user username="tomcat" password="XXXXXX" roles="tomcat,admin-gui,manager-gui"/>
</tomcat-users>
...

→ L'utilisateur tomcat a pour mot de passe XXXXXX, ses rôles sont tomcat, admin-gui et manager-gui.

Fichiers

/etc/apache2/sites-available/default
<VirtualHost *:80>
	ServerAdmin webmaster@localhost
 
	DocumentRoot /var/www
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
 
	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>
	Alias /phppgadmin /usr/share/phppgadmin
 
	ErrorLog ${APACHE_LOG_DIR}/error.log
 
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn
 
	CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
/etc/hosts
...
127.0.0.1	localhost.localdomain	localhost	framboise	framboise.local

Fichier de démarrage du serveur Catalina pour Tomcat :

bin/startup.sh
#!/bin/sh
 
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
 
# Better OS/400 detection: see Bugzilla 31132
os400=false
case "`uname`" in
OS400*) os400=true;;
esac
 
# resolve links - $0 may be a softlink
PRG="$0"
 
while [ -h "$PRG" ] ; do
  ls=`ls -ld "$PRG"`
  link=`expr "$ls" : '.*-> \(.*\)$'`
  if expr "$link" : '/.*' > /dev/null; then
    PRG="$link"
  else
    PRG=`dirname "$PRG"`/"$link"
  fi
done
 
PRGDIR=`dirname "$PRG"`
EXECUTABLE=catalina.sh
 
# Check that target executable exists
if $os400; then
  # -x will Only work on the os400 if the files are:
  # 1. owned by the user
  # 2. owned by the PRIMARY group of the user
  # this will not work if the user belongs in secondary groups
  eval
else
  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
    echo "Cannot find $PRGDIR/$EXECUTABLE"
    echo "The file is absent or does not have execute permission"
    echo "This file is needed to run this program"
    exit 1
  fi
fi
 
exec "$PRGDIR"/"$EXECUTABLE" start "$@"

Script de démarrage pour OpenClinica :

#!/bin/bash
#
# tomcat        
#
# chkconfig: 2345 90 15 
# description:  Tomcat start script for OpenClinica.
#
#
#
# Change the variables below if they do not mee your environment.
 
RETVAL=$?
export INIT_NAME="tomcat"
export CATALINA_HOME="/usr/local/tomcat"
export JAVA_HOME="/usr/local/java"
#please note that -#XX:ParallelGCThreads need to be equivalent of number of cores
export JAVA_OPTS="$JAVA_OPTS   -Xmx1280m -XX:+UseParallelGC -XX:ParallelGCThreads=1 -XX:MaxPermSize=180m -XX:+CMSClassUnloadingEnabled"
 
 
case "$1" in
 start)
        ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |grep -v grep |  awk '{printf $1 " "}' | wc | awk '{print $2}' > /tmp/$INIT_NAME_process_count.txt
        read line < /tmp/$INIT_NAME_process_count.txt
        if [ $line -gt 0 ]; then
                echo "Tomcat is already running with a PID of `ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |  awk '{printf $1 " "}'`"
        else
                if [ -f $CATALINA_HOME/bin/startup.sh ];
                  then
                    echo $"Starting Tomcat"
                    /bin/su tomcat $CATALINA_HOME/bin/startup.sh
                fi
                /etc/init.d/$INIT_NAME status
        fi
        ;;
 stop)
         ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |grep -v grep |  awk '{printf $1 " "}' | wc | awk '{print $2}' > /tmp/$INIT_NAME_process_count.txt
        read line < /tmp/$INIT_NAME_process_count.txt
        if [ $line -gt 0 ]; then
                if [ -f $CATALINA_HOME/bin/shutdown.sh ];
                  then
                    echo $"Stopping Tomcat"
                    /bin/su tomcat $CATALINA_HOME/bin/shutdown.sh
                fi
                sleep 10
                /etc/init.d/$INIT_NAME status
        else
                echo
                echo "Tomcat was not running"
                echo
        fi
        ;;
 
 restart)
        /etc/init.d/$INIT_NAME stop
        /etc/init.d/$INIT_NAME start
        ;;
 
 status) 
         ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |grep -v grep |  awk '{printf $1 " "}' | wc | awk '{print $2}' > /tmp/$INIT_NAME_process_count.txt
        read line < /tmp/$INIT_NAME_process_count.txt
        if [ $line -gt 0 ]; then
            echo
            echo -n "Tomcat is running with a PID of "` 
        ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |  awk '{printf $1 " "}'`
            echo -n ""
            echo
        else
            echo
            echo "Tomcat is not running"
            echo
        fi
        ;;
 kill)
        PID=`ps aux | grep "$CATALINA_HOME" | grep "$JAVA_HOME" | awk '{printf $2 " "}'`
        echo
        echo "Killing Tomcat process running on PID $PID"
        echo
        kill $PID
        sleep 10
        echo "Confirming tomcat is killed"
        /etc/init.d/$INIT_NAME status
        ;;
 forcekill)
        PID=`ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |awk '{printf $1 " "}'`
        echo
        echo "Killing Tomcat process running on PID $PID"
        echo
        kill -9 $PID
        sleep 10
        echo "Confirming tomcat is killed"
        /etc/init.d/$INIT_NAME status
        ;;
 *)
        echo $"Usage: $0 {start|stop|restart|status|kill|forcekill}"
        exit 1
        ;;
esac
 
exit $RETVAL

Derniers réglages

Numéro de port

Pour changer le numéro de port, ouvrez avec les droits d'administration le fichier /usr/local/tomcat/conf/server.xml pour le modifier comme ceci : localisez la balise Connector et changez l'attribut port.

Test

Démarrez le serveur Tomcat:

$ sudo /usr/local/tomcat/bin/startup.sh

Ouvrir dans un navigateur l'adresse

La page de tomcat doit s'afficher :

Démarrage et arrêt

Au lancement de la machine

Cf. la page Faire un Demon (ou service) sous Linux

Pour que tomcat se lance automatiquement à chaque démarrage, éditez avec les droits d'administration le fichier /etc/init.d/tomcat pour y écrire ceci :

/etc/init.d/tomcat
#!/bin/sh
start()
{
    /usr/local/tomcat/bin/startup.sh
    echo "start"
}
 
stop()
{
    /usr/local/tomcat/bin/shutdown.sh
    echo "stop"
}
 
restart()
{
    stop;
    sleep 1;
    start;
}
status()
{
    ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |grep -v grep |  awk '{printf $1 " "}' | wc | awk '{print $2}' > /tmp/$INIT_NAME_process_count.txt
    read line < /tmp/$INIT_NAME_process_count.txt
    if [ $line -gt 0 ]; then
        echo
        echo -n "Tomcat tourne avec un PID = "`ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |  awk '{printf $1 " "}'`
        echo -n ""
        echo
    else
        echo
        echo "Tomcat ne tourne pas"
        echo
    fi
}
case $1 in
start) 
    start;;
stop)
    stop;;
restart)
    restart;;
status) 
    status;;
*)
    start;;
esac

Éditez avec les droits d'administration le fichier /usr/local/tomcat/bin/setenv.sh avec le contenu suivant :

/usr/local/tomcat/bin/setenv.sh
INIT_NAME=tomcat
JAVA_HOME=/usr/local/java
JRE_HOME=/usr/local/java/jre

Voici celui fourni avec openclinica :

/etc/init.d/tomcat
#!/bin/bash
#
# tomcat        
#
# chkconfig: 2345 90 15 
# description:  Tomcat start script for OpenClinica.
#
#
#
# Change the variables below if they do not mee your environment.
 
RETVAL=$?
export INIT_NAME="tomcat"
export CATALINA_HOME="/usr/local/tomcat"
export JAVA_HOME="/usr/local/java"
#please note that -#XX:ParallelGCThreads need to be equivalent of number of cores
export JAVA_OPTS="$JAVA_OPTS   -Xmx1280m -XX:+UseParallelGC -XX:ParallelGCThreads=1 -XX:MaxPermSize=180m -XX:+CMSClassUnloadingEnabled"
 
case "$1" in
 start)
        ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |grep -v grep |  awk '{printf $1 " "}' | wc | awk '{print $2}' > /tmp/$INIT_NAME_process_count.txt
        read line < /tmp/$INIT_NAME_process_count.txt
        if [ $line -gt 0 ]; then
                echo "Tomcat is already running with a PID of `ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |  awk '{printf $1 " "}'`"
        else
                if [ -f $CATALINA_HOME/bin/startup.sh ];
                  then
                    echo $"Starting Tomcat"
                    /bin/su tomcat $CATALINA_HOME/bin/startup.sh
                fi
                /etc/init.d/$INIT_NAME status
        fi
        ;;
 stop)
         ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |grep -v grep |  awk '{printf $1 " "}' | wc | awk '{print $2}' > /tmp/$INIT_NAME_process_count.txt
        read line < /tmp/$INIT_NAME_process_count.txt
        if [ $line -gt 0 ]; then
                if [ -f $CATALINA_HOME/bin/shutdown.sh ];
                  then
                    echo $"Stopping Tomcat"
                    /bin/su tomcat $CATALINA_HOME/bin/shutdown.sh
                fi
                sleep 10
                /etc/init.d/$INIT_NAME status
        else
                echo
                echo "Tomcat was not running"
                echo
        fi
        ;;
 
 restart)
        /etc/init.d/$INIT_NAME stop
        /etc/init.d/$INIT_NAME start
        ;;
 
 status) 
         ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |grep -v grep |  awk '{printf $1 " "}' | wc | awk '{print $2}' > /tmp/$INIT_NAME_process_count.txt
        read line < /tmp/$INIT_NAME_process_count.txt
        if [ $line -gt 0 ]; then
            echo
            echo -n "Tomcat is running with a PID of "` 
        ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |  awk '{printf $1 " "}'`
            echo -n ""
            echo
        else
            echo
            echo "Tomcat is not running"
            echo
        fi
        ;;
 kill)
        PID=`ps aux | grep "$CATALINA_HOME" | grep "$JAVA_HOME" | awk '{printf $2 " "}'`
        echo
        echo "Killing Tomcat process running on PID $PID"
        echo
        kill $PID
        sleep 10
        echo "Confirming tomcat is killed"
        /etc/init.d/$INIT_NAME status
        ;;
 forcekill)
        PID=`ps ax | grep "$CATALINA_HOME" | grep "$JAVA_HOME" |awk '{printf $1 " "}'`
        echo
        echo "Killing Tomcat process running on PID $PID"
        echo
        kill -9 $PID
        sleep 10
        echo "Confirming tomcat is killed"
        /etc/init.d/$INIT_NAME status
        ;;
 *)
        echo $"Usage: $0 {start|stop|restart|status|kill|forcekill}"
        exit 1
        ;;
esac
 
exit $RETVAL

copiez le fichier /usr/local/tomcat/bin/startup.sh dans /etc/init.d, rendez-le exécutable et ajoutez-le à la liste des programmes au démarrage par les commandes :

$ sudo cp /usr/local/tomcat/bin/startup.sh /etc/init.d/tomcat
$ sudo chmod a+x /etc/init.d/startup.sh
$ sudo update-rc.d tomcat defaults

Manuellement

Utilisation

Lancez l'application via le tableau de bord ou via le terminal

Désinstallation

Pour supprimer cette application, il suffit de supprimer son paquet.

Voir aussi


Contributeurs principaux : Jamaique.

Basé sur « Titre original de l'article » par Auteur Original.