Esto puede parecer una trivialidad, pero he visto a mucha gente no tener nada claro como tener en una misma máquina, varios servidores de aplicaciones Java ejecutando sobre diferentes versiones.
Para comenzar por cuestiones de seguridad lo más recomendable es que por cada servidor de aplicaciones que tengamos en ejecución, el propietario de la instalación sea un usuario diferente, este mismo usuario es el que ejecuta el servidor de aplicaciones.
En resumidas cuentas, para cada usuario podemos configurar su entorno de ejecución por defecto, de tal forma que no es necesario tocar nada en los servidores de aplicaciones para indicar que Java debe usar.
Pongamos el ejemplo de que queremos ejecutar Tomcat 8, con Java 8 y Tomcat 6 con Java 1.5.
Lo primero que haremos será descargar y descomprimir las versiones de Java 8 (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) y 1.5 (desde las versiones archivadas http://www.oracle.com/technetwork/java/javase/archive-139210.html).
Yo prefiero descargar los *.tgz o para las versiones antiguas .bin (nada rpm) para tener perfectamente controlado donde instalar el software.
Vamos a descomprimir los Javas en /opt:
[root@nostromo opt]# pwd
/opt
[root@nostromo opt]# ls -lrt
total 199332
-rw-r--r-- 1 root root 44191305 abr 17 12:45 jdk-1_5_0_22-linux-amd64.bin
-rw-r--r-- 1 root root 159910666 abr 17 12:49 jdk-8u5-linux-i586.tar.gz
[root@nostromo opt]# tar xfz jdk-8u5-linux-i586.tar.gz
...
[root@nostromo opt]# chmod +x jdk-1_5_0_22-linux-amd64.bin
...
[root@nostromo opt]# ls -l
total 199336
drwxr-xr-x 9 root root 4096 oct 9 2009 jdk1.5.0_22
-rwxr-xr-x 1 root root 44191305 abr 17 12:45 jdk-1_5_0_22-linux-amd64.bin
drwxr-xr-x 8 10 143 4096 mar 18 09:03 jdk1.8.0_05
-rw-r--r-- 1 root root 159910666 abr 17 12:49 jdk-8u5-linux-i586.tar.gz
Creamos los usuarios de sistema operativo (llamada más simple imposible):
[root@nostromo ~]# adduser tomcat8
[root@nostromo ~]# adduser tomcat6
Descargamos Tomcat 8 (de http://tomcat.apache.org/download-80.cgi) y Tomcat 6 (de http://tomcat.apache.org/download-60.cgi), los dejamos en /opt. Descomprimimos y damos propiedad a los usuarios creados:
[root@nostromo opt]# ls -l
total 215020
-rw-r--r-- 1 root root 7065481 abr 17 12:56 apache-tomcat-6.0.39.tar.gz
-rw-r--r-- 1 root root 8993812 abr 17 12:56 apache-tomcat-8.0.5.tar.gz
drwxr-xr-x 9 root root 4096 oct 9 2009 jdk1.5.0_22
-rwxr-xr-x 1 root root 44191305 abr 17 12:45 jdk-1_5_0_22-linux-amd64.bin
drwxr-xr-x 8 10 143 4096 mar 18 09:03 jdk1.8.0_05
-rw-r--r-- 1 root root 159910666 abr 17 12:49 jdk-8u5-linux-i586.tar.gz
[root@nostromo opt]# tar xfz apache-tomcat-6.0.39.tar.gz
[root@nostromo opt]# tar xfz apache-tomcat-8.0.5.tar.gz
[root@nostromo opt]# ls -l
total 215028
drwxr-xr-x 9 root root 4096 abr 17 12:59 apache-tomcat-6.0.39
-rw-r--r-- 1 root root 7065481 abr 17 12:56 apache-tomcat-6.0.39.tar.gz
drwxr-xr-x 9 root root 4096 abr 17 12:59 apache-tomcat-8.0.5
-rw-r--r-- 1 root root 8993812 abr 17 12:56 apache-tomcat-8.0.5.tar.gz
drwxr-xr-x 9 root root 4096 oct 9 2009 jdk1.5.0_22
-rwxr-xr-x 1 root root 44191305 abr 17 12:45 jdk-1_5_0_22-linux-amd64.bin
drwxr-xr-x 8 10 143 4096 mar 18 09:03 jdk1.8.0_05
-rw-r--r-- 1 root root 159910666 abr 17 12:49 jdk-8u5-linux-i586.tar.gz
[root@nostromo opt]# tar xfz apache-tomcat-6.0.39.tar.gz
[root@nostromo opt]# tar xfz apache-tomcat-8.0.5.tar.gz
[root@nostromo opt]# ls -l
total 215028
drwxr-xr-x 9 tomcat6 tomcat6 4096 abr 17 12:59 apache-tomcat-6.0.39
-rw-r--r-- 1 root root 7065481 abr 17 12:56 apache-tomcat-6.0.39.tar.gz
drwxr-xr-x 9 tomcat8 tomcat8 4096 abr 17 12:59 apache-tomcat-8.0.5
-rw-r--r-- 1 root root 8993812 abr 17 12:56 apache-tomcat-8.0.5.tar.gz
drwxr-xr-x 9 root root 4096 oct 9 2009 jdk1.5.0_22
-rwxr-xr-x 1 root root 44191305 abr 17 12:45 jdk-1_5_0_22-linux-amd64.bin
drwxr-xr-x 8 10 143 4096 mar 18 09:03 jdk1.8.0_05
-rw-r--r-- 1 root root 159910666 abr 17 12:49 jdk-8u5-linux-i586.tar.gz
En esta situación tenemos los usuarios creados, javas y tomcats instalados además de modificados los permisos.
Vamos a configurar el usuario tomcat6, para que coja por defecto el Java 1.5:
[root@nostromo opt]# su - tomcat6
[tomcat6@nostromo ~]$ ls /opt/jdk1.5.0_22/
bin COPYRIGHT demo include jre lib LICENSE man README.html sample src.zip THIRDPARTYLICENSEREADME.txt
[tomcat6@nostromo ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
Editamos el .bash_profile (en RedHat/CentOS, en un Ubuntu encontraremos un .profile) y modificamos para que quere algo como:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export JAVA_HOME=/opt/jdk1.5.0_22
PATH=$JAVA_HOME/bi:$PATH:$HOME/.local/bin:$HOME/bin
export PATH
Lo que se ha hecho es definir la variable JAVA_HOME para que apunte a la instalación Java a utilizar, esta variable recomendable tenerla definida para muchos servidores de aplicaciones, facilita mucho la configuración. Además se ha añadido en el PATH el directorio bin de la instalación de Java.
Una vez modificado el .bash_profile, salimos de la sesión y volvemos a entrar. Podemos verificar que la versión que utiliza el usuario es la requerida y además ejecutamos Tomcat 6 sin problemas con el Java adecuado, luego lo paramos para que podemos verificar la instalación de Tomcat 8 y que no haya un conflicto de puertos:
[tomcat6@nostromo ~]$ vi .bash_profile
[tomcat6@nostromo ~]$ exit
logout
[root@nostromo opt]# su - tomcat6
Último inicio de sesión:jue abr 17 13:04:26 CEST 2014en pts/1
[tomcat6@nostromo ~]$ java -version
java version "1.5.0_22"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_22-b03, mixed mode)
[tomcat6@nostromo ~]$ /opt/apache-tomcat-6.0.39/bin/startup.sh
Using CATALINA_BASE: /opt/apache-tomcat-6.0.39
Using CATALINA_HOME: /opt/apache-tomcat-6.0.39
Using CATALINA_TMPDIR: /opt/apache-tomcat-6.0.39/temp
Using JRE_HOME: /opt/jdk1.5.0_22
Using CLASSPATH: /opt/apache-tomcat-6.0.39/bin/bootstrap.jar
[tomcat6@nostromo ~]$ ps -fe | grep java
tomcat6 16658 1 68 13:12 pts/1 00:00:06 /opt/jdk1.5.0_22/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-6.0.39/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/apache-tomcat-6.0.39/endorsed -classpath /opt/apache-tomcat-6.0.39/bin/bootstrap.jar -Dcatalina.base=/opt/apache-tomcat-6.0.39 -Dcatalina.home=/opt/apache-tomcat-6.0.39 -Djava.io.tmpdir=/opt/apache-tomcat-6.0.39/temp org.apache.catalina.startup.Bootstrap start
tomcat6 16681 16593 0 13:12 pts/1 00:00:00 grep --color=auto java
[tomcat6@nostromo ~]$ /opt/apache-tomcat-6.0.39/bin/shutdown.sh
Using CATALINA_BASE: /opt/apache-tomcat-6.0.39
Using CATALINA_HOME: /opt/apache-tomcat-6.0.39
Using CATALINA_TMPDIR: /opt/apache-tomcat-6.0.39/temp
Using JRE_HOME: /opt/jdk1.5.0_22
Using CLASSPATH: /opt/apache-tomcat-6.0.39/bin/bootstrap.jar
[tomcat6@nostromo ~]$
[tomcat6@nostromo ~]$ ps -fe | grep java
tomcat6 17029 16933 0 13:20 pts/1 00:00:00 grep --color=auto java
Se puede ver que el propietario del proceso es el adecuado.
Para el usuario tomcat8, los pasos son exactamente iguales, cambiando lógicamente la ubicación de Java y las llamadas al arranque de Tomcat:
[tomcat6@nostromo ~]$ exit
logout
[root@nostromo opt]# su - tomcat8
[tomcat8@nostromo ~]$ vi .bash_profile
[tomcat8@nostromo ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export JAVA_HOME=/opt/jdk1.8.0_05
PATH=$JAVA_HOME/bin:$PATH:$HOME/.local/bin:$HOME/bin
export PATH
[tomcat8@nostromo ~]$ exit
logout
[root@nostromo opt]# su - tomcat8
Último inicio de sesión:jue abr 17 13:14:45 CEST 2014en pts/1
[tomcat8@nostromo ~]$ java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)
[tomcat8@nostromo ~]$ /opt/apache-tomcat-8.0.5/bin/startup.sh
Using CATALINA_BASE: /opt/apache-tomcat-8.0.5
Using CATALINA_HOME: /opt/apache-tomcat-8.0.5
Using CATALINA_TMPDIR: /opt/apache-tomcat-8.0.5/temp
Using JRE_HOME: /opt/jdk1.8.0_05
Using CLASSPATH: /opt/apache-tomcat-8.0.5/bin/bootstrap.jar:/opt/apache-tomcat-8.0.5/bin/tomcat-juli.jar
Tomcat started.
[tomcat8@nostromo ~]$ ps -fe | grep java
tomcat8 17087 1 99 13:21 pts/1 00:00:04 /opt/jdk1.8.0_05/bin/java -Djava.util.logging.config.file=/opt/apache-tomcat-8.0.5/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/apache-tomcat-8.0.5/endorsed -classpath /opt/apache-tomcat-8.0.5/bin/bootstrap.jar:/opt/apache-tomcat-8.0.5/bin/tomcat-juli.jar -Dcatalina.base=/opt/apache-tomcat-8.0.5 -Dcatalina.home=/opt/apache-tomcat-8.0.5 -Djava.io.tmpdir=/opt/apache-tomcat-8.0.5/temp org.apache.catalina.startup.Bootstrap start
tomcat8 17117 17039 0 13:21 pts/1 00:00:00 grep --color=auto java
[tomcat8@nostromo ~]$ /opt/apache-tomcat-8.0.5/bin/shutdown.sh
Using CATALINA_BASE: /opt/apache-tomcat-8.0.5
Using CATALINA_HOME: /opt/apache-tomcat-8.0.5
Using CATALINA_TMPDIR: /opt/apache-tomcat-8.0.5/temp
Using JRE_HOME: /opt/jdk1.8.0_05
Using CLASSPATH: /opt/apache-tomcat-8.0.5/bin/bootstrap.jar:/opt/apache-tomcat-8.0.5/bin/tomcat-juli.jar
Hemos estado trabajando con Tomcat como servidor de aplicaciones pero es aplicable a cualquier servidor de aplicaciones, JBoss, Weblogic, etc… incluso a cualquier software Java en linea de comandos.
Espero que os sirva de ayuda…
Gracias por la ayuda:
Hola estoy tratando ejecutar el servicio según entiendo debo de realizar estos pasos:
Para ejecutar tomcat 6
1. Debo entrar como usuario tomcat6
2. luego ejecutar /opt/apache-tomcat-8.0.5/bin/startup.sh
3. Pero cuando me dirijo al navegador y coloco la dirección 192.168.1.4:8080 no consigo conectarme con apachetomcat
Por favor indícame si estoy haciendo algo mal.
Hola entiendo que al menos el puerto 8080 responde, si es así lo que entiendo que te ocurre es que no tienes un usuario para acceder al manager.
Te paso un link a la documentación para que lo crees.
https://tomcat.apache.org/tomcat-8.0-doc/manager-howto.html#Configuring_Manager_Application_Access
Un saludo…