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.listDopo 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-deployPrepara il tuo Rexfile ed esegui il primo compito
Per prima cosa, crea una directory tomcat e cambia in essa.
mkdir tomcat; cd tomcatDopo 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 libOra 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 prepareSe vuoi visualizzare i tuoi compiti definiti, puoi farlo con l’opzione -T.
rex -TConfigura 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=ajp13Come 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 configureDistribuzione 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.zipOra 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 allOra, dopo che tutti i compiti sono stati eseguiti, puoi accedere all’applicazione appena distribuita sotto /psiprobe sul tuo server.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.