#LANGUAGE it #format wiki <
> <> = 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|repository]] '''Universe'''. Il tutto per un duplice motivo: a. i pacchetti di '''Ubuntu''' non sono sincronizzati con l'ultima release disponibile; a. 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]]. 0. 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 }}} 0. 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 }}} 0. Estrarre l'archivio: {{{ tar xzfv apache-tomcat-6.0.7.tar.gz }}} 0. 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 }}} 0. 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: 0. crare il file `/etc/init.d/tomcat` con l'[[Ufficio/EditorDiTesto|editor di testo preferito]] e copiare quanto segue: {{{ #!/bin/bash # # 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 }}} 0. Diamogli i giusti permessi, rendiamolo eseguibile e registriamolo: {{{ sudo chmod 755 /etc/init.d/tomcat sudo update-rc.d tomcat defaults }}} 0. Avviamo '''Tomcat''': {{{ sudo /etc/init.d/tomcat start }}} 0. 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. 0. Installare il ''connector'': {{{ sudo apt-get install libapache2-mod-jk }}} 0. Creare il file `/etc/apache2/workers.properties` con l'[[Ufficio/EditorDiTesto|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'''. 0. 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 }}} 0. 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 //* ajp13 }}} È importante osservare che `` 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 //` punti a `/home/nomeutente/nostreapplicazioni/`, procederemo come segue: {{{ mkdir /home/nomeutente/nostreapplicazioni/ sudo ln -s /home/nomeutente/nostreapplicazioni// /usr/local/tomcat/webapps/ sudo /etc/init.d/apache2 restart sudo /etc/init.d/tomcat restart }}} Ora basterà inserire o creare le nostre applicazioni in `/home/nomeutente/nostreapplicazioni/` e puntando col nostro browser a [[http://localhost//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: 0. Aprire il file `/usr/share/tomcat/conf/tomcat-users.xml` con l'[[Ufficio/EditorDiTesto|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 «` ... `»: {{{ }}} mentre per creare l'utente con i ruoli di ''admin'' e ''manager'', inseriamo: {{{ }}} Se volessimo dare all'utente un unico ruolo, come ''admin'', basta inserirne solo uno: {{{ }}} 0. 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 [[http://tomcat.apache.org/tomcat-6.0-doc/index.html|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: 0. 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 }}} 0. 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/`. 0. 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: 0. Installiamo: {{{ sudo apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps }}} 0. Avviamo '''Tomcat''': {{{ sudo /etc/init.d/tomcat5 start }}} 0. 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 = * [[http://tomcat.apache.org/index.html|Sito ufficiale]] * [[http://tomcat.apache.org/tomcat-5.6-doc/index.html|Documentazione ufficiale Tomcat 5.5]] * [[http://tomcat.apache.org/tomcat-6.0-doc/index.html|Documentazione ufficiale Tomcat 6.0]] ---- CategoryServer CategoryDaRevisionare