Ejemplo para instalar JDK 7u25 y Tomcat 7.0.41, 64bit.
- Descargar el JDK desde http://www.oracle.com/technetwork/es/java/javase/downloads/index.html o directamente http://www.quintoblog.com/downloads/jdk-7u25-linux-x64.tar.gz
- Desde /usr/local (por ejemplo): tar xvzf jdk-7u25-linux-x64.tar.gz
- echo «export JAVA_HOME=/usr/local/jdk1.7.0_25» >> /etc/profile
- echo «export PATH=\$JAVA_HOME/bin:\$PATH» >> /etc/profile
- Descargar Tomcat desde http://tomcat.apache.org/download-70.cgi (el core, en formato tar.gz): http://ftp.cixug.es/apache/tomcat/tomcat-7/v7.0.41/bin/apache-tomcat-7.0.41.tar.gz. O bien: http://www.quintoblog.com/downloads/apache-tomcat-7.0.41.tar.gz
- Desde /usr/local: tar xvzf apache-tomcat-7.0.41.tar.gz
- echo «export CATALINA_HOME=/usr/local/apache-tomcat-7.0.41» >> /etc/profile
- . /etc/profile
- cd $CATALINA_HOME/bin
- tar xvfz commons-daemon-native.tar.gz
- cd commons-daemon-1.0.15-native-src/unix
- ./configure && make && cp jsvc ../.. && cd ../..
- useradd tomcat
- chown -R tomcat $CATALINA_HOME
- Añadir las siguientes líneas a la sección «tomcat-users» del fichero $CATALINA_HOME/conf/tomcat-users.xml
[bash]<role rolename=»manager-gui»/>
<user username=»admin» password=»mypassword» roles=»manager-gui,admin-gui,admin-script,manager-status,manager-script,manager-jmx»/>
[/bash]
Script de arranque/parada /etc/init.d/tomcat (ajustar versiones)
[bash]#!/bin/bash
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Tomcat
# Description: Enable service provided by daemon.
### END INIT INFO
export CATALINA_HOME=/usr/local/apache-tomcat-7.0.41
export JAVA_HOME=/usr/local/jdk1.7.0_25
export TOMCAT_USER=tomcat
PIDFILE=$CATALINA_HOME/logs/catalina-daemon.pid
. /lib/lsb/init-functions
_start(){
log_daemon_msg «Starting tomcat server» «tomcat7»
$CATALINA_HOME/bin/daemon.sh start
if [ -f $PIDFILE ]; then
log_end_msg 0
else
log_end_msg 1
fi
}
_stop(){
if [ ! -f $PIDFILE ]; then echo «Warning: tomcat is not running. Trying to stop anyway»; fi
log_daemon_msg «Stopping tomcat server» «tomcat7»
if $CATALINA_HOME/bin/daemon.sh stop; then
log_end_msg 0
else
log_end_msg 1
fi
}
case $1 in
start)
_start
;;
stop)
_stop
;;
status)
if [ -f $PIDFILE ]; then echo «Tomcat is running with PID «`cat $PIDFILE`; else echo «Tomcat is not running»; fi
;;
restart)
log_daemon_msg «Restarting tomcat server» «tomcat7»
echo
_stop
_start
;;
*)
log_success_msg «Usage: /etc/init.d/tomcat {start|stop|restart|status}»
exit 1
;;
esac[/bash]
- Una vez arrancado, ya podemos entrar en localhost:8080, y en Manager App, metiendo el password que hemos definido en el xml anterior
Vamos a ver cómo crear un virtualhost nuevo, y desplegar un war en el context root de dicho virtualhost. Recomiendo encarecidamente desplegar un war en el context root para evitar problemas. Al menos para mi fue la solución para desplegar un war con jsf que tenía un commandlink que no funcionaba, y la solución fue esta, ponerlo en el context root para no tener que usar las reglas de re-escritura de apache:
- Crear un virtualhost de Tomcat:
Dentro del tag «Engine» del archivo $CATALINA_HOME/conf/server.xml:
[bash]<Host name=»myvirtualhost.example.com» appBase=»myApp» />[/bash]
El host myvirtualhost.example.com debe resolverse ya sea por dns o por /etc/hosts.
- (Re)arrancamos Tomcat con /etc/init.d/tomcat restart. Tomcat habrá creado el directorio $CATALINA_HOME/myApp vacío. Aquí es donde irá nuestra aplicación «myApp»
- Copiamos el war de nuestra aplicación al directorio anterior, pero debemos renombrar el war a ROOT.war, para que Tomcat despliegue el war en el context root del virtualhost. Una alternativa es crear el contexto correspondiente en server.xml:
[bash]
[/bash]
pero bueno, creo que es mejor lo otro.
[bash]cp /tmp/myApp.war $CATALINA_HOME/myApp/ROOT.war[/bash]
- En unos segundos, Tomcat habrá descomprimido el war y creado el directorio ROOT dentro de myApp. Se puede seguir una traza de lo que está haciendo Tomcat:
[bash] tail -f $CATALINA_HOME/logs/catalina-daemon.out[/bash]
NOTA: si se pisa el ROOT.war con otro que tengamos, Tomcat vuelve a desplegar ese war modificado, borrando y recreando el directorio ROOT
- Si todo ha ido bien, desde nuestro navegador podremos acceder a la aplicación: http://myvirtualhost.example.com:8080
- Y ahora, configuramos Apache para redirigir las peticiones por el puerto 80:
[bash]
<VirtualHost *:80>
ServerName myvirtualhost.example.com
ProxyPass / http://myvirtualhost.example.com:8080/
ProxyPassReverse / http://myvirtualhost.example.com:8080/
CustomLog /var/log/apache2/myvirtualhost-access.log combined
ErrorLog /var/log/apache2/myvirtualhost-error.log
</VirtualHost>[/bash]
Creo que es buena práctica también aumentar la memoria de tomcat.
vi bin/daemon.sh JAVA_OPTS="-Duser.timezone=Europe/Madrid -Xmx1024m -XX:MaxPermSize=512m"
Enlaces de interés:
http://tomcat.apache.org/tomcat-7.0-doc/virtual-hosting-howto.html
http://www.ntu.edu.sg/home/ehchua/programming/howto/Tomcat_More.html
http://tomcat.apache.org/tomcat-6.0-doc/deployer-howto.html