Installare Apache Tomcat 8.5 su Centos 6 per una determinata applicazione
Seguirà l'installazione di Tomcat8.5 su Centos 6.10 associata ad un utente/servizio web che chiameremo "fapp".
Apache Tomcat (o semplicemente Tomcat) è un software open source che permette di implementare Web Application Server scritti in Java. Esso implementa Java Servlet (oggetti scritti in linguaggio Java) e JavaServer Pages (JSP).
Prerequisito installare JAVA
Per verificare se java è installato,
eseguire il comando
[root@coslab02 conf.d]# java -version
java version "1.7.0_191" OpenJDK Runtime Environment (rhel-2.6.15.4.el6_10-x86_64 u191-b01) OpenJDK 64-Bit Server VM (build 24.191-b01, mixed mode)
Per trovare la directory di installazione di java:
[root@coslab02 ~]# which java
/usr/bin/java
[root@coslab02 ~]# ll /usr/bin/java
lrwxrwxrwx. 1 root root 22 6 set 2018 /usr/bin/java -> /etc/alternatives/java
[root@coslab02 ~]# ll /etc/alternatives/java
lrwxrwxrwx. 1 root root 46 6 set 2018 /etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
La JAVA_HOME è /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/
Cambiamo il proprietario
[root@coslab02 fapp]# chown -R fapp:fapp *
[root@coslab02 fapp]# ls -lrt
totale 4
drwxr-xr-x. 9 fapp fapp 4096 2 ott 13:00 apache-tomcat-8.5.46
lrwxrwxrwx. 1 fapp fapp 30 2 ott 13:01 tomcat -> /opt/fapp/apache-tomcat-8.5.46
lrwxrwxrwx. 1 fapp fapp 37 2 ott 13:14 java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64
Avviare Tomcat
[root@coslab02 bin]# .startup.sh
-bash: .startup.sh: command not found
[root@coslab02 bin]# .startup.sh
-bash: .startup.sh: command not found
[root@coslab02 bin]# ./startup.sh
Using CATALINA_BASE: /opt/fapp/tomcat
Using CATALINA_HOME: /opt/fapp/tomcat
Using CATALINA_TMPDIR: /opt/fapp/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/fapp/tomcat/bin/bootstrap.jar:/opt/fapp/tomcat/bin/tomcat-juli.jar
Tomcat started.
Catalina è il contenitore di servlet di Tomcat.
Cambio porta
Il protocollo http risponde sulla porta di default è 8080. Se si vuole cambiare modificare il file
/opt/fapp/tomcat/conf/server.xml
<Connector port="7180" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Aggiungere nel DNS l'alias all'applicazione creata.
coslab02 IN A <indirizzo ip dell'host>
fapp IN CNAME coslab02
Verifica
http://fapp:7180
Apache Tomcat (o semplicemente Tomcat) è un software open source che permette di implementare Web Application Server scritti in Java. Esso implementa Java Servlet (oggetti scritti in linguaggio Java) e JavaServer Pages (JSP).
Prerequisito installare JAVA
Per verificare se java è installato,
eseguire il comando
[root@coslab02 conf.d]# java -version
java version "1.7.0_191" OpenJDK Runtime Environment (rhel-2.6.15.4.el6_10-x86_64 u191-b01) OpenJDK 64-Bit Server VM (build 24.191-b01, mixed mode)
Per trovare la directory di installazione di java:
[root@coslab02 ~]# which java
/usr/bin/java
[root@coslab02 ~]# ll /usr/bin/java
lrwxrwxrwx. 1 root root 22 6 set 2018 /usr/bin/java -> /etc/alternatives/java
[root@coslab02 ~]# ll /etc/alternatives/java
lrwxrwxrwx. 1 root root 46 6 set 2018 /etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
La JAVA_HOME è /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/
Creare l'utenze fapp
[root@coslab02 ~]# useradd fapp
Controllo
[root@coslab02 ~]# cat /etc/passwd
fapp:x:502:10000::/home/fapp:/bin/bash
Creare sotto /opt la directory fapp
[root@coslab02 opt]# mkdir /opt/fapp
Cambiamo il proprietario
[root@coslab02 opt]# chown fapp:fapp fapp
[root@coslab02 opt]# ls -lrt
drwxr-xr-x. 2 fapp fapp 4096 2 ott 12:47 fapp
Effettuare il download di Tomcat dal sito https://tomcat.apache.org
Ad esempio apache-tomcat-8.5.45.tar.gz e trasferirlo sotto /opt/fapp
Installare tomcat
[root@coslab02 fapp]# tar xzf apache-tomcat-8.5.46.tar.gz
[root@coslab02 fapp]# ls -lrt
totale 11356
-rw-r--r--. 1 root root 11623939 2 ott 12:58 apache-tomcat-8.5.46.tar.gz
drwxr-xr-x. 9 root root 4096 2 ott 13:00 apache-tomcat-8.5.46
Creare un link simbolico a Tomcat
[root@coslab02 fapp]# ln -s /opt/fapp/apache-tomcat-8.5.46 /opt/fapp/tomcat
[root@coslab02 fapp]# ls -lrt
totale 11356
-rw-r--r--. 1 root root 11623939 2 ott 12:58 apache-tomcat-8.5.46.tar.gz
drwxr-xr-x. 9 root root 4096 2 ott 13:00 apache-tomcat-8.5.46
lrwxrwxrwx. 1 root root 30 2 ott 13:01 tomcat -> /opt/fapp/apache-tomcat-8.5.46
[root@coslab02 fapp]#
Creare un link simbolico a Java
[root@coslab02 fapp]# ln -s /usr/lib/jvm/jre-1.7.0-openjdk.x86_64 /opt/fapp/java
[root@coslab02 fapp]# ls -lrt
totale 4
drwxr-xr-x. 9 root root 4096 2 ott 13:00 apache-tomcat-8.5.46
lrwxrwxrwx. 1 root root 30 2 ott 13:01 tomcat -> /opt/fapp/apache-tomcat-8.5.46
lrwxrwxrwx. 1 root root 37 2 ott 13:14 java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64
[root@coslab02 fapp]# ln -s /usr/lib/jvm/jre-1.7.0-openjdk.x86_64 /opt/fapp/java
[root@coslab02 fapp]# ls -lrt
totale 4
drwxr-xr-x. 9 root root 4096 2 ott 13:00 apache-tomcat-8.5.46
lrwxrwxrwx. 1 root root 30 2 ott 13:01 tomcat -> /opt/fapp/apache-tomcat-8.5.46
lrwxrwxrwx. 1 root root 37 2 ott 13:14 java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64
Cambiamo il proprietario
[root@coslab02 fapp]# chown -R fapp:fapp *
[root@coslab02 fapp]# ls -lrt
totale 4
drwxr-xr-x. 9 fapp fapp 4096 2 ott 13:00 apache-tomcat-8.5.46
lrwxrwxrwx. 1 fapp fapp 30 2 ott 13:01 tomcat -> /opt/fapp/apache-tomcat-8.5.46
lrwxrwxrwx. 1 fapp fapp 37 2 ott 13:14 java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64
Avviare Tomcat
[root@coslab02 bin]# .startup.sh
-bash: .startup.sh: command not found
[root@coslab02 bin]# .startup.sh
-bash: .startup.sh: command not found
[root@coslab02 bin]# ./startup.sh
Using CATALINA_BASE: /opt/fapp/tomcat
Using CATALINA_HOME: /opt/fapp/tomcat
Using CATALINA_TMPDIR: /opt/fapp/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/fapp/tomcat/bin/bootstrap.jar:/opt/fapp/tomcat/bin/tomcat-juli.jar
Tomcat started.
Catalina è il contenitore di servlet di Tomcat.
Verifica se installato:
http://<indirizzo ip dell'host>:8080
Cambio porta
Il protocollo http risponde sulla porta di default è 8080. Se si vuole cambiare modificare il file
/opt/fapp/tomcat/conf/server.xml
<Connector port="7180" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Verifica:
http://<indirizzo ip dell'host>:7180
Eseguire tomcat come servizio
Eseguire tomcat come servizio
Se vogliamo eseguire fapp come servizio, configuriamo il file di servizio sotto initi.d.
vi /etc/init.d/fapp
#!/bin/bash
#
# Init file for Tomcat server
#
# chkconfig: 345 55 25
# description: Tomcat server
#
# Source function library.
. /etc/init.d/functions
RUN_AS_USER=fapp
#CATALINA_HOME is the location of the bin files of Tomcat
export CATALINA_HOME=/opt/fapp/tomcat
#Location of JAVA_HOME (bin files)
export JAVA_HOME=/opt/fapp/java
export JAVA_TOOL_OPTIONS="-Xmx1024m -Xms128m"
start() {
echo "Starting Tomcat: "
if [ "x$USER" != "x$RUN_AS_USER" ]; then
su - $RUN_AS_USER -c "$CATALINA_HOME/bin/startup.sh"
else
$CATALINA_HOME/bin/startup.sh
fi
# touch /var/lock/subsys/fapp
/opt/admin/bin/stouch fapp
echo "done."
}
stop() {
echo "Shutting down Tomcat: "
if [ "x$USER" != "x$RUN_AS_USER" ]; then
su - $RUN_AS_USER -c "$CATALINA_HOME/bin/shutdown.sh"
else
$CATALINA_HOME/bin/shutdown.sh
fi
# rm /var/lock/subsys/fapp 1>/dev/null 2>&1
/opt/admin/bin/srm fapp 1>/dev/null 2>&1
echo "done."
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Usage: $0 {start|stop}"
esac
exit 0
Cambiare i permessi ma lasciare sempre come root.
[root@coslab02 init.d]# ls -lrt fapp
-rw-r--r-x. 1 root root 1175 2 ott 13:32 fapp
[root@coslab02 init.d]# chmod u=rwx,g=rx,o=rx fapp
[root@coslab02 init.d]# ls -lrt fapp
-rwxr-xr-x. 1 root root 1175 2 ott 13:32 fapp
Per avviare tomcat e quindi il servizio fapp
[root@coslab02 bin]# service fapp start
Starting Tomcat:
Using CATALINA_BASE: /opt/fapp/tomcat
Using CATALINA_HOME: /opt/fapp/tomcat
Using CATALINA_TMPDIR: /opt/fapp/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/fapp/tomcat/bin/bootstrap.jar:/opt/fapp/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@coslab02 init.d]# ls -lrt fapp
-rw-r--r-x. 1 root root 1175 2 ott 13:32 fapp
[root@coslab02 init.d]# chmod u=rwx,g=rx,o=rx fapp
[root@coslab02 init.d]# ls -lrt fapp
-rwxr-xr-x. 1 root root 1175 2 ott 13:32 fapp
Per avviare tomcat e quindi il servizio fapp
[root@coslab02 bin]# service fapp start
Starting Tomcat:
Using CATALINA_BASE: /opt/fapp/tomcat
Using CATALINA_HOME: /opt/fapp/tomcat
Using CATALINA_TMPDIR: /opt/fapp/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/fapp/tomcat/bin/bootstrap.jar:/opt/fapp/tomcat/bin/tomcat-juli.jar
Tomcat started.
Aggiungere nel DNS l'alias all'applicazione creata.
coslab02 IN A <indirizzo ip dell'host>
fapp IN CNAME coslab02
Verifica
http://fapp:7180
Configurare l’autenticazione.
Tomcat può essere gestito attraverso web application manger e host-manager ma entrambi hanno l’accesso
protetto da password che occorre configurare.
Per accedere a Manager App e Host Manager modificare i seguenti file.
vi /opt/fapp/tomcat/conf/tomcat-users.xml
Aggiungere le seguenti righe
<role rolename="admin-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat" password="s3cret" roles="manager-gui,manager-status,admin-gui"/>
</tomcat-users>
manager-gui:
l’utente con questo ruolo può accedere alla pagina status (http://localhost:8080/manager/status)
e alla web console (http://localhost:8080/manager/html);
Poi modificare i seguenti file
### Web Manager ###
vi /opt/fapp/tomcat/webapps/manager/META-INF/context.xml
### Host Manager ###
vi /opt/fapp/tomcat/webapps/host-manager/META-INF/context.xml
aggiornando gli indirizzi ip che possono accedere a web e host manager oltre a local host
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|.*" />
oppure se si vuole autorizzare solo un indirizzo IP
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.1.*" />
Riavviare tomcat
service fapp restart
Log Tomcat
Default tomcat location è /var/www/html/tomcat/logs. Nel nostro caso /opt/fapp/tomcat/logs [root@coslab02 logs]# ls -lrt totale 468 -rw-r-----. 1 tomcat tomcat 0 26 set 17:04 manager.2019-09-26.log -rw-r-----. 1 tomcat tomcat 0 26 set 17:04 host-manager.2019-09-26.log -rw-r-----. 1 tomcat tomcat 735 26 set 17:05 localhost.2019-09-26.log -rw-r-----. 1 tomcat tomcat 407523 26 set 17:05 catalina.out -rw-r-----. 1 tomcat tomcat 7618 26 set 17:05 catalina.2019-09-26.log -rw-r-----. 1 tomcat tomcat 8759 26 set 17:05 localhost_access_log.2019-09-26.txt view localhost_access_log.2019-09-26.txt 10.10a.bbb.ccc - - [26/Sep/2019:16:39:08 +0200] "GET /pagina_test.jsp HTTP/1.1" 200 184 Dice che la macchina con ip 10.10a.bbb.ccc ha fatto in quella data una get request della pagina “pagina_test.jsp” In catalina.out scrive invece System.out e System.err
Context Tomcat
In Tomcat ogni contesto rappresenta una web application e un server Tomcat può avere in esecuzioni
più applicazioni contemporaneamente ma solo un contesto è definito come di deafult.
Nel context viene pubblicata (deploy) una applicazione.
Un context può essere definito in modo esplicito:
- aggiungendo un file xml sotto /opt/fapp/tomcat/conf/Catalina/localhost
Ad esempio creando il fapp.xml la url diventa così
http://<indirizzo ip>:8080/fapp/...
- aggiungendo un elemento "context" nel file /opt/tomcat/conf/server.xml all'interno dell'elemento "Host"
<Host name="localhost" appBase="webapp" autoDeploy="true"> <Context path="/fapp" docBase="/path/to/web/app/fapp" reloadable="true" /> </Host>
Un context può essere definito in modo implicito copiando il file war sotto la cartella webapps di Tomcat
/opt/fapp/tomcat/webapps
Testiamo Apache Tomcat con una JSP
I document root di Apache web server è in general sotto /var/www/html/.
Come si cerca?
cercare la directory webapp di Tomcat
sotto /opt/fapp/tomcat/conf cercare nel file server.xml la directory webapp.
cat /opt/tomcat/conf/server.xml | grep webapp
<Host name="localhost" appBase="webapps"
La document root é:
/opt/fapp/tomcat/webapps/ROOT
index.jsp è la pagine web di defualt.
All’interno della document root creiamo una pagina jsp di prova. vi pagina_test.jsp <html> <head><title>JSP prova</title></head> <body> <% double num = Math.random(); if (num > 0.95) { %> <h2>Oggi è una buona giornata!</h2><p>(<%= num %>)</p> <% } else { %> <h2>La vita va avanti</h2><p>(<%= num %>)</p> <% } %> <a href="<%= request.getRequestURI() %>"><h3>Riprova</h3></a> </body> </html> Nell’url del borwser aggiungiamo la pagina jsp creata. http://fapp:7180/pagina_test.jsp compare la seguente schermata
Log Tomcat
Default tomcat location è /var/www/html/tomcat/logs. Nel nostro caso /opt/fapp/tomcat/logs [root@coslab02 logs]# ls -lrt totale 468 -rw-r-----. 1 tomcat tomcat 0 26 set 17:04 manager.2019-09-26.log -rw-r-----. 1 tomcat tomcat 0 26 set 17:04 host-manager.2019-09-26.log -rw-r-----. 1 tomcat tomcat 735 26 set 17:05 localhost.2019-09-26.log -rw-r-----. 1 tomcat tomcat 407523 26 set 17:05 catalina.out -rw-r-----. 1 tomcat tomcat 7618 26 set 17:05 catalina.2019-09-26.log -rw-r-----. 1 tomcat tomcat 8759 26 set 17:05 localhost_access_log.2019-09-26.txt view localhost_access_log.2019-09-26.txt 10.10a.bbb.ccc - - [26/Sep/2019:16:39:08 +0200] "GET /pagina_test.jsp HTTP/1.1" 200 184 Dice che la macchina con ip 10.10a.bbb.ccc ha fatto in quella data una get request della pagina “pagina_test.jsp” In catalina.out scrive invece System.out e System.err
Context Tomcat
In Tomcat ogni contesto rappresenta una web application e un server Tomcat può avere in esecuzioni
più applicazioni contemporaneamente ma solo un contesto è definito come di deafult.
Nel context viene pubblicata (deploy) una applicazione.
Un context può essere definito in modo esplicito:
- aggiungendo un file xml sotto /opt/fapp/tomcat/conf/Catalina/localhost
Ad esempio creando il fapp.xml la url diventa così
http://<indirizzo ip>:8080/fapp/...
- aggiungendo un elemento "context" nel file /opt/tomcat/conf/server.xml all'interno dell'elemento "Host"
<Host name="localhost" appBase="webapp" autoDeploy="true"> <Context path="/fapp" docBase="/path/to/web/app/fapp" reloadable="true" /> </Host>
Un context può essere definito in modo implicito copiando il file war sotto la cartella webapps di Tomcat
/opt/fapp/tomcat/webapps
Testiamo Apache Tomcat con una JSP
I document root di Apache web server è in general sotto /var/www/html/.
Come si cerca?
cercare la directory webapp di Tomcat
sotto /opt/fapp/tomcat/conf cercare nel file server.xml la directory webapp.
cat /opt/tomcat/conf/server.xml | grep webapp
<Host name="localhost" appBase="webapps"
La document root é:
/opt/fapp/tomcat/webapps/ROOT
index.jsp è la pagine web di defualt.
All’interno della document root creiamo una pagina jsp di prova. vi pagina_test.jsp <html> <head><title>JSP prova</title></head> <body> <% double num = Math.random(); if (num > 0.95) { %> <h2>Oggi è una buona giornata!</h2><p>(<%= num %>)</p> <% } else { %> <h2>La vita va avanti</h2><p>(<%= num %>)</p> <% } %> <a href="<%= request.getRequestURI() %>"><h3>Riprova</h3></a> </body> </html> Nell’url del borwser aggiungiamo la pagina jsp creata. http://fapp:7180/pagina_test.jsp compare la seguente schermata