Tomcat Rex · 5 min read · Feb 14, 2026

Instalar Tomcat y Desplegar Aplicaciones Web con Rex

Instalar Tomcat y Desplegar Aplicaciones Web con Rex

En este tutorial te mostraré cómo gestionar tus instalaciones de Tomcat y cómo desplegar Webapps de manera repetible con Rex. En este tutorial usaré Debian Squeeze, pero Rex también está disponible para otras distribuciones.

Introducción a Rex

Rex es una herramienta, escrita en Perl, para facilitar la administración y el despliegue de muchos servidores.

Desde el sitio web: Con (R)?ex puedes gestionar todas tus máquinas desde un punto central a través del proceso completo de gestión de configuración y despliegue de software.

El punto de partida de un proyecto Rex es su Rexfile. Rex analizará este archivo y ejecutará las tareas definidas en tus servidores. Solo piénsalo como un Makefile, pero está escrito en Perl.

Cada Rexfile se divide en tareas. Puedes definir una tarea para cada paso lógico para instalar y configurar tus servidores.

Obtener el Software

Solo necesitas Rex en tu estación de trabajo. No se necesita software adicional en tus servidores. Solo necesitas acceso ssh root a tus servidores.

Puedes descargar Rex desde rexify.org/get/. Los paquetes están disponibles para CentOS, Debian, Ubuntu, Fedora, Mageia y OpenSuSE. Las fuentes están disponibles en CPAN.

Para Debian, solo agrega el repositorio de Rex a tu directorio sources.list.d.

echo 'deb http://rex.linux-files.org/debian/ squeeze rex' >> /etc/apt/sources.list

Después de eso, agrega la clave GPG al llavero de apt.

wget -O - http://rex.linux-files.org/DPKG-GPG-KEY-REXIFY-REPO | apt-key add -

Y instala el software. Instalaremos rex para la herramienta principal y rex-apache-deploy para el módulo de despliegue.

apt-get update && apt-get install rex rex-apache-deploy

Prepara tu Rexfile y ejecuta la primera tarea

Primero crea un directorio tomcat y cámbiate a él.

mkdir tomcat; cd tomcat

Después de eso, descarga los Módulos de Ejemplo de Rex desde github en el directorio lib. Hay un módulo de tomcat y apache que nos ayudarán.

git clone https://github.com/krimdomu/rex-example-modules.git lib

Ahora crea el archivo Rexfile y ábrelo con tu editor favorito. Si estás usando vim, puedes usar las siguientes líneas para habilitar la resaltación de sintaxis.

:set ft=perl  
:syn on
# Archivo: Rexfile
# primero habilita strict y warnings
use strict;
use warnings;
# luego incluye todos los módulos de ejemplo necesarios
use ALLMODS;    # esto establece la ruta de inclusión a los módulos de ejemplo de rex
use apache;     # incluye el módulo apache
use apache::module;
use tomcat;     # incluye el módulo tomcat
use tomcat::user;
use tomcat::role;
# establece el usuario y la contraseña para iniciar sesión en tus servidores
user "root";
password "test";
# habilita la autenticación por contraseña.
pass_auth;
# si deseas usar autenticación por clave, usa lo siguiente
# y comenta la línea "pass_auth"
# public_key "/ruta/a/tu/public.key";
# private_key "/ruta/a/tu/private.key";
# define un grupo de servidores llamado "tomcat". 
# coloca todos tus servidores que deseas desplegar en ese grupo.
group tomcats => "tc01", "tc02";
desc "Instalar y Configurar Apache y Tomcat";
task "prepare", group => "tomcats", sub {
   apache::setup();
   apache::module::setup({name => "jk"});
   tomcat::setup();
   tomcat::role::add_manager();
   tomcat::user::add_manager({
      username => "manager",
      password => "passw0rd",
   });
   apache::restart();
   tomcat::restart();
   # asegúrate de que los servicios se inicien al arrancar el sistema
   service apache2 => "ensure", "started";
   service tomcat6 => "ensure", "started";
};

Ahora guarda el archivo, abre una terminal y cámbiate al directorio tomcat.

Para ejecutar la tarea creada en tus servidores, simplemente llámala como se muestra en la siguiente línea.

rex prepare

Si deseas ver tus tareas definidas, puedes hacerlo con la opción -T.

rex -T

Configurar Apache/modjk

Después de la instalación de apache y tomcat, necesitas configurar apache/modjk para redirigir las solicitudes a tomcat.

