Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Création d'un serveur Tomcat

Pré-requis

  • Disposer des droits d'administration
  • Disposer d'une connexion à Internet configurée et activée.

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 Rpi :

$ 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

  • Pour démarrer le serveur Tomcat, de tapez la commande :
    $ sudo /usr/local/tomcat/bin/startup.sh
    

  • Pour l'arrêter, tapez la commande :

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

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.