Pesquisar neste blog

quarta-feira, 22 de outubro de 2008

Howto - Instalando TomCat com Apache no CentOS

Vou demonstrar abaixo um passo-a-passo de como instalar o TomCat com Apache no CentOS.

Primeiro vamos baixar o pacote jdk direto do site da sim para a nossa distribuição:

Entre no site http://java.sun.com/javase/downloads/index_jdk5.jsp e clique no link abaixo
Get the JDK download

O tamanho do arquivo é de aproximadamente 62Mb.

Ok, então de pois de baixada a nova versão do jdk vamos verificar se nosso centOS possui uma versão antiga instalada:

[root@centos ~]# rpm -qa grep java
java-1.4.2-gcj-compat-1.4.2.0-27jpp

Parece estar instalada uma versão antiga, vamos proceder com a remoção desse pacote para a instalação da nova versão.

[root@centos ~]# yum -y remove java-1.4.2-gcj-compat
Setting up Remove Process
Resolving Dependencies
–> Populating transaction set with selected packages. Please wait.
—> Package java-1.4.2-gcj-compat.noarch 0:1.4.2.0-27jpp set to be erased
–> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Removing:
java-1.4.2-gcj-compat noarch 1.4.2.0-27jpp installed 2.2 k

Transaction Summary
=============================================================================
Install 0 Package(s)
Update 0 Package(s)
Remove 1 Package(s)
Total download size: 0
Downloading Packages:
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Removing : java-1.4.2-gcj-compat ######################### [1/1]
Removed: java-1.4.2-gcj-compat.noarch 0:1.4.2.0-27jpp
Complete!



Ok, após termos removido a versão antiga do pacote jdk vamos instalar a nova que baixamos direto do site da Sun.


[root@centos ~]# chmod +x jdk-6u3-linux-i586-rpm.bin

[root@centos ~]# ./jdk-6u3-linux-i586-rpm.bin


Aceite a licença para proceguir com a instalação


Depois de descompactado e instado o jdk, iremos editar o arquivo /etc/profile para informar ao sistema onde o java está instalado.


[root@centos ~]# vim /etc/profile


Vamos adicionar as seguintes linhas:


export JAVA_HOME=/usr/java/jdk1.6.0_03
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar


Agora, depois de editado o arquivo profile, vamos executar o comando source abaixo. Ele vai ler e executar todos os comandos do arquivo referenciado como argumento em um ambiente shell.


[root@centos ~]# source /etc/profile


Agora vamos testar o java criando um simples script para mostrar uma mensagem na tela:


[root@centos ~]# vim HelloWorld.java


Vamos adicionar as seguintes linhas ao arquivo:


public class HelloWorld{
public static void main(String[] args) {
System.out.println(”Hello World”);
}
}


OBS: O nome do arquivo deve ser o mesmo nome da public class senão não compila.


[root@centos ~]# javac HelloWorld.java


Após executado o comando acima vai ser criado um outro arquivo com a extensão .class
agora vamos rodar o arquivo pra ver:


[root@centos ~]# java HelloWorld

A saída do comando acima será Hello World


Feito o teste e tudo funcionando vamos ao que interessa, vamos baixar o TomCat direto do site da Unicamp:

[root@centos ~]# wget http://ftp.unicamp.br/pub/apache/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz


Depois de baixado o arquivo vamos a descompactação do mesmo:


[root@centos ~]# tar -xvzf apache-tomcat-6.0.18.tar.gz
[root@centos ~]# mv apache-tomcat-6.0.18 /usr/local/tomcat


Depois de movida a pasta para o locar que especificamos acima iramos editar novamente o arquivo profile informando e declarando algumas vaiáveis de localização do timcat:


[root@centos ~]# vim /etc/profile


Vamos adicionar as seguintes linhas:


export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=/usr/local/tomcat
export CLASSPATH=$CLASSPATH:$CATALINA_HOME/common/lib



Vamos executar o comando source:


[root@centos ~]# source /etc/profile


Agora iramos criar um arquivo de inicialização para o tomcat:


[root@centos ~]# vim /etc/rc.d/init.d/tomcat


Com o seguinte conteúdo:


#!/bin/bash
#
# Startup script for the tomcat
#
# chkconfig: 345 80 15
# description: Tomcat is a Servlet+JSP Engine.
# Source function library.
. /etc/rc.d/init.d/functions

start(){
if [ -z $(/sbin/pidof java) ]; then
echo “Starting tomcat”
/usr/local/tomcat/bin/startup.sh
touch /var/lock/subsys/tomcat
else
echo “tomcat allready running”
fi
}



stop(){
if [ ! -z $(/sbin/pidof java) ]; then
echo “Shutting down tomcat”
/usr/local/tomcat/bin/shutdown.sh
until [ -z $(/sbin/pidof java) ]; do :; done
rm -f /var/lock/subsys/tomcat
else
echo “tomcat not running”
fi
}



case “$1″ in
start)
start
;;


stop)
stop
;;



restart)
stop
start
;;


status)
/usr/local/tomcat/bin/catalina.sh version
;;

*)

echo “Usage: $0 {startstoprestartstatus}”
esac
exit 0



