Installare Apache Tomcat 8.5 su Centos 6
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)
Creare un account tomcat. useradd -d /opt/tomcat tomcat Effettuare il download di Tomcat dal sito https://tomcat.apache.org Ad esempio apache-tomcat-8.5.45.tar.gz e trasferirlo sotto /opt/tomcat
Creare un account tomcat.
Creare un link simbolico a tomcat.
[root@coslab02 fapp]# ln -s /opt/tomcat/apache-tomcat-8.5.46 /opt/tomcat
Creare un link simbolico sotto /opt/tomcat alla java home e cambiare owner. [root@coslab02 tomcat]# ln -s /usr/lib/jvm/jre-1.7.0-openjdk.x86_64 java [root@coslab02 tomcat]# chown -R tomcat:tomcat java
Eseguire tomcat come servizio
vi /etc/init.d/tomcat8
#!/bin/bash
#Location of JAVA_HOME (bin files)
#export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
export JAVA_HOME=/opt/tomcat/java
#Add Java binary files to PATH
export PATH=$JAVA_HOME/bin:$PATH
#CATALINA_HOME is the location of the bin files of Tomcat
export CATALINA_HOME=/opt/tomcat
#CATALINA_BASE is the location of the configuration files of this instance of Tomcat
export CATALINA_BASE=/opt/tomcat
#TOMCAT_USER is the default user of tomcat
export TOMCAT_USER=tomcat
#TOMCAT_USAGE is the message if this script is called without any options
TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;31mkill\e[00m|
\e[00;32mstatus\e[00m|\e[00;31mrestart\e
[00m}"
#SHUTDOWN_WAIT is wait time in seconds for java proccess to stop
SHUTDOWN_WAIT=20
tomcat_pid() {
echo `ps -fe | grep $CATALINA_BASE | grep -v grep | tr -s " "|cut -d" " -f2`
}
start() {
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m"
else
# Start tomcat
echo -e "\e[00;32mStarting tomcat\e[00m"
#ulimit -n 100000
#umask 007
#/bin/su -p -s /bin/sh $TOMCAT_USER
if [ `user_exists $TOMCAT_USER` = "1" ]
then
/bin/su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh
else
sh $CATALINA_HOME/bin/startup.sh
fi
status
fi
return 0
}
status(){
pid=$(tomcat_pid)
if [ -n "$pid" ]; then echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m"
else echo -e "\e[00;31mTomcat is not running\e[00m"
fi
}
terminate() {
echo -e "\e[00;31mTerminating Tomcat\e[00m"
kill -9 $(tomcat_pid)
}
stop() {
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo -e "\e[00;31mStoping Tomcat\e[00m"
#/bin/su -p -s /bin/sh $TOMCAT_USER
sh $CATALINA_HOME/bin/shutdown.sh
let kwait=$SHUTDOWN_WAIT
count=0;
until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
do
echo -n -e "\n\e[00;31mwaiting for processes to exit\e[00m";
sleep 1
let count=$count+1;
done
if [ $count -gt $kwait ]; then
echo -n -e "\n\e[00;31mkilling processes didn't stop after $SHUTDOWN_WAIT seconds\e[00m"
terminate
fi
else
echo -e "\e[00;31mTomcat is not running\e[00m"
fi
return 0
}
user_exists(){
if id -u $1 >/dev/null 2>&1; then
echo "1"
else
echo "0"
fi
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
kill)
terminate
;;
*)
echo -e $TOMCAT_USAGE
;;
esac
exit 0
Dare le grant di esecuzione:
chmod +x /etc/init.d/tomcat8 service tomcat8 start Per verificare se la porta 8080 è in ascolto. netstat -naptu | grep 8080 Output: tcp 0 0 :::8080 :::* LISTEN 1526/java
protetto da password che occorre configurare.
Per accedere a Manager App e Host Manager modificare i seguenti file.
Cliccare su Manager App
All’interno della document root /opt/tomcat/webapps/ROOT mettiamo 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://10.1aaa.bbb.ccc:8080/pagina_test.jsp
compare la seguente schermata
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/.
[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 un account tomcat. useradd -d /opt/tomcat tomcat Effettuare il download di Tomcat dal sito https://tomcat.apache.org Ad esempio apache-tomcat-8.5.45.tar.gz e trasferirlo sotto /opt/tomcat
Creare un account tomcat.
useradd -d /opt/tomcat tomcat
Effettuare il download di Tomcat dal sito https://tomcat.apache.org
Ad esempio apache-tomcat-8.5.45.tar.gz e trasferirlo sotto /opt/tomcat
[root@coslab02 tomcat]# tar xzf apache-tomcat-8.5.45.tar.gz
[root@coslab02 tomcat]# ls -lrt
totale 9500
-rw-r--r--. 1 root root 9722154 13 set 16:14 apache-tomcat-8.5.45.tar.gz
drwxr-xr-x. 9 root root 4096 13 set 16:15 apache-tomcat-8.5.45
[root@coslab02 tomcat]# chown -R tomcat:tomcat apache-tomcat-8.5.45
[root@coslab02 tomcat]# ls -lrt
totale 9500
-rw-r--r--. 1 root root 9722154 13 set 16:14 apache-tomcat-8.5.45.tar.gz
drwxr-xr-x. 9 tomcat tomcat 4096 13 set 16:15 apache-tomcat-8.5.45
totale 9500
-rw-r--r--. 1 root root 9722154 13 set 16:14 apache-tomcat-8.5.45.tar.gz
drwxr-xr-x. 9 root root 4096 13 set 16:15 apache-tomcat-8.5.45
[root@coslab02 tomcat]# chown -R tomcat:tomcat apache-tomcat-8.5.45
[root@coslab02 tomcat]# ls -lrt
totale 9500
-rw-r--r--. 1 root root 9722154 13 set 16:14 apache-tomcat-8.5.45.tar.gz
drwxr-xr-x. 9 tomcat tomcat 4096 13 set 16:15 apache-tomcat-8.5.45
Creare un link simbolico a tomcat.
[root@coslab02 fapp]# ln -s /opt/tomcat/apache-tomcat-8.5.46 /opt/tomcat
Creare un link simbolico sotto /opt/tomcat alla java home e cambiare owner. [root@coslab02 tomcat]# ln -s /usr/lib/jvm/jre-1.7.0-openjdk.x86_64 java [root@coslab02 tomcat]# chown -R tomcat:tomcat java
Diamo al gruppo di tomcat l'accesso in lettura alla directory conf e a tutti i suoi contenuti:
chmod -R g+r conf
chmod g+x conf
chmod -R g+r conf
chmod g+x conf
Rendiamo l'utente tomcat il proprietario delle directory webapps, work, temp e logs:
chown -R tomcat webapps/
chown -R tomcat work/
chown -R tomcat temp/
chown -R tomcat logs/
Avviamo tomcat:
[root@coslab02 tomcat]# ./bin/startup.sh
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Tomcat started.
Verifica se installato:
http://<indirizzo ip dell'host>:8080
#!/bin/bash
#Location of JAVA_HOME (bin files)
#export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64
export JAVA_HOME=/opt/tomcat/java
#Add Java binary files to PATH
export PATH=$JAVA_HOME/bin:$PATH
#CATALINA_HOME is the location of the bin files of Tomcat
export CATALINA_HOME=/opt/tomcat
#CATALINA_BASE is the location of the configuration files of this instance of Tomcat
export CATALINA_BASE=/opt/tomcat
#TOMCAT_USER is the default user of tomcat
export TOMCAT_USER=tomcat
#TOMCAT_USAGE is the message if this script is called without any options
TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;31mkill\e[00m|
\e[00;32mstatus\e[00m|\e[00;31mrestart\e
[00m}"
#SHUTDOWN_WAIT is wait time in seconds for java proccess to stop
SHUTDOWN_WAIT=20
tomcat_pid() {
echo `ps -fe | grep $CATALINA_BASE | grep -v grep | tr -s " "|cut -d" " -f2`
}
start() {
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m"
else
# Start tomcat
echo -e "\e[00;32mStarting tomcat\e[00m"
#ulimit -n 100000
#umask 007
#/bin/su -p -s /bin/sh $TOMCAT_USER
if [ `user_exists $TOMCAT_USER` = "1" ]
then
/bin/su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh
else
sh $CATALINA_HOME/bin/startup.sh
fi
status
fi
return 0
}
status(){
pid=$(tomcat_pid)
if [ -n "$pid" ]; then echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m"
else echo -e "\e[00;31mTomcat is not running\e[00m"
fi
}
terminate() {
echo -e "\e[00;31mTerminating Tomcat\e[00m"
kill -9 $(tomcat_pid)
}
stop() {
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo -e "\e[00;31mStoping Tomcat\e[00m"
#/bin/su -p -s /bin/sh $TOMCAT_USER
sh $CATALINA_HOME/bin/shutdown.sh
let kwait=$SHUTDOWN_WAIT
count=0;
until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
do
echo -n -e "\n\e[00;31mwaiting for processes to exit\e[00m";
sleep 1
let count=$count+1;
done
if [ $count -gt $kwait ]; then
echo -n -e "\n\e[00;31mkilling processes didn't stop after $SHUTDOWN_WAIT seconds\e[00m"
terminate
fi
else
echo -e "\e[00;31mTomcat is not running\e[00m"
fi
return 0
}
user_exists(){
if id -u $1 >/dev/null 2>&1; then
echo "1"
else
echo "0"
fi
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
kill)
terminate
;;
*)
echo -e $TOMCAT_USAGE
;;
esac
exit 0
Dare le grant di esecuzione:
chmod +x /etc/init.d/tomcat8 service tomcat8 start Per verificare se la porta 8080 è in ascolto. netstat -naptu | grep 8080 Output: tcp 0 0 :::8080 :::* LISTEN 1526/java
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/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)
e alla web console (http://localhost:8080/manager/html)
Poi modificare i seguenti file
### Web Manager ###
vi /opt/tomcat/webapps/manager/META-INF/context.xml
### Host Manager ###
vi /opt/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 tomcat8 restart
Riavviare tomcat service tomcat8 restart
Cliccare su Manager App
Qui, puoi effettuare il deploy di una nuova applicazione, anche in uno specifico context, avere la lista
delle applicazioni active o inactive, start and stop the web applications.
Cliccare su HOST Manager
delle applicazioni active o inactive, start and stop the web applications.
Cliccare su HOST Manager
Log Tomcat
Default tomcat location è /var/www/html/tomcat/logs.
Nel nostro caso
/opt/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
“pagina_test.jsp” In catalina.out scrive invece System.out e System.err
Testiamo Apache Tomcat con una JSP
I document root di Apache web server è in general sotto /var/www/html/
ma nel nostro caso cerchiamo sotto /opt/tomcat/conf la directory webapp.
[root@coslab02 conf]# ll
totale 228
drwxr-x---. 3 tomcat tomcat 4096 13 set 16:41 Catalina
-rw-r-----. 1 tomcat tomcat 13548 15 ago 00:27 catalina.policy
-rw-r-----. 1 tomcat tomcat 7661 15 ago 00:27 catalina.properties
-rw-r-----. 1 tomcat tomcat 1338 15 ago 00:27 context.xml
-rw-r-----. 1 tomcat tomcat 1149 15 ago 00:27 jaspic-providers.xml
-rw-r-----. 1 tomcat tomcat 2313 15 ago 00:27 jaspic-providers.xsd
-rw-r-----. 1 tomcat tomcat 3916 15 ago 00:27 logging.properties
-rw-r-----. 1 tomcat tomcat 7511 15 ago 00:27 server.xml
-rw-r-----. 1 tomcat tomcat 2412 23 set 18:07 tomcat-users.xml
-rw-r-----. 1 tomcat tomcat 2633 15 ago 00:27 tomcat-users.xsd
-rw-r-----. 1 tomcat tomcat 171482 15 ago 00:27 web.xml
[root@coslab02 conf]# cat server.xml | grep webapp
<Host name="localhost" appBase="webapps"
Quindi la webapp folder è sotto /opt/tomcat
[root@coslab02 tomcat]# ls webapps/
docs examples host-manager manager ROOT
[root@coslab02 ROOT]# ls
asf-logo-wide.svg bg-middle.png bg-upper.png index.jsp tomcat.css tomcat.png tomcat.svg
bg-button.png bg-nav.png favicon.ico RELEASE-NOTES.txt tomcat.gif tomcat-power.gif WEB-INF
Quindi la document root è /opt/tomcat/webapps/ROOT e
index.jsp è la pagine web seguente
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://10.1aaa.bbb.ccc:8080/pagina_test.jsp
compare la seguente schermata