Tomcat Rex · 5 min read · Feb 14, 2026

Instalar Tomcat E Implantar Aplicações Web Com Rex

Instalar Tomcat E Implantar Aplicações Web Com Rex

Neste tutorial, eu vou mostrar como gerenciar suas instalações do Tomcat e como implantar Webapps de uma maneira repetível com Rex. Neste tutorial, eu vou usar Debian Squeeze, mas o Rex também está disponível para outras distribuições.

Introdução ao Rex

Rex é uma ferramenta, escrita em Perl, para facilitar a administração e implantação de muitos servidores.

Do site: Com (R)?ex você pode gerenciar todas as suas máquinas a partir de um ponto central através do processo completo de gerenciamento de configuração e implantação de software.

O ponto de partida de um projeto Rex é seu Rexfile. Rex irá analisar este arquivo e executar as tarefas definidas em seus servidores. Pense nisso como um Makefile, mas escrito em Perl.

Cada Rexfile é dividido em tarefas. Você pode definir uma tarefa para cada passo lógico para instalar e configurar seus servidores.

Obter o Software

Você só precisa do Rex em sua estação de trabalho. Nenhum software adicional é necessário em seus servidores. Você só precisa de acesso ssh root aos seus servidores.

Você pode baixar o Rex de rexify.org/get/. Pacotes estão disponíveis para CentOS, Debian, Ubuntu, Fedora, Mageia e OpenSuSE. As fontes estão disponíveis no CPAN.

Para Debian, basta adicionar o repositório Rex ao seu diretório sources.list.d.

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

Depois disso, adicione a chave GPG ao keyring do apt.

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

E instale o software. Vamos instalar o rex para a ferramenta principal e rex-apache-deploy para o módulo de implantação.

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

Prepare seu Rexfile e execute a primeira tarefa

Primeiro, crie um diretório tomcat e mude para ele.

mkdir tomcat; cd tomcat

Depois disso, faça checkout dos Módulos de Exemplo do Rex do github para o diretório lib. Há um módulo tomcat e apache que nos ajudará.

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

Agora crie o arquivo Rexfile e abra-o com seu editor favorito. Se você estiver usando vim, pode usar as seguintes linhas para habilitar a realce de sintaxe.

:set ft=perl  
:syn on
# Arquivo: Rexfile
# primeiro habilite strict e warnings
use strict;
use warnings;
# então inclua todos os módulos de exemplo necessários
use ALLMODS;    # isso define o caminho de inclusão para os módulos de exemplo do rex
use apache;     # incluir módulo apache
use apache::module;
use tomcat;     # incluir módulo tomcat
use tomcat::user;
use tomcat::role;
# defina usuário e senha para login em seus servidores
user "root";
password "test";
# habilite autenticação por senha.
pass_auth;
# se você quiser usar autenticação por chave, use o seguinte
# e comente a linha "pass_auth"
# public_key "/path/to/your/public.key";
# private_key "/path/to/your/private.key";
# defina um grupo de servidores chamado "tomcat". 
# coloque todos os seus servidores que você deseja implantar nesse grupo.
group tomcats => "tc01", "tc02";
desc "Instalar e Configurar Apache e 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();
   # certifique-se de que os serviços iniciem na inicialização do sistema
   service apache2 => "ensure", "started";
   service tomcat6 => "ensure", "started";
};

Agora salve o arquivo, abra um terminal e mude para o diretório tomcat.

Para executar a tarefa criada em seus servidores, basta chamá-la como mostrado na próxima linha.

rex prepare

Se você quiser visualizar suas tarefas definidas, pode fazer isso com a opção -T.

rex -T

Configurar Apache/modjk

Após a instalação do apache e tomcat, você precisa configurar apache/modjk para redirecionar as solicitações para o tomcat.

Para fazer isso, crie um diretório chamado files e salve seus arquivos de configuração lá.

mkdir files
## Arquivo: files/worker.properties
## este arquivo é gerenciado pelo 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 você pode ver aqui, há uma variável especial no arquivo. Rex tem um sistema de template embutido. E com essa expressão você obterá o ip do dispositivo de rede eth0.

## Arquivo: files/modjk.conf
## este arquivo é gerenciado pelo rex
##
JkWorkersFile /etc/apache2/worker.properties
JkLogFile /var/log/apache2/mod_jk.log
JkShmFile /var/log/apache2/jk.shm
JkMount /* tc
# Adicione o ponto de montagem jkstatus
JkMount /jkmanager/* jkstatus

    JkMount jkstatus

Em cenários do mundo real, haveria um server.xml também. Mas para este tutorial, você só vai corrigir o arquivo para habilitar o conector AJP.

Agora abra seu Rexfile e adicione uma segunda tarefa de configuração.

desc "Configurar Apache e Tomcat";
task "configure", group => "tomcats", sub {
   # remova o vhost padrão
   unlink "/etc/apache2/sites-enabled/000-default";
   # faça upload do arquivo, mas analise o arquivo como um template
   file "/etc/apache2/worker.properties",
      content   => template("files/worker.properties"),
      owner     => "root",
      group     => "root",
      mode      => 640,
      on_change => sub { apache::restart(); };
   # faça upload dos arquivos de configuração
   file "/etc/apache2/conf.d/modjk.conf",
      source    => "files/modjk.conf",
      owner     => "root",
      group     => "root",
      mode      => 640,
      on_change => sub { apache::restart(); };
   # corrija server.xml para permitir acesso ajp
   # no uso do mundo real, use um template para este arquivo
   my $content = cat "/etc/tomcat6/server.xml";
   $content =~ s/<\/Service>/\n<\/Service>/;
   file "/etc/tomcat6/server.xml",
      content   => $content,
      on_change => sub { tomcat::restart(); };
};

Agora você pode executar a tarefa de configuração para configurar seu servidor.

rex configure

Implantando uma Aplicação

Bem, depois de ter implantado e configurado seu servidor, você precisa fazer upload da aplicação que o servidor deve servir.

Há um módulo Rex para tarefas de implantação simples chamado Rex::Apache::Deploy. Você já o instalou.

Neste tutorial, você irá implantar o psi-probe. Você pode baixá-lo de code.google.com. Crie uma pasta chamada packages, extraia o arquivo zip e copie o arquivo probe.war para esse diretório.

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

Agora abra seu Rexfile e coloque as seguintes linhas nos outros comandos de uso.

# incluir suporte à implantação para tomcat
use Rex::Apache::Deploy "Tomcat";

E crie uma terceira tarefa chamada deploy.

desc "Implantar a aplicação";
task "deploy", group => "tomcats", sub {
   # defina o caminho do contexto para nossa aplicação tomcat
   context_path "/psiprobe";
   # implante o app. 
   deploy "packages/probe.war",
      username => "manager",
      password => "passw0rd",
      port     => 8080;
};

Juntando tudo

Agora você pode executar todas as 3 tarefas uma após a outra e o resultado é um servidor pronto para servir nosso conteúdo. Por fim, você pode definir um lote que executa todas as suas tarefas, para que você não precise escrever tanto.

Abra seu Rexfile e anexe a próxima linha a ele.

desc "Executar todas as tarefas prepare, configure e deploy";
batch all => "prepare", "configure", "deploy";

Você pode executar esse lote com a opção -b.

rex -b all

Agora, após todas as tarefas serem executadas, você pode acessar a aplicação recém implantada em /psiprobe em seu servidor.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.