Introduzione

Apache Tomcat è un Servlet/JSP engine che non fa altro che contenere ed eseguire le applicazioni Java Servlet e Java Server Page (JSP).

Non è l'unico Application Server per Servlet/JSP in circolazione, ma di sicuro è libero ed è il contenitore di servlet utilizzato nell'implementazione ufficiale di riferimento per il Java Servlet e le tecnologie Java Server Page sviluppate dalla Sun Microsystems.

Questa guida servirà ad installare Apache Tomcat utilizzando i binari ufficiali prelevabili dal sito di Tomcat e non utilizzando i pacchetti precompilati di Ubuntu prelevabili dal repository Universe.

Il tutto per un duplice motivo:

  1. i pacchetti di Ubuntu non sono sincronizzati con l'ultima release disponibile;

  2. richiedono dipendenze, spesso eccessive e non necessariamente utili, come ad esempio l'installazione delle librerie ligcj e sue dipendenze, che risulterebbero ridondanti visto già la presenza, o che comunque andremo ad installare, di Java JRE e JDK della Sun.

Tomcat 6

Installazione di Tomcat.

Installazione

Attivare i repository Universe e Multiverse di Ubuntu. Per maggiori informazioni si consulti la pagina Repository.

  1. Installare per prima cosa, se già non lo si è fatto, i pacchetti Java jre e jdk:

    sudo apt-get install sun-java5-jre sun-java5-jdk

    se invece si vuole installare l'ultimissima versione di Java, la 1.6:

    sudo apt-get install sun-java6-jre sun-java6-jdk
  2. Scaricare dal sito http://tomcat.apache.org/ l'ultima versione di Tomcat, la 6 al momento in cui sta scrivendo:

    wget http://mirrors.publicshout.org/apache/tomcat/tomcat-6/v6.0.7/bin/apache-tomcat-6.0.7.tar.gz
  3. Estrarre l'archivio:

    tar xzfv apache-tomcat-6.0.7.tar.gz
  4. Copiare in /usr/local la directory estratta e poi creare un link simbolico /usr/local/tomcat. Questo per un triplice motivo: praticità, manutenibilità e comodità. Se si desidera installare più versioni basterà cambiare il riferimento al link simbolico.

    sudo cp -r apache-tomcat-6.0.7 /usr/local/
    sudo ln -s /usr/local/apache-tomcat-6.0.7/ /usr/local/tomcat
  5. Creare uno script per init.d per far si che il demone di Tomcat venga attivato all'avvio o comunque dia la possibilità di avviarlo, arrestarlo, riavviarlo:

    1. crare il file /etc/init.d/tomcat con l'editor di testo preferito e copiare quanto segue:

      #
      # Startup script for the Tomcat server
      #
      # chkconfig: - 83 53
      # description: Starts and stops the Tomcat daemon.
      # processname: tomcat
      # pidfile: /var/run/tomcat.pid
      # See how we were called.
      case $1 in
              start)
                      export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun/
                      export CLASSPATH=/usr/local/tomcat/lib/servlet-api.jar
                      export CLASSPATH=/usr/local/tomcat/lib/jsp-api.jar
                      export JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/
                      echo "Tomcat is started"
                      sh /usr/local/tomcat/bin/startup.sh
              ;;
              stop)
                      export JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/
                      sh /usr/local/tomcat/bin/shutdown.sh
                      echo "Tomcat is stopped"
              ;;
              restart)
                      export JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/
                      sh /usr/local/tomcat/bin/shutdown.sh
                      echo "Tomcat is stopped"
                      sh /usr/local/tomcat/bin/startup.sh
                      echo "Tomcat is started"
              ;;
              *)
                      echo "Usage: /etc/init.d/tomcat start|stop|restart"
              ;;
      esac
      exit 0
    2. Diamogli i giusti permessi, rendiamolo eseguibile e registriamolo:

      sudo chmod 755 /etc/init.d/tomcat
      sudo update-rc.d tomcat defaults
  6. Avviamo Tomcat:

    sudo /etc/init.d/tomcat start
  7. A questo punto, se tutto è andato per il verso giusto, puntando all'indirizzo http://localhost:8080 si dovrebbe avere la pagina di benvenuto di Tomcat.

