Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
« Tomcat » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 1 : | Ligne 1 : | ||
{{notice|Si vous ne parvenez pas à trouver Tomcat, consulter la page [[Localiser Tomcat]]}} | {{notice|Si vous ne parvenez pas à trouver Tomcat, consulter la page [[Localiser Tomcat]]}} | ||
== Allocation Mémoire (RAM) avec {{var|JAVA_OPTS}} == | == Allocation Mémoire (RAM) avec {{var|JAVA_OPTS}} == | ||
On utilise la variable d'environnement {{var|JAVA_OPTS}}<ref>[http://publib.boulder.ibm.com/wasce/V2.0.0/en/javaopts.html The JAVA_OPTS environment variable] @ ibm.com</ref> pour définir l'allocation mémoire du processus Tomcat. On placera généralement cette variable dans {{path|{{Tomcat}}/bin/startup.sh}}. Elle peut cependant avoir été défini dans : | On utilise la variable d'environnement {{var|JAVA_OPTS}}<ref>[http://publib.boulder.ibm.com/wasce/V2.0.0/en/javaopts.html The JAVA_OPTS environment variable] @ ibm.com</ref> pour définir l'allocation mémoire du processus Tomcat. On placera généralement cette variable dans {{path|{{Tomcat}}/bin/startup.sh}}. Elle peut cependant avoir été défini dans : | ||
* {{path|{{Tomcat}}/bin/catalina.sh}} | * {{path|{{Tomcat}}/bin/catalina.sh}} | ||
| Ligne 10 : | Ligne 12 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
C'est la valeur {{var|-Xmx2500m}} qui défini l'allocation, ici on alloue 2.5Go. On '''adaptera l'allocation en fonction du serveur et en fonction des besoins''' de publication. | C'est la valeur {{var|-Xmx2500m}} qui défini l'allocation, ici on alloue 2.5Go. On '''adaptera l'allocation en fonction du serveur et en fonction des besoins''' de publication. | ||
=== Forcer la locale === | === Forcer la locale === | ||
| Ligne 17 : | Ligne 20 : | ||
JAVA_OPTS="-Dfile.encoding=UTF-8 -Xmx4000m -XX:MaxPermSize=256m -XX:NewSize=300m -Djava.awt.headless=true -server -Duser.language=fr -Duser.region=FR" | JAVA_OPTS="-Dfile.encoding=UTF-8 -Xmx4000m -XX:MaxPermSize=256m -XX:NewSize=300m -Djava.awt.headless=true -server -Duser.language=fr -Duser.region=FR" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Arrêt et redémarrage automatique == | == Arrêt et redémarrage automatique == | ||
Nous utiliserons un script {{cmd|init}} dans le cas d'une installation à partir des sources de {{tomcat}}.<ref>[http://ieg.ignou.ac.in/wiki/index.php/User:Ganesh.tamang/How_To_In_LINUX/How_To_Install_Tomcat6_on_Debian_or_Ubuntu#step_10:_Writing_Startup_Script_for_tomcat_6 Writing Startup Script for tomcat 6 ]</ref> | Nous utiliserons un script {{cmd|init}} dans le cas d'une installation à partir des sources de {{tomcat}}.<ref>[http://ieg.ignou.ac.in/wiki/index.php/User:Ganesh.tamang/How_To_In_LINUX/How_To_Install_Tomcat6_on_Debian_or_Ubuntu#step_10:_Writing_Startup_Script_for_tomcat_6 Writing Startup Script for tomcat 6 ]</ref> | ||
{{remarque|Il est inutile de suivre cette procédure lors d'une installation via le gestionnaire de paquet de votre OS}} | {{remarque|Il est inutile de suivre cette procédure lors d'une installation via le gestionnaire de paquet de votre OS}} | ||
=== Création du script === | === Création du script === | ||
{{important|Si vous avez plusieurs instance tomcat il faudra un script d'initialisation pour chaque instance}} | {{important|Si vous avez plusieurs instance tomcat il faudra un script d'initialisation pour chaque instance}} | ||
{{notice|Penser à adapter le chemin vers le dossier de votre Tomcat (cf. {{var|$CATALINA_HOME}}) et le chemin vers la JVM ({{var|$JAVA_HOME}})}} | {{notice|Penser à adapter le chemin vers le dossier de votre Tomcat (cf. {{var|$CATALINA_HOME}}) et le chemin vers la JVM ({{var|$JAVA_HOME}})}} | ||
| Ligne 70 : | Ligne 77 : | ||
esac | esac | ||
exit 0 | exit 0</syntaxhighlight> | ||
</syntaxhighlight> | |||
=== Ajout du script init au système === | === Ajout du script init au système === | ||
Il faut d'abord rendre le script {{path|/etct/init.d/tomcat{{value|-front{{!}}back}}.sh}} executable par le système puis on l'ajoute aux scripts démarrer par défaut : | Il faut d'abord rendre le script {{path|/etct/init.d/tomcat{{value|-front{{!}}back}}.sh}} executable par le système puis on l'ajoute aux scripts démarrer par défaut : | ||
<syntaxhighlight lang="bash"> | |||
chmod u=rwx,g=rx,o=x tomcat6* | <syntaxhighlight lang="bash">chmod u=rwx,g=rx,o=x tomcat6* | ||
update-rc.d tomcat6-front.sh defaults | update-rc.d tomcat6-front.sh defaults</syntaxhighlight> | ||
</syntaxhighlight> | |||
On fait un petit test pour vérfier qu'il n'y a pas d'erreur : | On fait un petit test pour vérfier qu'il n'y a pas d'erreur : | ||
<syntaxhighlight lang="bash"> | |||
/etc/init.d/tomcat6-front.sh restart | <syntaxhighlight lang="bash">/etc/init.d/tomcat6-front.sh restart</syntaxhighlight> | ||
</syntaxhighlight> | |||
=== Tâche cron journalière de redémarrage === | === Tâche cron journalière de redémarrage === | ||
{{important|La description ci-dessous considère que vous utiliser l'[[Arborescence de production]] et les '''scripts shell''' préconisé pour les installations.}} | {{important|La description ci-dessous considère que vous utiliser l'[[Arborescence de production]] et les '''scripts shell''' préconisé pour les installations.}} | ||
On s'appuie sur la function {{cmd|flushAndRestart}} défini dans {{path|~/.bashrc}} ou {{path|~/.ajlsmrc}} | On s'appuie sur la function {{cmd|flushAndRestart}} défini dans {{path|~/.bashrc}} ou {{path|~/.ajlsmrc}} | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
@daily flushAndRestart front | @daily flushAndRestart front | ||
#@daily flushAndRestart back | #@daily flushAndRestart back | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Encodage des paramètres envoyés avec la méthode {{value|GET}} == | == Encodage des paramètres envoyés avec la méthode {{value|GET}} == | ||
La configuration de {{tomcat}}<ref>[https://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q2 Configuration de {{tomcat}}]</ref> peut également jouer un rôle dans ce genre de problème. Voici la configuration recommandée (dans {{path|./conf/server.xml}}) pour les connecteur {{value|HTTP}} et {{value|AJP}} : | La configuration de {{tomcat}}<ref>[https://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q2 Configuration de {{tomcat}}]</ref> peut également jouer un rôle dans ce genre de problème. Voici la configuration recommandée (dans {{path|./conf/server.xml}}) pour les connecteur {{value|HTTP}} et {{value|AJP}} : | ||
<syntaxhighlight lang="xml" highlight="2,7"> | <syntaxhighlight lang="xml" highlight="2,7"> | ||
| Ligne 105 : | Ligne 117 : | ||
/> | /> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Tomcat7 == | == Tomcat7 == | ||
=== Gestion des sessions === | === Gestion des sessions === | ||
{{important|La gestion des sessions à changer dans Tomcat7<ref>[http://stackoverflow.com/questions/3980392/tomcat-7-session-cookie-path Tomcat 7 session cookie path] @ StackOverflow</ref>}} | {{important|La gestion des sessions à changer dans Tomcat7<ref>[http://stackoverflow.com/questions/3980392/tomcat-7-session-cookie-path Tomcat 7 session cookie path] @ StackOverflow</ref>}} | ||
L'attribut que {{attr|emptySessionPath}}="{{value|true}}" que l'on placer dans les connecteurs du fichier {{path|<tomcat'''6'''>/conf/server.xml}} ne sert plus. | L'attribut que {{attr|emptySessionPath}}="{{value|true}}" que l'on placer dans les connecteurs du fichier {{path|<tomcat'''6'''>/conf/server.xml}} ne sert plus. | ||
Il faut maintenant éditer le fichier {{path|<tomcat'''7'''>/conf/context.xml}} et ajouter l'attribut {{attr|sessionCookiePath}}="{{value|/}}", puis redémarrer le serveur Tomcat.<ref>[https://tomcat.apache.org/migration-7.html#Session_cookie_configuration Session cookie configuration] @ Tomcat doc</ref> | Il faut maintenant éditer le fichier {{path|<tomcat'''7'''>/conf/context.xml}} et ajouter l'attribut {{attr|sessionCookiePath}}="{{value|/}}", puis redémarrer le serveur Tomcat.<ref>[https://tomcat.apache.org/migration-7.html#Session_cookie_configuration Session cookie configuration] @ Tomcat doc</ref> | ||
== Arrêter Tomcat 6.0 à partir du PID == | == Arrêter Tomcat 6.0 à partir du PID == | ||
| Ligne 135 : | Ligne 151 : | ||
== Erreurs | == Erreurs à l'arrêt du serveur == | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| Ligne 162 : | Ligne 178 : | ||
<syntaxhighlight lang="bash">$TOMCAT_HOME/bin/catalina.sh start</syntaxhighlight> | <syntaxhighlight lang="bash">$TOMCAT_HOME/bin/catalina.sh start</syntaxhighlight> | ||
== Démarrer Tomcat == | |||
On utilise soit le script $TOMCATcatalina.sh, soit le script startup.sh. | |||
<syntaxhighlight lang="bash">netstat -a | grep "LISTEN" | |||
tcp 0 0 localhost.localdom:7634 *:* LISTEN | |||
tcp 0 0 localhost.locald:domain *:* LISTEN | |||
tcp 0 0 *:ssh *:* LISTEN | |||
tcp 0 0 localhost.localdoma:ipp *:* LISTEN | |||
tcp 0 0 localhost.lo:postgresql *:* LISTEN | |||
tcp 0 0 localhost.localdom:smtp *:* LISTEN | |||
tcp 0 0 *:http *:* LISTEN | |||
tcp6 0 0 [::]:ssh [::]:* LISTEN | |||
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN | |||
tcp6 0 0 ip6-localhost:smtp [::]:* LISTEN | |||
tcp6 0 0 localhost.localdom:8005 [::]:* LISTEN | |||
tcp6 0 0 [::]:8009 [::]:* LISTEN | |||
tcp6 0 0 [::]:http-alt [::]:* LISTEN</syntaxhighlight> | |||
== References == | == References == | ||
# [https://wiki.apache.org/tomcat/FAQ/Memory FAQ / Memory] @ Tomcat wiki | # [https://wiki.apache.org/tomcat/FAQ/Memory FAQ / Memory] @ Tomcat wiki | ||
<references/> | <references/> | ||
Version du 15 mars 2013 à 11:08
Allocation Mémoire (RAM) avec JAVA_OPTS
On utilise la variable d'environnement JAVA_OPTS<ref>The JAVA_OPTS environment variable @ ibm.com</ref> pour définir l'allocation mémoire du processus Tomcat. On placera généralement cette variable dans Apache Tomcat/bin/startup.sh. Elle peut cependant avoir été défini dans :
- Apache Tomcat/bin/catalina.sh
- $HOME/.bashrc
On définira la l'option comme suit :
JAVA_OPTS="-Dfile.encoding=UTF-8 -Xmx2500m -XX:MaxPermSize=128m -XX:NewSize=300m -Djava.awt.headless=true -server"
C'est la valeur -Xmx2500m qui défini l'allocation, ici on alloue 2.5Go. On adaptera l'allocation en fonction du serveur et en fonction des besoins de publication.
Forcer la locale
Pour forcer la locale du Tomcat, on va rajouter les options -Duser.language=fr et -Duser.region=FR" dans la variable JAVA_OPTS du fichier Apache Tomcat/bin/catalina.sh.
JAVA_OPTS="-Dfile.encoding=UTF-8 -Xmx4000m -XX:MaxPermSize=256m -XX:NewSize=300m -Djava.awt.headless=true -server -Duser.language=fr -Duser.region=FR"
Arrêt et redémarrage automatique
Nous utiliserons un script init dans le cas d'une installation à partir des sources de Apache Tomcat.<ref>Writing Startup Script for tomcat 6 </ref>
Remarques : Il est inutile de suivre cette procédure lors d'une installation via le gestionnaire de paquet de votre OS.
Création du script
Il faut placer le contenu du script ci-dessous dans /etc/init.d/tomcat-front|back.sh
#!/bin/sh
###BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Should-Start: $named
# Should-Stop: $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start Tomcat.
# Description: Start the Tomcat servlet engine.
### END INIT INFO
# Tomcat 6 init-script
# ATTENTION ! Si vous avez plusieurs instance tomcat il faudra plusieurs script d'initialisation
CATALINA_HOME=/opt/tomcat6-front
JAVA_HOME=/usr/lib/jvm/java-6-sun
#JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.13
export CATALINA_HOME
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
case $1 in
start)
sh "$CATALINA_HOME"/bin/startup.sh
echo "tomcat6 started successfully"
;;
stop)
sh "$CATALINA_HOME"/bin/shutdown.sh
echo "tomcat6 stoped successfully"
;;
restart)
sh "$CATALINA_HOME"/bin/shutdown.sh
sh "$CATALINA_HOME"/bin/startup.sh
echo "tomcat6 restarted successfully"
;;
*)
sh "$CATALINA_HOME"/bin/startup.sh
echo "tomcat6 started successfully"
;;
esac
exit 0
Ajout du script init au système
Il faut d'abord rendre le script /etct/init.d/tomcat-front|back.sh executable par le système puis on l'ajoute aux scripts démarrer par défaut :
chmod u=rwx,g=rx,o=x tomcat6*
update-rc.d tomcat6-front.sh defaults
On fait un petit test pour vérfier qu'il n'y a pas d'erreur :
/etc/init.d/tomcat6-front.sh restart
Tâche cron journalière de redémarrage
On s'appuie sur la function flushAndRestart défini dans ~/.bashrc ou ~/.ajlsmrc
@daily flushAndRestart front
#@daily flushAndRestart back
Encodage des paramètres envoyés avec la méthode GET
La configuration de Apache Tomcat<ref>Configuration de Apache Tomcat</ref> peut également jouer un rôle dans ce genre de problème. Voici la configuration recommandée (dans ./conf/server.xml) pour les connecteur HTTP et AJP :
<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8"
⋮
/>
⋮
<Connector port="8009" protocol="AJP/1.3"
URIEncoding="UTF-8"
⋮
/>
Tomcat7
Gestion des sessions
L'attribut que emptySessionPath="true" que l'on placer dans les connecteurs du fichier <tomcat6>/conf/server.xml ne sert plus. Il faut maintenant éditer le fichier <tomcat7>/conf/context.xml et ajouter l'attribut sessionCookiePath="/", puis redémarrer le serveur Tomcat.<ref>Session cookie configuration @ Tomcat doc</ref>
Arrêter Tomcat 6.0 à partir du PID
Arrêter Tomcat :
$TOMCAT_HOME/bin/catalina.sh stop
Définir la variable d'environnement CATALINA_BASE dans ~/.profile :
CATALINA_BASE=/usr/local/apache-tomcat-6.0.36
Créer le fichier $TOMCAT_HOME/bin/setenv.sh :
CATALINA_PID="$CATALINA_BASE/bin/catalina.pid"
Redémarrer Tomcat :
$TOMCAT_HOME/bin/catalina.sh start
Pour arrêter Tomcat :
cat $TOMCAT_HOME/bin/catalina.pid | xargs kill -9
Erreurs à l'arrêt du serveur
$ catalina.sh stop
Using CATALINA_BASE: /usr/local/apache-tomcat-6.0.36
Using CATALINA_HOME: /usr/local/apache-tomcat-6.0.36
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.36/temp
Using JRE_HOME: /usr/local/jdk1.6.0_39
Using CLASSPATH: /usr/local/apache-tomcat-6.0.36/bin/bootstrap.jar
Using CATALINA_PID: /usr/local/apache-tomcat-6.0.36/bin/catalina.pid
15 mars 2013 11:22:47 org.apache.catalina.startup.Catalina stopServer
GRAVE: Catalina.stop:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
Arrêter Tomcat :
cat $TOMCAT_HOME/bin/catalina.pid | xargs kill -9
Supprimer le fichier catalina.pid :
rm -f $TOMCAT_HOME/bin/catalina.pid
Démarrer Tomcat :
$TOMCAT_HOME/bin/catalina.sh start
Démarrer Tomcat
On utilise soit le script $TOMCATcatalina.sh, soit le script startup.sh.
netstat -a | grep "LISTEN"
tcp 0 0 localhost.localdom:7634 *:* LISTEN
tcp 0 0 localhost.locald:domain *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost.localdoma:ipp *:* LISTEN
tcp 0 0 localhost.lo:postgresql *:* LISTEN
tcp 0 0 localhost.localdom:smtp *:* LISTEN
tcp 0 0 *:http *:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
tcp6 0 0 ip6-localhost:smtp [::]:* LISTEN
tcp6 0 0 localhost.localdom:8005 [::]:* LISTEN
tcp6 0 0 [::]:8009 [::]:* LISTEN
tcp6 0 0 [::]:http-alt [::]:* LISTEN
References
- FAQ / Memory @ Tomcat wiki
<references/>