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.jar
etunoil.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.xml
avec 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
Connector
sur 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 SCENARIserver
2#
3# chkconfig: 345 90 10
4# description: Starts and stops the Tomcat daemon of SCENARIserver.
5#
67#==============================================================================
8# Server configuration
910# 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 as
17# (you have to create this user yourself, he must be owner or have write permission
18# 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 options
28extra_options=""
2930# JVM options
31opts_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 Configuration
4243# Set DISPLAY variable if you want LibreOffice to use a specific display
44export DISPLAY="localhost:1.0"
4546# If set this stops the recovery dialog prompting you as OO.o starts up
47# after a crash - instead the recovery files are just silently
48# 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 checks
68if [ -f $CATALINA_PID ] ; then
69if [ "$(ps -p `cat $CATALINA_PID` | wc -l)" -gt 1 ]; then
70# Tomcat process is still running
71echo "ERROR: $serverName seems to be already running as process `cat $CATALINA_PID`"
72exit 1
73else
74# Tomcat process not running, but lock file not deleted?
75echo "WARNING: orphan lock file. Lock file deleted."
76rm $CATALINA_PID
77fi
78fi
79echo -n $"Starting $serverName: "
80export JAVA_OPTS="$opts_start"
81su -s /bin/bash -c $startup $runasuser
82retval=$?
83echo
84return $retval
85}
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=$?
94echo
95return $retval
96}
9798restart(){
99stop
100start
101}
102103# See how we were called.
104case "$1" in
105start)
106start
107;;
108stop)
109stop
110;;
111status)
112# This doesn't work ;)
113# status SCENARIserver
114;;
115restart)
116restart
117;;
118*)
119echo $"Usage: $0 {start|stop|restart}"
120exit 1
121esac
122123exit 0
Debian, Ubuntu, Mint ⚓
12# This is the init script for starting up SCENARIserver.
3#
4# description: Starts and stops the Tomcat daemon of SCENARIserver
5#
67#==============================================================================
8# Server configuration
910# 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 as
17# (you have to create this user yourself, he must be owner or have write permission
18# 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 options
29extra_options=""
3031# JVM options
32opts_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 Configuration
4344# Set DISPLAY variable if you want LibreOffice to use a specific display
45export DISPLAY=":1.0"
4647# If set this stops the recovery dialog prompting you as OO.o starts up
48# after a crash - instead the recovery files are just silently
49# 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 checks
63if [ -f $CATALINA_PID ] ; then
64if [ "$(ps -p `cat $CATALINA_PID` | wc -l)" -gt 1 ]; then
65# Tomcat process is still running
66echo "ERROR: $serverName seems to be already running as process `cat $CATALINA_PID`"
67exit 1
68else
69# Tomcat process not running, but lock file not deleted?
70echo "WARNING: orphan lock file. Lock file deleted."
71rm $CATALINA_PID
72fi
73fi
74log_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(){
88stop
89start
90}
9192# See how we were called.
93case "$1" in
94start)
95start
96;;
97stop)
98stop
99;;
100status)
101# status SCENARIserver
102echo "Status: not implemented"
103;;
104restart)
105restart
106;;
107*)
108echo "Usage: $0 {start|stop|restart}"
109exit 1
110esac
111112exit 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