Para hacer esto, crea un directorio llamado files y guarda tus archivos de configuración allí.

mkdir files
## Archivo: files/worker.properties
## este archivo es gestionado por rex
##
worker.list=tc,jkstatus
worker.tomcat.port=8009
worker.tomcat.host=<%+ $::Network->{"networkconfiguration"}->{"eth0"}->{"ip"} %>
worker.tomcat.type=ajp13
worker.tomcat.lbfactor=1
worker.tomcat.reference=worker.template
worker.tc.type=lb
worker.tc.balance_workers=tomcat
worker.tc.sticky_session=false
worker.jkstatus.type=status
worker.template.type=ajp13

Como puedes ver aquí, hay una variable especial en el archivo. Rex tiene un sistema de plantillas incorporado. Y con esta expresión obtendrás la ip del dispositivo de red eth0.

## Archivo: files/modjk.conf
## este archivo es gestionado por rex
##
JkWorkersFile /etc/apache2/worker.properties
JkLogFile /var/log/apache2/mod_jk.log
JkShmFile /var/log/apache2/jk.shm
JkMount /* tc
# Agrega el punto de montaje jkstatus
JkMount /jkmanager/* jkstatus

    JkMount jkstatus

En escenarios del mundo real también habría un server.xml. Pero para este tutorial solo vas a parchear el archivo para habilitar el conector AJP.

Ahora abre tu Rexfile y agrega una segunda tarea de configuración.

desc "Configurar Apache y Tomcat";
task "configure", group => "tomcats", sub {
   # elimina el vhost predeterminado
   unlink "/etc/apache2/sites-enabled/000-default";
   # sube el archivo, pero analiza el archivo como una plantilla
   file "/etc/apache2/worker.properties",
      content   => template("files/worker.properties"),
      owner     => "root",
      group     => "root",
      mode      => 640,
      on_change => sub { apache::restart(); };
   # sube los archivos de configuración
   file "/etc/apache2/conf.d/modjk.conf",
      source    => "files/modjk.conf",
      owner     => "root",
      group     => "root",
      mode      => 640,
      on_change => sub { apache::restart(); };
   # parchea server.xml para permitir acceso ajp
   # en el uso del mundo real, usa una plantilla para este archivo
   my $content = cat "/etc/tomcat6/server.xml";
   $content =~ s/<\/Service>/\n<\/Service>/;
   file "/etc/tomcat6/server.xml",
      content   => $content,
      on_change => sub { tomcat::restart(); };
};

Ahora puedes ejecutar la tarea de configuración para configurar tu servidor.

rex configure

Desplegando una Aplicación

Bien, después de haber desplegado y configurado tu servidor, necesitas subir la aplicación que el servidor debe servir.

Hay un módulo de Rex para tareas de despliegue simples llamado Rex::Apache::Deploy. Ya lo has instalado.

En este tutorial desplegarás psi-probe. Puedes descargarlo desde code.google.com. Crea una carpeta llamada packages, extrae el archivo zip y copia el archivo probe.war en ese directorio.

mkdir packages  
cd packages  
wget http://psi-probe.googlecode.com/files/probe-2.2.3.zip  
unzip probe-2.2.3.zip

Ahora abre tu Rexfile y agrega las siguientes líneas a los otros comandos de uso.

# incluye soporte de despliegue para tomcat
use Rex::Apache::Deploy "Tomcat";

Y crea una tercera tarea llamada deploy.

desc "Desplegar la aplicación";
task "deploy", group => "tomcats", sub {
   # establece la ruta del contexto para nuestra aplicación tomcat
   context_path "/psiprobe";
   # despliega la app. 
   deploy "packages/probe.war",
      username => "manager",
      password => "passw0rd",
      port     => 8080;
};

Juntándolo Todo

Ahora puedes ejecutar las 3 tareas una tras otra y el resultado es un servidor listo para servir nuestro contenido. Por último, puedes definir un batch que ejecute todas tus tareas, para que no necesites escribir tanto.

Abre tu Rexfile y agrega la siguiente línea al final.

desc "Ejecutar todas las tareas prepare, configure y deploy";
batch all => "prepare", "configure", "deploy";

Puedes ejecutar este batch con la opción -b.

rex -b all

Ahora, después de que todas las tareas se hayan ejecutado, puedes acceder a la aplicación recién desplegada en /psiprobe en tu servidor.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.