[root@centos ~]# chmod +x /etc/rc.d/init.d/tomcat


Vamos iniciar o serviço

[root@centos ~]# /etc/rc.d/init.d/tomcat start


Starting tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.6.0_03



Agora vamos configurar o serviço para inicializar automaticamente.


[root@centos ~]# chkconfig –add tomcat
[root@centos ~]# chkconfig tomcat on
[root@centos ~]# chkconfig –list tomcat
tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off


Agora vamos instalar o conector JK2 que faz a integração entre o Tomcat e o Apache


Iremos precisar instalar o pacote httpd-devel


[root@centos ~]# yum -y install httpd-devel


ok, instalado agora vamos baixar o fonte do jakarta-tomcat

[root@centos ~]# wget http://archive.apache.org/dist/jakarta/tomcat-connectors/jk2/source/jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz


Depois de baixado, iremos agora descompactá-lo:


[root@centos ~]# tar -xvzf jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz

Entrar na pasta abaixo informada:

[root@centos ~]# cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/


Antes de começar a configuração e compilação do jakarta vamos precisar dos pacotes de compilação executando o comando abaixo:


[root@centos native2]# yum install gcc gcc-c++ autoconf automake
[root@centos native2]# ./configure –with-apxs2=/usr/sbin/apxs && make
[root@centos native2]# cd ../build/jk2/apache2
[root@centos apache2]# apxs -n jk2 -i mod_jk2.so
[root@centos apache2]# cp ../../../conf/workers2.properties /etc/httpd/conf/
[root@centos apache2]# cd


Vamos agora editar o arquivo de configuração do jakarta:

[root@centos ~]# vim /etc/httpd/conf.d/jk2.conf


adicione a seguinte linha no arquivo

LoadModule jk2_module modules/mod_jk2.so


Agora vamos editar o arquivo

[root@centos ~]# vim /etc/httpd/conf/workers2.properties


e adicionar as seguintes linhas


[uri:/servlets-examples/*]
[uri:/jsp-examples/*]


Abra o arquivo de configuração do apache a adicione as seguintes linhas no fim do arquivo para conclusão da interoperabilidade do apache com o tomcat:

[root@centos ~]# vim /etc/httpd/conf/httpd.conf


JkSet config.file /etc/httpd/conf/workers2.properties



Agora vamos restartar o serviço do apache

[root@centos ~]# service httpd restart


Vamos agora editar o arquivo abaixo:

[root@centos ~]# vim /usr/local/tomcat/conf/server.xml


Mais especificamente na seção
adicione o seguinte bloco:


maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />

Vamos restartar o serviço do tomcat agora:

[root@centos ~]# /etc/init.d/tomcat restart

E vamos aos testes.




PRONTO, SERVIDOR RODANDO TOMCAT INTEGRADO COM APACHE.

Servidor CentOS release 5.2 (Final)






3 comentários:

Antonio Aurelio disse...

Dica extremamente didática. Já insalei o CentOS 5.0 e Oracle 10R2 no meu Notebook, tudo 100%. Irei seguir o seu cookbook (receituario) e colocar o TomCat para testar o ambiente de treis camadas.

Marcos Abadi disse...

Muito obrigado Antonio, qualquer dúvida estou a disposição para o amigo.

Unknown disse...

Muito bom cara... segui o tutorial mas quando subo apache da o seguinte erro:

Iniciando httpd: [Fri Mar 05 19:32:53 2010] [notice] config.update(): done logger
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done config:
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uriMap:
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done shm:
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done workerEnv:
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done lb:lb
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done lb:lb_1
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done channel.socket:localhost:8009
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done channel.socket:localhost:8019
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done channel.un:/opt/33/work/jk2.socket
[Fri Mar 05 19:32:53 2010] [error] env.createBean2(): Factory error creating channel.jni:jni ( channel.jni, jni)
[Fri Mar 05 19:32:53 2010] [error] config.update(): Can't create channel.jni:jni
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done status:
[Fri Mar 05 19:32:53 2010] [error] env.createBean2(): Factory error creating vm: ( vm, )
[Fri Mar 05 19:32:53 2010] [error] config.update(): Can't create vm:
[Fri Mar 05 19:32:53 2010] [error] env.createBean2(): Factory error creating worker.jni:onStartup ( worker.jni, onStartup)
[Fri Mar 05 19:32:53 2010] [error] config.update(): Can't create worker.jni:onStartup
[Fri Mar 05 19:32:53 2010] [error] env.createBean2(): Factory error creating worker.jni:onShutdown ( worker.jni, onShutdown)
[Fri Mar 05 19:32:53 2010] [error] config.update(): Can't create worker.jni:onShutdown
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uri:/jkstatus/*
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uri:127.0.0.1:8003
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uri:127.0.0.1:8003/ex
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uri:/examples
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uri:/examples1/*
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uri:/examples/servlet/*
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uri:/examples/*.jsp
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uri:/examples/*
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uri:/examples/servlet/HelloW
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uri:/servlets-examples/*
[Fri Mar 05 19:32:53 2010] [notice] config.update(): done uri:/jsp-examples/*

Sabe o que pode ser ? Mas a integração funcionou mesmo com o erro.