Instalação do Apache Tomcat + Debian Squeeze

E ai galera aqui vou abordar a instalação e configuração do Tomcat no Debian Squeeze ;)

Prepare o seu sistema com o seguinte script http://wiki.douglasqsantos.com.br/doku.php/confinicialsqueeze_en para que não falte nenhum pacote ou configuração.

Vamos atualizar os repositórios e fazer um upgrade do sistema

aptitude update && aptitude dist-upgrade -y

Agora vamos instalar o Java

apt-get install sun-java6-jdk openjdk-6-jdk -y

Temos que alterar qual java que vai ser usado

update-alternatives --config java
#agora temos que selecionar /usr/lib/jvm/java-6-sun/jre/bin/java

Agora vamos obter o tomcat e vamos instalar ele

cd /opt
wget -c http://wiki.douglasqsantos.com.br/Downloads/apache/apache-tomcat-6.0.35.tar.gz
tar -xzvf apache-tomcat-6.0.35.tar.gz
mv apache-tomcat-6.0.35 tomcat
rm -rf apache-tomcat-6.0.35.tar.gz 

Vamos criar o script de incialização do tomcat

vim /etc/init.d/tomcat
#!/bin/bash
### BEGIN INIT INFO
# Provides:             tomcat
# Required-Start:       $remote_fs $syslog
# Required-Stop:        $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Apache Tomcat
### END INIT INFO

GREY="\033[01;30m" RED="\033[01;31m" GREEN="\033[01;32m" YELLOW="\033[01;33m"
BLUE="\033[01;34m" PURPLE="\033[01;35m" CYAN="\033[01;36m" WHITE="\033[01;37m"
CLOSE="\033[m"

start(){
echo -e "${GREEN}INICIANDO TOMCAT${CLOSE}"
/bin/sh /opt/tomcat/bin/startup.sh
echo -e "${GREEN}TOMCAT INICIADO${CLOSE}"
}

stop (){
echo -e "${RED}PARANDO TOMCAT${CLOSE}"
/bin/sh /opt/tomcat/bin/shutdown.sh
echo -e "${RED}TOMCAT PARADO${CLOSE}"
}

case "$1" in
start)
start;;

stop)
stop;;

restart)
stop
start
;;

*)
echo -e "${RED}COMANDO INVALIDO${CLOSE}"
;;
esac

exit 0

Vamos acertar a permissão do script

chmod +x /etc/init.d/tomcat

Agora vamos colocar esse script na inicialização do sistema

insserv -f -v tomcat

Agora vamos acertar o usuario do tomcat

vim /opt/tomcat/conf/tomcat-users.xml
<tomcat-users>
[...]
<role rolename="manager"/>
<role rolename="admin"/>
<user username="douglas" password="doug123" roles="manager,admin"/>
[...]
</tomcat-users>

Agora vamos reiniciar o tomcat

/etc/init.d/tomcat restart

Agora vamos checar a configuração

nmap -sS localhost -T4

Starting Nmap 5.21 ( http://nmap.org ) at 2011-10-01 19:54 BRT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000040s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
111/tcp  open  rpcbind
631/tcp  open  ipp
8009/tcp open  ajp13
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

Vamos acertar os diretórios para o nosso site

mkdir -p /var/www/tomcat.douglasqsantos.com.br
mkdir -p /var/www/tomcat.douglasqsantos.com.br/htdocs
mkdir -p /var/www/tomcat.douglasqsantos.com.br/logs

Configurando o virtualhost para o tomcat se você não tiver mais um servidor web trabalhando pode musar a porta padrão do tomcat de 8080 para a porta 80

vim /opt/tomcat/conf/server.xml
[...]

<!-- Opcional -->
[...]
<Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="443" />

[...]
<Connector port="8009" protocol="AJP/1.3" redirectPort="443" />

<!-- Criação do virtual host -->
<Engine name="Catalina" defaultHost="tomcat.douglasqsantos.com.br">
[...]
<!-- tomcat.douglasqsantos.com.br -->
<Host name="tomcat.douglasqsantos.com.br" appBase="/var/www/tomcat.douglasqsantos.com.br" unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="htdocs" debug="0" reloadable="true"/>
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/www/tomcat.douglasqsantos.com.br/logs"  prefix="tomcat_access_" suffix=".log" pattern="common" resolveHosts="false"/>
</Host>
[...]
</Engine>

Agora vamos acertar mais algumas configurações no tomcat

mkdir -p /opt/tomcat/conf/Catalina/tomcat.douglasqsantos.com.br
cp /opt/tomcat/conf/Catalina/localhost/* /opt/tomcat/conf/Catalina/tomcat.douglasqsantos.com.br

Agora vamos criar uma página de teste

vi /var/www/tomcat.douglasqsantos.com.br/htdocs/index.jsp
<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <h1>Hello World</h1>
        Today is: <%= new java.util.Date().toString() %>
    </body>
</html>

Agora é so reiniciar o tomcat

/etc/init.d/tomcat restart

Agora para testar você pode acessar em http://tomcat.douglasqsantos.com.br se você mudou a porta de 8080 para 80 senão acesse em http://tomcat.douglasqsantos.com.br:8080 se ficou a porta padrão

Opcional Gerar a chave de criptografia para trabalhar com https

mkdir /etc/ssl/tomcat
keytool -genkeykeytool -genkey -alias tomcat -keyalg RSA -keystore /etc/ssl/tomcat/key.jks
Enter keystore password:  doug123
Re-enter new password: doug123
What is your first and last name?
  [Unknown]:  tomcat.douglasqsantos.com.br
What is the name of your organizational unit?
  [Unknown]:  Douglas 
What is the name of your organization?
  [Unknown]:  Douglas
What is the name of your City or Locality?
  [Unknown]:  Curitiba
What is the name of your State or Province?
  [Unknown]:  Parana
What is the two-letter country code for this unit?
  [Unknown]:  BR
Is CN=tomcat.douglasqsantos.com.br, OU="Douglas ", O=Douglas, L=Curitiba, ST=Parana, C=BR correct?
  [no]:  yes
Enter key password for <tomcat>
  (RETURN if same as keystore password):  doug123
Re-enter new password: doug123

Agora vamos acertar a configuração do tomcat para trabalhar com https

vim /opt/tomcat/conf/server.xml
[...]
   <Connector port="80" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="443" />
[...]
<!--  Insira essas linhas abaixo -->
    <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"   
               maxThreads="150" scheme="https" secure="true"  
        keystoreFile="/etc/ssl/tomcat/key.jks" keystorePass="doug123"  
               clientAuth="false" sslProtocol="TLS" />  

Agora vamos reiniciar o tomcat

/etc/init.d/tomcat restart

Para testar acess https://tomcat.douglasqsantos.com.br

Se gerarmos as chaves como as chaves do apache podemos utilizar as seguintes entradas em server.xml

vim /opt/tomcat/conf/server.xml
[...]
<Connector 
           port="8443" maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
           SSLCertificateFile="/usr/local/ssl/server.crt" 
           SSLCertificateKeyFile="/usr/local/ssl/server.pem"
           clientAuth="optional" SSLProtocol="TLSv1"
/>

Referências