Apache Tomcat

Apache Tomcat è un "contenitore" web che consente di servire Java Servlets e applicazioni web JSP (Java Server Pages).

Il pacchetto Tomcat 6.0 supporta due differenti modalità di esecuzione di Tomcat. È possibile installarlo come un'unica istanza globale per tutto il sistema che verrà lanciata all'avvio del sistema e verrà eseguita come l'utente senza privilegi "tomcat6". Ma è anche possibile usare istanze private che verranno eseguite con i diritti del proprio utente e che è possibile avviare e fermare autonomamente. Questa modalità è molto utile durante lo sviluppo, dove molteplici utenti necessitano di eseguire test su un'istanza privata di Tomcat.

Installazione globale

Per installare il server Tomcat, digitare al prompt quanto segue:

sudo apt-get install tomcat6

In questo modo verrà installato il server Tomcat con un'applicazione web predefinita che visualizza una semplice pagina "It works".

Configurazione

I file di configurazione di Tomcat possono essere trovati in /etc/tomcat6. In questa sezione verranno spiegate solo alcune modifiche, per maggiori informazioni, consultare la documentazione di Tomcat 6.0.

Modificare la porta predefinita

Tomcat 6.0 esegue un connettore HTTP sulla porta 8080 e un connettore AJP sulla porta 8009; potrebbe essere utile modificare queste porte per evitare conflitti con altri server all'interno del sistema. Per fare questo, basta modificare le seguenti righe nel file /etc/tomcat6/server.xml:

<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
...
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Cambiare la JVM usata

Tomcat viene eseguito preferibilmente con OpenJDK-6, quindi con la JVM di Sun e infine con altre JVM. Se sono installate diverse JVM, è possibile impostare quale usare modificando la variabile JAVA_HOME nel file /etc/default/tomcat6:

JAVA_HOME=/usr/lib/jvm/java-6-sun

Dichiarare utenti e ruoli

Nomi utente, password e ruoli (gruppi) possono essere definiti in un contenitore Servlet. Con Tomcat 6.0 questo è fatto nel file /etc/tomcat6/tomcat-users.xml:

<role rolename="admin"/>
<user username="tomcat" password="s3cret" roles="admin"/>

Usare le applicazioni web standard di Tomcat

Tomcat dispone di applicazioni web che è possibile installare per documentarsi, per l'amministrazione o solo per dimostrazione.

Documentazione di Tomcat

Il pacchetto tomcat6-docs contiene la documentazione di Tomcat 6.0 sotto forma di applicazione web a cui è possibile accedere all'indirizzo "http://IL_PROPRIO_SERVER:8080/docs". È possibile installare il pacchetto attraverso il seguente comando:

sudo apt-get install tomcat6-docs

Applicazioni web amministrative di Tomcat

Il pacchetto tomcat6-admin contiene due applicazioni web che possono essere usate per amministrare il server Tomcat attraverso un'interfaccia web. È possibile installarle attraverso il seguente comando:

sudo apt-get install tomcat6-admin

La prima applicazione è il cosiddetto manager, a cui è possibile accedere dall'indirizzo "http://IL_PROPRIO_SERVER:8080/manager/html". È principalmente usata per ottenere informazioni sul server e riavviare le applicazioni web.

[Nota]

L'accesso al manager è protetto: è necessario definire un utente con il ruolo di "manager" nel file /etc/tomcat6/tomcat-users.xml prima di potervi accedere:

La seconda applicazione è l'host-manager a cui è possibile accedere attraverso l'indirizzo "http://IL_PROPRIO_SERVER:8080/host-manager/html". È possibile usarla per creare host virtuali dinamicamente.

[Nota]

Anche l'accesso all'applicazione host-manager è protetto: è necessario definire un utente con il ruolo di "admin" nel file /etc/tomcat6/tomcat-users.xml prima di potervi accedere.

Per motivi di sicurezza, l'utente tomcat6 non può scrivere nella directory /etc/tomcat6 e alcune di queste applicazioni di amministrazione (produzione delle applicazioni, creazione di host virtuali) necessitano di accesso in scrittura in tale directory. Per poter usare queste caratteristiche, eseguire i seguenti comandi per dare agli utenti del gruppo tomcat6 i permessi necessari:

sudo chgrp -R tomcat6 /etc/tomcat6
sudo chmod -R g+w /etc/tomcat6 

Applicazioni web di esempio

Il pacchetto tomcat6-examples contiene due applicazioni web che possono essere usate per verificare o dimostrare le Servlet o le caratteristiche di JSP e sono accessibile dall'indirizzo "http://IL_PROPRIO_SERVER:8080/examples". Per installarle, usare il seguente comando:

sudo apt-get install tomcat6-examples

Usare istanze private

Tomcat è spesso usato in ambienti di sviluppo e di test dove usare una singola istanza all'interno del sistema non risulta molto utile ai molteplici utenti che sfruttano il sistema. I pacchetti di Tomcat 6.0 sono dotati di strumenti che facilitano la creazione di istanze dedicate a ogni singolo utente, consentendo, all'interno del sistema, di eseguire (senza i privilegi di root) istanze private e separate usando però sempre le librerie di sistema.

[Nota]

È possibile eseguire le istanze globali e private in parallelo, basta solo che non usino le stesse porte TCP.

Installare il supporto alle istanze private

È possibile installare tutto il necessario per eseguire istanze private attraverso il seguente comando:

sudo apt-get install tomcat6-user

Creare un'istanza privata

È possibile creare un'istanza privata attraverso il seguente comando:

tomcat6-instance-create mia-istanza

In questo modo verrà creata una nuova directory mia-istanza con tutte le sottodirectory e gli script necessari. Sarà poi possibile installare le librerie comuni nella sottodirectory lib/ e sviluppare le proprie applicazioni in webapps/. Non vi è alcuna applicazione predefinita in questa directory.

Configurare un'istanza privata

I file di configurazione di Tomcat per un'istanza privata sono disponibili nella sottodirectory conf/. È necessario modificare, per esempio, il file conf/server.xml per modificare le porte predefinite usate dall'istanza privata di Tomcat per evitare conflitti con altre istanze che potrebbero essere in esecuzione.

Avviare e fermare un'istanza privata

È possibile avviare un'istanza privata utilizzando il seguente comando (si presuppone che l'istanza sia posizionata nella directory mia-istanza):

mia-istanza/bin/startup.sh
[Nota]

Controllare la sottodirectory logs/ per la presenza di errori. Se si nota un errore del tipo "java.net.BindException: Address already in use<null>:8080", significa che la porta in uso è già utilizzata ed è necessario modificarla.

Per fermare un'istanza, usare il seguente comando (si presuppone che l'istanza sia posizionata nella directory mia-istanza):

mia-istanza/bin/shutdown.sh