Configuration de Tomcat
Pour permettre à des webapps SCENARIserver de fonctionner correctement dans le serveur de servlets Tomcat il est nécessaire d'y apporter certaines modifications de paramétrage.
AttentionSécurité⚓
A l'heure actuel, Les webapps SCENARIserver ne sont pas compatible avec le "Security Manager" de Tomcat. Il est important de ne pas activer le module "Security Manager" lors du démarrage de Tomcat.
Par défaut le "Security Manager" n'est pas actif, cependant il faut être vigilant sur ce point lors de l'usage de versions packagées de Tomcat sous Linux.
ComplémentUsage d'un proxy Apache⚓
Il est possible de cacher Tomcat derrière un proxy Apache. Ceci permet entre autres d'accéder à SCENARIserver sur le port 80 même si vous avez déjà une serveur web Apache d'installé. Il y a plusieurs façons de mettre en place un proxy Apache vers Tomcat, le plus simple et le seul qui à été testé avec succès avec SCENARIserver est l'usage du module Apache mod_proxy :
ConseilTomcat sous Debian / Ubuntu⚓
Si vous utilisez la version packagée de Tomcat, tous les fichiers de configuration de Tomcat sont dans /etc/tomcat6.
Il convient alors de remplacer les chemins [TOMCAT_HOME]/conf dans les procédures ci-dessous par /etc/tomcat6/conf.
ProcédureParamétrer la mémoire RAM allouée à l'application⚓
Si Tomcat est lancé, le stopper (cf procédure dans le présent guide) ;
Ouvrir le fichier
[TOMCAT_HOME]/bin/catalina.sh;Créer la variable JAVA_OPTS en début de fichier ;
ExempleExemple pour 1024Mo⚓
JAVA_OPTS="-Xms1024M -Xmx1024M $JAVA_OPTS"
ProcédureCharger les librairies LibreOffice⚓
L'utilisation de plusieurs webApp SCENARI sur le même serveur Tomcat nécessite un paramétrage permettant le partage de l'accès à LibreOffice.
Ouvrir le fichier
[TOMCAT_HOME]/conf/catalina.properties;Modifier la ligne "shared.loader" pour y déclarer les chemins des librairies LibreOffice
jurt.jar,ridl.jaretunoil.jar.ExempleExemple de configuration windows⚓
shared.loader=file:///D:/Program Files (x86)/LibreOffice 4/URE/java/jurt.jar,file:///D:/Program Files (x86)/LibreOffice 4/URE/java/ridl.jar,file:///D:/Program Files (x86)/LibreOffice 4/Basis/program/classes/unoil.jar
ExempleExemple de configuration linux⚓
shared.loader=/opt/libreoffice4.3/ure/share/java/jurt.jar,/opt/libreoffice4.3/ure/share/java/ridl.jar,/opt/libreoffice4.3/program/classes/unoil.jar
ProcédureConnecteurs Tomcat⚓
Le connecteur Tomcat doit être utilisé pour les spécification suivantes :
- Spécification du port (8080 par défaut) ;
- Encodage des URLs ;
- Taille des buffers ;
- ...
Pour éviter des problèmes d'encodage de nom de fichier il est important de forcer Tomcat à traiter toutes les url en UTF-8.
Ouvrir le fichier
[TOMCAT_HOME]/conf/server.xmlavec un éditeur XML (type notepad);ComplémentsRemarque
Assurez-vous de bien disposer des droits d'écriture sur ce fichier. Si tel n'est pas le cas, et que vous disposez des droits de remplacement uniquement, copier/coller au préalable le fichier sur votre bureau le temps de le modifier.
Modifier ou ajouter un
Connectorsur le protocole HTTP/1.1.- Pour modifier le port, utiliser l'attribut
port; - Pour éviter des problèmes d'encodage de nom de fichier il est important de forcer Tomcat à traiter toutes les url en UTF-8. Ajouter donc le paramètre
URIEncoding="UTF-8" - Pour étendre la taille autorisée des entêtes HTTP, ajouter le paramètre
maxHttpHeaderSize="65536"
Exemple complet de paramétrage : <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" maxHttpHeaderSize="65536"/>
- Pour modifier le port, utiliser l'attribut
ProcédureSuppression des éléments non utilisés de Tomcat⚓
Tomcat apporte un lot d'outils lors de son installation standard non utilisés, ou qui pourraient apporter des faille de sécurité. Il est donc conseillé de les supprimer.
Supprimer les répertoires "docs", "examples", "host-manager", "manager " dans
[TOMCAT_HOME]/webapps.ComplémentsPurge des webapps par défaut de Tomcat
Ouvrir le fichier
[TOMCAT_HOME]/conf/server.xml, et supprimer le connector "AJP "Supprimer ou commenter la ligne <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
ProcédureDémarrer Tomcat⚓
Cette procédure décrit comment démarrer le serveur d'application Tomcat.
RemarqueConditions d'utilisation⚓
Tomcat a été paramétré pour démarrer automatiquement lors de l'initialisation du serveur. Cette procédure n'est donc à utiliser qu'en cas de dysfonctionnement rencontré sur le serveur d'application.
Exécuter la commande [TOMCAT_HOME]/bin/catalina.sh start
ComplémentsComplément⚓
Il faut être connecté avec votre utilisateur pour tomcat pour réaliser cette action
RemarqueTest de bon fonctionnement⚓
Une fois démarré, la requête suivante doit répondre http://127.0.0.1:8081/scserver40/s/chain/u/ping (page blanche).
ProcédureStopper Tomcat⚓
Cette procédure décrit comment arrêter le serveur d'application Tomcat.
Exécuter la commande [TOMCAT_HOME]/bin/catalina.sh stop ;
ComplémentsComplément⚓
Il faut être connecté avec votre utilisateur pour tomcat pour réaliser cette action
ProcédurePasser Tomcat (SCENARIserver) en service⚓
Copier-coller le code suivant dans un éditeur de texte
ComplémentsRed Hat, Fedora, CentOS⚓
1# This is the init script for starting up SCENARIserver2#3# chkconfig: 345 90 104# description: Starts and stops the Tomcat daemon of SCENARIserver.5#67#==============================================================================8# Server configuration910# Name of the server (used when printing out status).11serverName=SCENARIserver
1213# Set this to the path of the tomcat folder.14tomcat=/opt/SCENARIserver/tomcat
1516# user to run the tomcat server as17# (you have to create this user yourself, he must be owner or have write permission18# on tomcat webapp dir, scenari workshop dir and other temporary dirs)19runasuser=root
2021# Set this if you need to specify a specific JRE.22export JAVA_HOME=/opt/SCENARIserver/jre
2324# SCENARIserver needs a minimum of 256Mb of heap space.25heapspace=512M
2627# Extra JVM options28extra_options=""
2930# JVM options31opts_start=" -Xms$heapspace -Xmx$heapspace -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true $extra_options"
32opts_stop=" -Xms64M -Xmx128M "
3334# Path to tomcat pid file.35export CATALINA_PID="$tomcat/tomcat.pid"
3637# Shutdown timeout before tomcat is killed (in seconds)38kill_timeout=30
3940#==============================================================================41# LibreOffice Configuration4243# Set DISPLAY variable if you want LibreOffice to use a specific display44export DISPLAY="localhost:1.0"
4546# If set this stops the recovery dialog prompting you as OO.o starts up47# after a crash - instead the recovery files are just silently48# accumulated.49export OOO_DISABLE_RECOVERY=1
5051#==============================================================================5253# Source function library.54. /etc/rc.d/init.d/functions
5556# Get config.57. /etc/sysconfig/network
5859# Check that networking is up.60[ "${NETWORKING}" = "no" ] && exit 0
6162startup=$tomcat/bin/startup.sh
63shutdown=$tomcat/bin/shutdown.sh
6465start() {66[ -x $startup ] || exit 5
67# Tomcat pid checks68if [ -f $CATALINA_PID ] ; then
69if [ "$(ps -p `cat $CATALINA_PID` | wc -l)" -gt 1 ]; then
70# Tomcat process is still running71echo "ERROR: $serverName seems to be already running as process `cat $CATALINA_PID`"
72exit 1
73else74# Tomcat process not running, but lock file not deleted?75echo "WARNING: orphan lock file. Lock file deleted."
76rm $CATALINA_PID
77fi78fi79echo -n $"Starting $serverName: "
80export JAVA_OPTS="$opts_start"
81su -s /bin/bash -c $startup $runasuser
82retval=$?
83echo84return $retval85}
8687stop() {88echo -n $"Stopping $serverName: "
89# Kill all LibreOffice instances run but the tomcat user...90pkill -9 -u $runasuser soffice
91export JAVA_OPTS="$opts_stop"
92su -s /bin/bash -c "$shutdown $kill_timeout -force" $runasuser
93retval=$?
94echo95return $retval96}
9798restart(){99stop100start101}
102103# See how we were called.104case "$1" in
105start)106start107;;
108stop)109stop110;;
111status)
112# This doesn't work ;)113# status SCENARIserver114;;
115restart)116restart117;;
118*)
119echo $"Usage: $0 {start|stop|restart}"
120exit 1
121esac122123exit 0
Debian, Ubuntu, Mint ⚓
12# This is the init script for starting up SCENARIserver.3#4# description: Starts and stops the Tomcat daemon of SCENARIserver5#67#==============================================================================8# Server configuration910# Name of the server (used when printing out status).11serverName=SCENARIserver
1213# Set this to the path of the tomcat folder.14tomcat=/opt/SCENARIserver/tomcat
1516# user to run the tomcat server as17# (you have to create this user yourself, he must be owner or have write permission18# on tomcat webapp dir, scenari workshop dir and other temporary dirs)19runasuser=root
2021# Set this if you need to specify a specific JRE.22export JAVA_HOME=/opt/SCENARIserver/jre
23export PATH="$PATH:/usr/bin"
2425# SCENARIserver needs a minimum of 256Mb of heap space.26heapspace=512M
2728# Extra JVM options29extra_options=""
3031# JVM options32opts_start=" -Xms$heapspace -Xmx$heapspace -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true $extra_options"
33opts_stop=" -Xms64M -Xmx128M "
3435# Path to tomcat pid file.36export CATALINA_PID="$tomcat/tomcat.pid"
3738# Shutdown timeout before tomcat is killed (in seconds)39kill_timeout=30
4041#==============================================================================42# LibreOffice Configuration4344# Set DISPLAY variable if you want LibreOffice to use a specific display45export DISPLAY=":1.0"
4647# If set this stops the recovery dialog prompting you as OO.o starts up48# after a crash - instead the recovery files are just silently49# accumulated.50export OOO_DISABLE_RECOVERY=1
5152export UNO_PATH=/usr/lib/libreoffice/program/
5354#==============================================================================5556startup=$tomcat/bin/startup.sh
57shutdown=$tomcat/bin/shutdown.sh
5859. /lib/lsb/init-functions
6061start(){62# Tomcat pid checks63if [ -f $CATALINA_PID ] ; then
64if [ "$(ps -p `cat $CATALINA_PID` | wc -l)" -gt 1 ]; then
65# Tomcat process is still running66echo "ERROR: $serverName seems to be already running as process `cat $CATALINA_PID`"
67exit 1
68else69# Tomcat process not running, but lock file not deleted?70echo "WARNING: orphan lock file. Lock file deleted."
71rm $CATALINA_PID
72fi73fi74log_begin_msg "Starting $serverName..."
75export JAVA_OPTS="$opts_start"
76su -s /bin/bash -c $startup $runasuser
77log_end_msg $?78}
79stop(){80log_begin_msg "Stoping $serverName..."
81export JAVA_OPTS="$opts_stop"
82# Kill all LibreOffice instances run but the tomcat user...83pkill -9 -u $runasuser soffice
84su -s /bin/bash -c "$shutdown $kill_timeout -force" $runasuser
85log_end_msg $?86}
87restart(){88stop89start90}
9192# See how we were called.93case "$1" in
94start)95start96;;
97stop)98stop99;;
100status)
101# status SCENARIserver102echo "Status: not implemented"
103;;
104restart)105restart106;;
107*)
108echo "Usage: $0 {start|stop|restart}"
109exit 1
110esac111112exit 0
ÉditeR les lignes indiquant :
Compléments- le répertoire de tomcat, (variable tomcat) ;
- le répertoire de la JRE, (variable JAVA_HOME) ;
- le répertoire de libreoffice, (variable UNO_PATH) ;
- les options de lancement de la JRE : la mémoire alloué à tomcat dans cet exemple est 512M. Adaptez les valeurs -Xms et -Xmx à votre contexte ;
- le display utilisable pour libreoffice ;
Installation
ComplémentsSauver le fichier dans /etc/init.d sous le nom SCENARIserver (ce répertoire est standard sur les distributions récentes)
Rendre le script exécutable: chmod a+x SCENARIserver
Ajouter SCENARIserver au bon runlevel :
sous Fedora : chkconfig --add SCENARIserver
sous Ubuntu : update-rc.d SCENARIserver defaults 90 10

