Richard Bruno
navigation
Home
admin









Tomcat
October 18th, 2016

Table des matières


- Démarrage
- Compilation pour Solaris (2007)
- Options de démarrage
- Monitoring (05/2011)
- Installation sur Mac OS X
- Installation sur Debian via apt-get
- Installation sur Debian via téléchargement du zip ou du tar gz (05/2011)
- Installation sur Centos via téléchargement du zip ou du tar gz (08/2016)
- Messages d'erreur (07/2011)
- Déploiement d'une application et redirection AJP


Démarrage


Pour éviter des problèmes de cache, lors de la relance du tomcat
il peut être nécessaire de supprimer le répertoire tomcat/work/Catalina

Compilation pour Solaris (2007)



regarder BUILDING.txt de tomcat

modifier path pour aller ds repertoire jakarta-ant/bin
pour java xml pack :


setenv JAVA_XML_PACK_HOME /export/lucke
setenv JAXM_HOME $JAVA_XML_PACK_HOME/java_xml_pack-summer-02_01/jaxm-1.1_01
setenv JAXP_HOME $JAVA_XML_PACK_HOME/java_xml_pack-summer-02_01/jaxp-1.2_01
setenv JAXR_HOME $JAVA_XML_PACK_HOME/java_xml_pack-summer-02_01/jaxr-1.0_02
setenv JAXRPC_HOME $JAVA_XML_PACK_HOME/java_xml_pack-summer-02_01/jaxrpc-1.0_01



Liaison Mysql (conf jdbc mysql) :


ds conf/Catalina/localhost/


jar mysql :
common/lib/mysql-connector-java-5.0.8-bin.jar





Installation sur Mac OS X



dezipper apache-tomcat-5.5.27.zip dans /export
chmod 755 /export/apache-tomcat-5.5.27/bin
rajouter au début de startup.sh et de catalina.sh :
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home
export CATALINA_HOME=/export/apache-tomcat-5.5.27

et lancer startup.sh

de l'aide http://developer.apple.com/internet/java/tomcat1.html

Installation sur Debian via apt-get



>apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps

Modifier le fichier tomcat-users.xml + ses droits :


cat tomcat-users.xml
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>

<role rolename="admin"/>

<role rolename="tomcat"/>

<role rolename="manager"/>

<role rolename="role1"/>

<user username="admin" password="monpass" roles="tomcat,admin,manager"/>

<user username="tomcat" password="tomcat" roles="tomcat"/>

<user username="role1" password="tomcat" roles="role1"/>

<user username="both" password="tomcat" roles="tomcat,role1"/>

</tomcat-users>



Note 1 : le webapps est /var/lib/tomcat/webapps
Note 2 : l'accès à l'interface se fait via l'adresse http://machine.domaine:8180
Note 3 : voir également "tomcat" de la section privée

Installation sur Debian via téléchargement du zip ou du tar gz (05/2011)


Installation de jdk
Installation de apache-tomcat-6.0.29
- récupération du fichier KEYS

gpg --import KEYS


- récupération du fichier .asc

gpg --verify apache-tomcat-6.0.29.asc apache-tomcat-6.0.29.tar.gz
gpg: Signature faite le [...]
gpg: Bonne signature de [...]
gpg: ATTENTION: Cette clé n'est pas certifiée avec une signature de confiance !
gpg: Rien ne dit que la signature appartient à son propriétaire.
Empreinte de clé principale: [...]


- modifs ds conf de tomcat-users.xml et de server.xml
- modifs ds bin de catalina.sh
- creation de l'utilisateur tomcat
- droits de l'arbo tomcat à l'utilisateur tomcat
Lancement

Installation sur Centos via téléchargement du zip ou du tar gz (08/2016)



modifs ds conf de tomcat-users.xml
Ne pas utiliser les comptes par défaut
Rajouter le role si on veut utiliser l'interface Web d'admin
modifs ds bin de catalina.sh : JAVA_HOME, JRE_HOME
création de l'utilisateur tomcat
droits de l'arbo tomcat à l'utilisateur tomcat
Création du script de lancement :

#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.7.0_60
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/share/apache-tomcat-8.0.8

case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0


Source : http://www.davidghedini.com/pg/entry/install_tomcat_8_on_centos

chkconfig --add tomcat8
chkconfig --level 234 tomcat8 on
chkconfig --list tomcat8
service tomcat8 start
Autoriser l'accès à l'interface d'admin :
création du fichier conf/Catalina/localhost/manager.xml :

<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>


Note that the allow attribute of the Valve element is a regular expression that matches the IP address of the connecting host. Other Valve classes cater for other rules (e.g. RemoteHostValve for matching host names).
Source : http://stackoverflow.com/questions/36703856/access-tomcat-manager-app-from-different-host



Options de démarrage relatives à la mémoire (2010)


