#

Documentazione ufficiale

## 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.

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.

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.

È 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

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

- Per ulteriori informazioni, consultare il sito web di Apache Tomcat.

- Il libro Tomcat: The Definitive Guide è un'ottima risorsa per creare siti web con Tomcat.

- Per ulteriori libri, consultare la pagina Tomcat Books.

Ruby on Rails |  | Capitolo 10. Database