Tomcat e Rex · 5 min read · Feb 14, 2026

Installa Tomcat e distribuisci applicazioni web con Rex

Installa Tomcat e distribuisci applicazioni web con Rex

In questo tutorial ti mostrerò come gestire le tue installazioni di Tomcat e come distribuire Webapp in modo ripetibile con Rex. In questo tutorial utilizzerò Debian Squeeze, ma Rex è disponibile anche per altre distribuzioni.

Introduzione a Rex

Rex è uno strumento, scritto in Perl, per semplificare l’amministrazione e la distribuzione di molti server.

Dal sito web: Con (R)?ex puoi gestire tutte le tue macchine da un punto centrale attraverso l’intero processo di gestione della configurazione e distribuzione del software.

Il punto di partenza di un progetto Rex è il suo Rexfile. Rex analizzerà questo file ed eseguirà i compiti definiti sui tuoi server. Pensalo come un Makefile, ma è scritto in Perl.

Ogni Rexfile è diviso in compiti. Puoi definire un compito per ogni passo logico per installare e configurare i tuoi server.

Ottieni il software

Hai bisogno solo di Rex sulla tua workstation. Non è necessario alcun software aggiuntivo sui tuoi server. Hai solo bisogno di accesso ssh root ai tuoi server.

Puoi scaricare Rex da rexify.org/get/. I pacchetti sono disponibili per CentOS, Debian, Ubuntu, Fedora, Mageia e OpenSuSE. I sorgenti sono disponibili su CPAN.

Per Debian, aggiungi semplicemente il repository Rex al tuo directory sources.list.d.

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

Dopo di che, aggiungi la chiave GPG al keyring di apt.

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

E installa il software. Installeremo rex per lo strumento principale e rex-apache-deploy per il modulo di distribuzione.

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

Prepara il tuo Rexfile ed esegui il primo compito

Per prima cosa, crea una directory tomcat e cambia in essa.

mkdir tomcat; cd tomcat

Dopo di che, scarica i moduli di esempio Rex da github nella directory lib. Ci sono un modulo tomcat e apache che ci aiuteranno.

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

Ora crea il file Rexfile e aprilo con il tuo editor preferito. Se stai usando vim, puoi usare le seguenti righe per abilitare l’evidenziazione della sintassi.

:set ft=perl  
:syn on
# File: Rexfile
# per prima cosa abilita strict e warnings
use strict;
use warnings;
# poi includi tutti i moduli di esempio necessari
use ALLMODS;    # questo imposta il percorso di inclusione ai moduli di esempio rex
use apache;     # includi il modulo apache
use apache::module;
use tomcat;     # includi il modulo tomcat
use tomcat::user;
use tomcat::role;
# imposta utente e password per accedere ai tuoi server
user "root";
password "test";
# abilita l'autenticazione con password.
pass_auth;
# se vuoi usare l'autenticazione con chiave, usa il seguente
# e commenta la riga "pass_auth"
# public_key "/path/to/your/public.key";
# private_key "/path/to/your/private.key";
# definisci un gruppo di server chiamato "tomcat". 
# metti tutti i tuoi server che vuoi distribuire in quel gruppo.
group tomcats => "tc01", "tc02";
desc "Installa e configura 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();
   # assicurati che i servizi si avviino all'avvio del sistema
   service apache2 => "ensure", "started";
   service tomcat6 => "ensure", "started";
};

Ora salva il file, apri un terminale e cambia nella directory tomcat.

Per eseguire il compito creato sui tuoi server, chiamalo come mostrato nella riga successiva.

rex prepare

Se vuoi visualizzare i tuoi compiti definiti, puoi farlo con l’opzione -T.

rex -T

Configura Apache/modjk

Dopo l’installazione di apache e tomcat, devi configurare apache/modjk per reindirizzare le richieste a tomcat.

Per fare ciò, crea una directory chiamata files e salva i tuoi file di configurazione lì.

mkdir files
## File: files/worker.properties
## questo file è gestito da 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

Come puoi vedere qui, c’è una variabile speciale nel file. Rex ha un sistema di templating integrato. E con questa espressione otterrai l’ip del dispositivo di rete eth0.

## File: files/modjk.conf
## questo file è gestito da rex
##
JkWorkersFile /etc/apache2/worker.properties
JkLogFile /var/log/apache2/mod_jk.log
JkShmFile /var/log/apache2/jk.shm
JkMount /* tc
# Aggiungi il punto di montaggio jkstatus
JkMount /jkmanager/* jkstatus

    JkMount jkstatus

In scenari reali ci sarebbe anche un server.xml. Ma per questo tutorial dovrai solo modificare il file per abilitare il connettore AJP.

Ora apri il tuo Rexfile e aggiungi un secondo compito di configurazione.

desc "Configura Apache e Tomcat";
task "configure", group => "tomcats", sub {
   # rimuovi il vhost predefinito
   unlink "/etc/apache2/sites-enabled/000-default";
   # carica il file, ma analizza il file come un template
   file "/etc/apache2/worker.properties",
      content   => template("files/worker.properties"),
      owner     => "root",
      group     => "root",
      mode      => 640,
      on_change => sub { apache::restart(); };
   # carica i file di configurazione
   file "/etc/apache2/conf.d/modjk.conf",
      source    => "files/modjk.conf",
      owner     => "root",
      group     => "root",
      mode      => 640,
      on_change => sub { apache::restart(); };
   # modifica server.xml per consentire l'accesso ajp
   # in scenari reali usa un template per questo file
   my $content = cat "/etc/tomcat6/server.xml";
   $content =~ s/<\/Service>/\n<\/Service>/;
   file "/etc/tomcat6/server.xml",
      content   => $content,
      on_change => sub { tomcat::restart(); };
};

Ora puoi eseguire il compito di configurazione per configurare il tuo server.

rex configure

Distribuzione di un’applicazione

Bene, dopo aver distribuito e configurato il tuo server, devi caricare l’applicazione che il server dovrebbe servire.

C’è un modulo Rex per compiti di distribuzione semplici chiamato Rex::Apache::Deploy. L’hai già installato.

In questo howto distribuirai psi-probe. Puoi scaricarlo da code.google.com. Crea una cartella chiamata packages, estrai l’archivio zip e copia il file probe.war in quella directory.

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

Ora apri il tuo Rexfile e aggiungi le seguenti righe agli altri comandi di utilizzo.

# includi il supporto per la distribuzione per tomcat
use Rex::Apache::Deploy "Tomcat";

E crea un terzo compito chiamato deploy.

desc "Distribuisci l'applicazione";
task "deploy", group => "tomcats", sub {
   # imposta il percorso del contesto per la nostra applicazione tomcat
   context_path "/psiprobe";
   # distribuisci l'app. 
   deploy "packages/probe.war",
      username => "manager",
      password => "passw0rd",
      port     => 8080;
};

Mettere tutto insieme

Ora puoi eseguire tutti e 3 i compiti uno dopo l’altro e il risultato è un server pronto a servire il nostro contenuto. Infine, puoi definire un batch che esegue tutti i tuoi compiti, in modo da non dover scrivere così tanto.

Apri il tuo Rexfile e aggiungi la riga successiva.

desc "Esegui tutti i compiti prepare, configure e deploy";
batch all => "prepare", "configure", "deploy";

Puoi eseguire questo batch con l’opzione -b.

rex -b all

Ora, dopo che tutti i compiti sono stati eseguiti, puoi accedere all’applicazione appena distribuita sotto /psiprobe sul tuo server.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.