http://www.developpez.net/forums/d799005/java/serveurs-conteneurs-java-ee/jboss/permgen-space-outofmemory/
permGen est une partie de la JVM dans laquelle les classes générées par des mécanismes de déploiement à chaud y sont stockés, lorsque elle est saturée l'erreur permgen space outOfMemory est généré.
20 Mo sont utilisés par le CAS. Par défaut, la taille est de 64Mo => je n'alloue rien de plus
Cependant, pour aller plus vite, je les alloue dès le lancement :
-XX:PermSize=64m -XX:MaxPermSize=64m

dans catalina.sh :
CATALINA_OPTS='-server -Xms128m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=64m'

---------------
Note d'Emeric :
-server (la détection dépend des caractéristiques physiques de la machine, cpu et mémoire ; forcer le paramétrage évite des surprises d'être en -client ; -server est un peu plus lent au démarrage et réserve la mémoire dont il aura besoin).
-Xms -Xmx (mémoire d'exécution initiale et max)

Plus d'infos :
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

Tu peux tester la "catégorie" détectée par défaut de la machine (Client or Server VM) avec : java -version

Monitoring (2010)


- L'utilitaire jmap est pratique pour jeter un coup d'oeil sur l'usage mémoire :

jmap -heap <pid-java>
ps -eo pmem,pid,command | sort -r



- Compter les threads :

ps -efL|grep java|wc -l




Messages d'erreur (07/2011)


Apache-tomcat-6.0.32
Lors de l'arrêt :

GRAVE: La suspension du gestionnaire de protocole a échouée
java.net.ConnectException: Connection timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:218)
at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:492)
at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:288)
at org.apache.jk.server.JkMain.pause(JkMain.java:726)
at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:153)
at org.apache.catalina.connector.Connector.pause(Connector.java:1037)
at org.apache.catalina.core.StandardService.stop(StandardService.java:578)
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:788)
at org.apache.catalina.startup.Catalina.stop(Catalina.java:662)
at org.apache.catalina.startup.Catalina.start(Catalina.java:629)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
7 juil. 2011 18:51:26 org.apache.catalina.core.StandardService stop
INFO: Arrêt du service Catalina


Surement du à un problème de config réseau :
$HOSTNAME est différent du nom dns
Source : http://powerntt.iteye.com/blog/788546



Déploiement d'une application et redirection AJP



Objectif : déployer une application sans écraser les pages d'administration tomcat (accès au tomcat manager) et utiliser une redirection AJP pour accéder à cette application.

mots clés : redirection AJP, service, context path

Déploiement de l'appli

je déploie une application nommée plami :

cp plami.war /usr/local/apache-tomcat-6.0.37/webapps



Je relance le serveur tomcat. L'application a été déployée automatique dans webapps/plami.

Note : j'ai ensuite désactivé cette option pour plus de sécurité.

more conf/server.xml
[...]
<!--
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
-->
<Host name="localhost" appBase="webapps"
unpackWARs="false" autoDeploy="false"
xmlValidation="false" xmlNamespaceAware="false">
[...]



L'appli est maintenant accessible à l'adresse http://mon-serveur:8080/plami
Je voudrais qu'elle soit accessible sans le "/plami". Cependant je ne veux pas perdre le ROOT (i.e. les pages d'administration tomcat). Je vais donc créer un nouveau service.

Création d'un service

<Service name="Catalina8081">

<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000" />

<Connector port="8009" protocol="AJP\1.3" redirectPort="8081" />


<Engine name="Catalina8081" defaultHost="localhost">

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>

<Host name="localhost" appBase="webapps"
unpackWARs="false" autoDeploy="false"
xmlValidation="false" xmlNamespaceAware="false">

<Context path="" docBase="plami"/>

</Host>
</Engine>
</Service>



A noter, le connecteur AJP à l'écoute sur le port 8009. Toutes les entrées seront redirigées vers le port 8081.
Source : http://tomcat.apache.org/tomcat-5.5-doc/config/context.html

L'appli est maintenant accessible aux adresses
http://mon-serveur:8080/plami
http://mon-serveur:8081

Redirection AJP

On configure maintenant le apache pour qu'un virtuahost redirige les requêtes vers le port 8081 du tomcat.
(qques infos ici aussi : http://perso.univ-lemans.fr/~brichard/secu/?doc=Cas#ajp )

cat /etc/apache2/sites-enabled/plami
[...]
ServerName plami
[...]
ProxyPass / ajp://localhost:8009/
[...]



L'appli est maintenant accessible aux adresses
http://mon-serveur:8080/plami
http://mon-serveur:8081
http://plami






Dernières modifs
VNC (November 22nd, 2020)
Editeurs (October 20th, 2016)
Awk (October 18th, 2016)
Claws Mail (October 18th, 2016)
Cups (October 18th, 2016)
Gimp (October 18th, 2016)
Git (October 18th, 2016)

Contact
Pour m'envoyer un mail,
Pour me laisser un commentaire :
richard.brunooo
chez
gmail.com


powered by kure, modified by Bruno