Apache e Tomcat

Tomcat è abbastanza performante per essere eseguito come Web Server di pagine statiche o dinamiche, o come Web Application Server. Tuttavia se si vogliono sfruttare anche le innumerevoli potenzialità di un vero e proprio Web Server come Apache, soprattutto se lo si usa in macchine in produzione, esiste un connector che permette di mettere in comunicazione Apache con Tomcat facendolo richiamare da Apache solo quando serve.

Installazione del jk connector

Si presume che abbia Apache2 già installato.

  1. Installare il connector:

    sudo apt-get install libapache2-mod-jk
  2. Creare il file /etc/apache2/workers.properties con l'editor di testo preferito e copiare quanto segue:

    workers.tomcat_home=/usr/local/tomcat
    workers.java_home=/usr/lib/jvm/java-1.5.0-sun
    ps=/
    worker.list=ajp13
    worker.ajp13.host=localhost
    worker.ajp13.port=8009
    worker.ajp13.type=ajp13

    Con port=8009 si intende la porta con la quale Tomcat ascolta il connector, non http che è 8080.

  3. Modificare il file /etc/apache2/mods-available/jk.load e inserire, dopo la riga !LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so, quanto segue:

    JkWorkersFile   /etc/apache2/workers.properties
    JkLogFile   /etc/apache2/mod_jk.log
    JkLogLevel   debug
    #JkMount      /servlets-examples/* ajp13 #da decommentare se si usa tomcat 5.x;
    JkMount      /examples/* ajp13
  4. Riavviare Apache:

    sudo /etc/init.d/apache2 restart

Se tutto è andato per il verso giusto, puntando all'indirizzo http://localhost/examples, si dovrebbe vedere la pagina con i JSP e i Java Servlet d'esempio.

Osservazioni e approfondimenti

Connector: aggiungere altre directory web

In /etc/apache2/workers.properties la direttiva !JkMount non fa altro che redirigere a Tomcat tutte le richieste http precedute da /examples/ (per esempio http:/localhost/exampler/unesempio.jsb), in questo caso unesempio.jsp verrà processato da Tomcat invece che da Apache.

Dunque, se si vogliono aggiungere altre direcotory per richiamare le nostre applicazioni basta inserire altri !JkMount in /etc/apache2/mods-available/jk.load:

.....
JkMount      /examples/* ajp13
JkMount      /<nomedirectory>/* ajp13

È importante osservare che <nomedirectory> deve essere contenuta all'interno della directory /usr/local/tomcat/webapps, questo perchè come avete potuto notare in /etc/apache2/workers.properties abbiamo settato il path della home di Tomcat in /usr/local/tomcat, dunque la direttiva !JkMount effettuerà la sua ricerca a partire da li.

Se invece vogliamo che le nostre applicazioni siano salvate e sviluppate in una directory nella nostra home, oppure nella root del nostro Web Server, basta creare un collegamento simbolico che dalla directory dichiarata in !JkMount punti a una directory o nella nostra home o nella root del Web Server o in qualsiasi posto noi volessimo salvare i nostri progetti Servlet/JSP.

Per esempio, se vogliamo che !JkMount   /<nomedirectory>/ punti a /home/nomeutente/nostreapplicazioni/<nomedirectory>, procederemo come segue:

mkdir /home/nomeutente/nostreapplicazioni/<nomedirectory>
sudo ln -s /home/nomeutente/nostreapplicazioni/<nomedirectory>/ /usr/local/tomcat/webapps/<nomedirectorydichiaratainJkMount>
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/tomcat restart

Ora basterà inserire o creare le nostre applicazioni in /home/nomeutente/nostreapplicazioni/<nomedirectory> e puntando col nostro browser a http://localhost/<nomedirectorydichiaratainJkMount>/applicazione.jsp i nostri lavori verranno processati da Tomcat.

Amministrare Tomcat

Per amministrare Tomcat è necessario attivare Tomcat Manager. Per farlo basta seguire questi semplici passi:

  1. Aprire il file /usr/share/tomcat/conf/tomcat-users.xml con l'edito di testo che preferiamo e aggiungiamo l'utente (o gli utenti) con i ruoli di admin e manager. Per creare i ruoli inseriamo tra i tag «<tomcat-users> ... </tomcat-users>»:

    <role rolename="manager"/>
    <role rolename="admin"/>

    mentre per creare l'utente con i ruoli di admin e manager, inseriamo:

    <user username="YOUR USERNAME " password="YOUR PASSWORD" roles="admin,manager"/>

    Se volessimo dare all'utente un unico ruolo, come admin, basta inserirne solo uno:

    <user username="YOUR USERNAME " password="YOUR PASSWORD" roles="admin"/>
  2. Connettiamoci all'indirizzo http://localhost:8080/manager/html e accediamo al pannello di controllo di Tomcat Manager con le credenziali appena create.

Per approfondimenti sulla creazioni di altri ruoli si rimanda alla documentazione ufficiale.

Tomcat 5.x

La procedura di installazione di Tomcat appena descritta vale per la versione 6, ma, per le versioni precendenti, il metodo e l'approccio non cambiano, basta avere l'accortezza di adeguare alcuni path nei file di configurazione, visto che le direcotory delle versioni precedenti sono organizzate e nominate diversamente dalla versione 6.

Ecco nel dettaglio come procedere:

  1. Ridefinire il collegamento simbolico /usr/local/tomcat facendolo puntare a /usr/local/apache-tomcat-5.5.20 (o comunque alla versione scelta):

    sudo ln -s /usr/local/apache-tomcat-5.5.20 /usr/local/tomcat

    se non è una nuova installazione e avevate già definito il collegamento simbolico, prima di crearlo è necessario rimuoverlo:

    sudo rm /usr/local/tomcat
  2. Nel file /etc/init.d/tomcat modificare i CLASSPATH da:

    export CLASSPATH=/usr/local/tomcat/lib/servlet-api.jar
    export CLASSPATH=/usr/local/tomcat/lib/jsp-api.jar

    in:

    export CLASSPATH=/usr/local/tomcat/conf/lib/servlet-api.jar
    export CLASSPATH=/usr/local/tomcat/conf/lib/jsp-api.jar

    La differenza sta che lib/ nelle versioni precedenti è una sotto directory di conf/.

  3. Nel file /etc/apache2/mods-available/jk.load sostituiamo:

    JkMount      /examples/* ajp13

    con:

    JkMount      /servlets-examples/* ajp13

Questo perchè gli esempi non si trovano in examples/ come nella versione 6, ma in servlets-examples/.

Java JRE e JDK 1.6

Nel caso in cui avvessimo scelto di installare l'ultima versione della Java Virtual Machine e relativo JDK, basta sostiture in tutti i file di configurazione ogni occorrenza di:

/usr/lib/jvm/java-1.5.0-sun

con:

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

Installazione del pacchetto Ubuntu

Ad ogni modo se vogliamo installare le versioni precompilate per Ubuntu presenti nei repository Universe, indipendentemente dalle dipendenze che si tirerà dietro, basta semplicemente fare come segue:

  1. Installiamo:

    sudo apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps
  2. Avviamo Tomcat:

    sudo /etc/init.d/tomcat5 start
  3. Connettiamoci al server usando la porta 8180 e non 8080 :

    http://localhost:8180 

Per configurare connector e Apache basta seguire quanto descritto in precedenza.

Ulteriori risorse


CategoryServer CategoryDaRevisionare

Server/ApacheTomcat (l'ultima modifica è del 14/03/2011 12.51.56, fatta da localhost)