Apache Tomcat

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

The Tomcat 6.0 packages in Ubuntu support two different ways of running Tomcat. You can install them as a classic unique system-wide instance, that will be started at boot time will run as the tomcat6 unpriviledged user. But you can also deploy private instances that will run with your own user rights, and that you should start and stop by yourself. This second way is particularly useful in a development server context where multiple users need to test on their own private Tomcat instances.

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

Riferimenti