Desenvolvimento - Java
Implementando Servidor Web Java com Tomcat no Linux
Este documento tem como propósito explicar todos os processos de instalação e configuração do Tomcat no Linux, bem como explicar alguns conceitos de manipulação do ambiente Java no Linux. Com este documento usuários e profissionais da área de TI terão condições de implementar soluções para aplicações Java que utilizam da web para o seu pleno funcionamento.
por José Cleydson Ferreira da SilvaImagem customizada por Beatriz Ansani
Sumário
1. Introdução
2. Configurando ambiente Java no Sistema Operacional Linux
3. Procedimentos para a instalação do Tomcat
4. Diretório e subdiretórios do Tomcat
5. Procedimentos de configuração do Tomcat
5.1 Configurando usuários
5.2 Configurando o servidor
5.3 Configurando o contexto
5.4 Configurações fundamentais
1. Introdução
A tecnologia JavaTM há algum tempo tem sido a principal escolha do mercado de TI para o desenvolvimento de sistemas distribuídos.
Segundo a empresa TIOBE Software, em sua pesquisa para acompanhar as linguagens de programação no mercado, designando o índice TIOBE (pesquisa), de Novembro de 2009, o Java ainda é a linguagem mais popular para o desenvolvimento de sistemas.
Java é uma plataforma rica, que permite o desenvolvimento de aplicações para dispositivos móveis, bem como, celulares e PDAs, até aplicações corporativas complexas, baseadas em web services, passando ainda por aplicações desktop e discos Blu-ray.
A tecnologia JavaTM é dividida em seguimentos: JSE (Java Standard Edition) , que é uma versão padrão do java utilizado na programação de aplicações para desktop, JEE (Java Enterprise Edition) fortemente voltada para aplicações web e aplicações distribuídas e JME (Java Micro Editon) para computadores com pouco recurso computacional, geralmente utilizada em dispositivos móveis. O JEE possui, para o desenvolvimento de sistemas corporativos, APIs (Interface de Programação de Aplicativos), que possibilitam seu uso por meio da web. Considerando esse contexto, é necessário um software que permita que a aplicação web seja executada. Um dos softwares mais usados para esse fim é o Apache Tomcat. Seu desenvolvimento está sob a responsabilidade da Apache Software Foundation, que o disponibiliza como Software Livre e de Código Aberto.
2. Configurando ambiente Java no Sistema Operacional Linux
Para que os programas javac (responsável por compilar a aplicação) e java (responsável por executar a aplicação) sejam reconhecidos pelo shell, é necessário que a variável de ambiente $PATH seja modificada. Além disso, também deve ser definida a variável de ambiente $JAVA_HOME, que deve apontar para o diretório onde o JDK foi instalado. Para isso, devem ser adicionadas as seguintes linhas ao arquivo bash.bashrc, (lembrando que o local de instalação do JDK pode variar, como no exemplo abaixo):
Exemplo 1
export JAVA_HOME=/opt/java export PATH=/opt/java/bin:$PATH |
O pacote de instalação da Máquina Virtual Java está disponível no site http://java.sun.com/javase/downloads/index.jsp. Há dois tipos de arquivos binários, um com extensão rpm.bin para distribuições Linux derivadas do Red Hat, outro com extensão .bin para as demais distribuições.
Após fazer o download, faremos o processo de instalação do pacote. Para padronizar o processo de instalação usaremos o diretório /opt. Usaremos esse diretório com o intuito de centralizar somente um diretório para o java no sistema, uma vez que ao instalá-lo poderíamos adicioná-lo ao diretório /usr/bin - mas caso haja necessidade de atualização de versão, acrescentar novas bibliotecas ou fazer backup, o diretório /opt se tornará mais acessível.
Para iniciar o processo de instalação, copie o arquivo jdk-6u13-linux-i586.bin para o diretório /opt, a execução do mesmo se dará pelo comando sh seguido do nome do arquivo. Após a compilação, um subdiretório será gerado no diretório corrente com o mesmo nome do arquivo binário, portanto, renomeie a pasta para o nome “java” e, em seguida, defina no PATH o diretório no qual a pasta renomeada "java" está; esse processo não é uma convenção, é somente uma forma de padronização de instalação. No quadro 1 temos o passo-a-passo para a instalação.
Quadro 1
Comandos executados no terminal
# cp jdk-6u13-linux-i586.bin /opt/
//Executar o arquivo # sh jdk-6u13-linux-i586.bin
//Renomear diretório # mv jdk1.6.0_13 java
//As duas linhas abaixo devem ser
acrescentadas no arquivo bash.bashrc export JAVA_HOME=/opt/java export PATH=/opt/java/bin:$PATH
//Testando variáveis de ambiente # echo $JAVA_HOME # echo $PATH |
É importante testar a variável de ambiente após defini-la, pois ela só é reconhecida após sair da sessão atual. Em seguida, ao abrir uma nova sessão, podemos usar o comando echo nas variáveis de ambiente. Desta maneira padronizada, seu ambiente Java está pronto para ser usado.
3. Procedimentos para a instalação do Tomcat
O Tomcat é um Servidor Web Java, capaz de processar aplicações java servelets, que são responsáveis por gerenciar dinamicamente requisições de pedido e resposta, que, em muitos casos, são consideradas extensões para Servidores Web Java. O Tomcat possui suas características próprias de servidores de aplicações, porém não dá suporte EJB - Enterprise JavaBeans - para aplicações distribuídas.
Sua versão atual é a 6.0.20, lançada em 30 de Junho de
2008, pela Apache Software Foundation, que atualmente mantém o projeto. Pode-se
fazer o download do Apache Tomcat no site www.tomcat.apache.org, no menu
download ou utilizar o comando wget como mostrado no quadro 2, que
detalha todo o processo de instalação.
Após ter feito o download, é necessário descompactar o arquivo no diretório
em que se irá trabalhar, ou seja, um diretório padrão que neste caso será o
/opt, como fizemos na instalação do java. Após descompactá-lo, para padronizar
a instalação, renomeie o diretório que foi criado para o nome tomcat6. O
diretório /opt/tomcat6 consiste em diversos subdiretórios, que contêm arquivos
binários, bibliotecas, logs, subdiretórios das aplicações e arquivos de
configurações.
Por padrão, o daemon de inicialização está no diretório /bin com o nome catalina.sh. Como estamos padronizando a instalação, teremos que criar um script para que, ao inicializar o sistema operacional, o serviço HTTP na porta 8080 seja inicializado. O quadro 2 mostra a forma de instalação do Tomcat.
Quadro 2
Comandos para a instalação do Tomcat // Entrar no diretório /opt # cd /opt
//Fazer download dentro # wget http://linorg.usp.br/apache/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
// Descompactar arquivo # tar -xvzfj apache-tomcat-6.0.20.tar.gz
// Renomear a pasta de apache-tomcat-6.0.20 para tomcat6 ou tomcat # mv apache-tomcat-6.0.20 tomcat6
// Iniciar o tomcat /opt/tomcat/bin/catalina.sh #sh /opt/tomcat6/bin/catalina.sh start
//Testar tomcat (teste de funcionamento) #http://localhost:8080/
|
É necessária a criação de um script para a inicialização do programa, quando o sistema operacional for inicializado. Este script deverá permanecer dentro do diretório /etc/init.d, onde será criado um link nativo para todos os diretórios da runlevel de inicialização. Também poderá ser colocado na inicialização padrão.
Para saber a runlevel padrão que o sistema está utilizando, basta executar o comando runlevel no terminal, ou caso queira adicioná-lo em todos os diretórios de inicialização, usa-se o comando update-rc.d.
Para que não seja necessário iniciar o tomcat todas as vezes que desligar ou reiniciar o computador, foi elaborado o seguinte script para inicia-lo todas as vezes que esse fato ocorrer:
Quadro 3
Comando para script de inicialização do Tomcat //criar um arquivo no /etc/init.d/ #touch tomcat
//Adicionar o texto abaixo #!/bin/sh echo Inicializa tomcat export JAVA_HOME=/opt/java /opt/tomcat6/bin/catalina.sh start
//Mudar a permissão de execução # chmod +x tomcat
//Adicionar o script na runlevel do sistema #update-rc.d tomcat defaults 99
//Adicionar o script na runlevel padrão (No Debian, Ubuntu) #ln -n tomcat /etc/rc2.d/S99tomcat |
4. Diretório e subdiretórios do Tomcat
Assim como os diversos softwares que possuem um arquivo de configuração, não há diferença com o Tomcat. Por padrão, os arquivos de configuração do Sistema Operacional Linux estão alocados em um único diretório que contém subdiretórios de cada programa, que de fato é o /etc. Um exemplo de subdiretório clássico e conhecido em distribuições derivadas do Debian é o /etc/apache2/, diferente das distribuições derivadas do Red Hat que se encontram em /etc/httpd.conf.
Conforme o padrão de instalação que usamos, o diretório /opt/tomcat tornou-se um local onde concentram-se todos os seus subdiretórios e arquivos, podendo assim proporcionar ao administrador do sistema uma melhor manipulação do mesmo em relação ao software que usa diversos subdiretórios do sistema. As vantagens desse sistema podem consistir em não somente facilitar para o usuário mas em outras rotinas diárias, como backup e centralização dos arquivos e diretórios que por sua vez poderiam estar em uma partição separada.
No diretório /opt/tomcat/ estão todos os subdiretórios necessários para os seu funcionamento; abaixo há uma breve explicação:
• /bin
Neste local encontram-se os arquivos binários do sistema, bem como o arquivo que permite parar e inicializar o sistema, chamado catalina.sh. Para executá-lo basta adicionar 2 parâmetros, um antes do nome do arquivo e outro indicando qual é a ação a ser realizada, se pára o serviço ou o inicia-o, conforme o comando: sh catalina.sh start.
• /lib
Todas as bibliotecas estão armazenadas neste local, podendo ser as bibliotecas das aplicações que são desenvolvidas ou bibliotecas do Tomcat, incluindo drive JDBC para conexão com banco de dados.
• /logs
O apache Tomcat registra todas as ações e execuções das aplicações. Neste diretório estão armazenados informações de logs, bem como, execução das aplicações, instalação, erros de acesso, requisição de conexão e entre outros.
• /temp
Consiste em um subdiretório para alocar uso de arquivos temporários das aplicações.
• /webapps
Considerando o clássico /var/www que o apache utiliza, o subdiretório /webapps possui o mesmo fundamento: Armazenar as aplicações que serão executadas pelo Tomcat. Por padrão, dentro do mesmo, há arquivos do próprio programa e alguns exemplos de jsp e servelets. Caso queira testá-los, acesse www.localhost:8080.
• /conf
Esse diretório, em especial, é o mais usado, pois nele se encontram os arquivos de configuração, bem como configuração de usuário, do servidor e do componentes que serão executados. Cada aplicação terá um arquivo de configuração que por sua vez determinará a politica de execução.
5. Procedimentos de configuração do Tomcat
5.1 Configurando usuários
Um dos primeiros procedimentos a serem tomados na configuração do programa é a definição de usuários, pois a administração do sistema ou programa dependerá desse ajuste para instalar qualquer sistema ou programa que será executado pelo Tomcat. Embora ao testar o seu funcionamento e perceber que o Tomcat está funcionando, como mostra a última linha do quadro 2 (www.localhost:8080), é de extrema importância a definição da função de cada usuário.
Basicamente, os usuários podem desempenhar diferentes papéis, como administrador do Tomcat, gerente e usuário comum, que serão usados pelas aplicações Java. O arquivo de configuração encontra-se em /opt/tomcat/conf, conforme o padrão de instalação deste documento; caso o tenha instalado pelo mirror padrão de seus sistema operacional, podendo ser da linha Debian, o diretório será /etc/tomcat6. O arquivo está nomeado como tomcat-users.xml.
Sua configuração consiste em definições de usuário, senha e qual papel será atribuído para este usuário. Como já mencionado os papéis, ou seja, a função que cada um pode desenvolver, é atribuída pelo parâmetro rolename dentro da tag <role>, que, por sua vez, se encontra dentro da tag <tomcat-users>; por padrão, aconselha-se definir primeiramente os papéis e, em seguida, os usuários.
A tag <user> define os usuários, senhas e função, com os parâmetros username e password, como visto no exemplo 2.
Exemplo 2
Modelo de arquivo de configuração de usuário
|
Os usuários que contém papel manager possuem privilégios para realizar ações juntamente com o Tomcat, como iniciar aplicações e configurações nos diversos arquivos de configuração e fazer a implantação das aplicações no servidor. As funções (papéis) dos usuários Tomcat e role1 são padrões do sistema, - se por ventura não as encontrar ao abrir o arquivo, adicione-as. Para se orientar, use o exemplo 2.
5.2 Configurando o servidor
Existem diversas formas de configurar o servidor. Embora seja interessante ou até mesmo necessário que saibamos todas as opções de configuração, não é o objetivo deste documento apresentar todas as opções, mas sim uma configuração básica essencial para o funcionamento.
O arquivo de configuração do servidor encontra-se no mesmo diretório da configuração do usuário. O arquivo referente à configuração do servidor chama-se server.xml; nele pode-se configurar quais portas serão utilizadas para a conexão, o protocolo e o redirecionamento de portas, dentre outros. Essas opções, por padrão, já vêm configuradas.
Quando usamos uma aplicação compactada, ou seja, em arquivo.war, é necessário fazer a configuração da tag <host> para que ela não seja descompactada ao ser instalada. Com isso é preciso configurar o atributo unpackWARs para receber o valor false; assim, ao ser reconhecida pelo programa (Tomcat) ela não será descompactada. O item 1 do exemplo 3 exibe a configuração desta tag. A utilização da extensão do arquivo war não é uma convenção - você poderá utilizá-la em modo descompactado, porém pode estar exposto a alguns erros. Caso escolha utilizá-la como subdiretório, poderá copiar o diretório da aplicação (contexto) para o diretório /opt/tomcat6/webapps.
Na tag <connector> podemos configurar a porta de conexão, que por padrão é a porta 8080, juntamente com o protocolo, tempo de conexão com servidor e redirecionamento de portas, dentre outras opções. Existem basicamente três tipos de conectores: o HTTP, que responde a requisições na porta 8080, o AJP, que abre conexão com o apache web server na porta 8009 e o HTTPS, que se refere à conexão segura utilizando certificado digital.
Pode-se configurar o servidor para fazer autenticação
em um servidor LDAP, bastando, para isto, configurar o server.xml. Dentro da
tag <Engine> pode-se configurar a tag <Realm>, sendo necessário
acrescentar atributos relacionados com a url de conexão do servidor e
informações de usuários, bem como usuário, papel do usuário, dentre outros.
Caso haja necessidade de configuração para autenticação com LDAP, o
trecho 3 do exemplo 3 pode ser usado.
Exemplo 3
Trechos de configuração do arquivo server.xml
|
5.3 Configurando o contexto
Toda aplicação desenvolvida a ser instalada no Tomcat necessita de uma configuração em um arquivo web.xml, que se encontra dentro do subdiretório /WEB-INF da aplicação. Podemos configurar dentro desse arquivo as descrições dos aplicativos e sua exibição, bem como o path, Display Name, sessões, dentre outras configurações.
A configuração deste arquivo pode ser feita manualmente ou automaticamente, se usada a aplicação manager web do Tomcat (http://localhost:8080/manager/html). Geralmente, a instalação automática, por padrão, poderá fazer algum tipo de configuração; mesmo tendo isso a favor, pode-se configurá-lo conforme as indicações. Ao desenvolver a aplicação, é necessário criar um arquivo web.xml dentro do subdiretório /WEB-INF da aplicação. Ele poderá possuir o mínimo de configuração, contendo somente o tipo de charset, podendo ser UTF-8, que é padrão do Sistema Operacional Linux.
Para melhorar a configuração da aplicação, deve-se abrir uma tag <web-app> para colocar os atributos que poderão configurá-la, pois, por padrão, ao colocar uma aplicação no diretório /opt/tomcat6/webapps, o Tomcat define o path, sendo preciso somente configurar a exibição do nome da aplicação que, para isso, configura o atributo <display-name> apontando o nome e uma descrição da aplicação com o atributo <description>. Veja no exemplo 4 um modelo de configuração deste arquivo e na figura abaixo o resultado da configuração.
Exemplo 4
Configuração do web.xml
|
5.4 Configurações fundamentais
Outra
configuração importante é a configuração do uso de memoria RAM da máquina
virtual no Tomcat (que como sabemos, é
inteiramente desenvolvido em Java) sua interpretação se dá por meio da máquina
virtual Java, que, por sua vez, fará o uso da memória exigindo um valor mínimo
de 64MB por padrão - mas caso essa aplicação realize um número elevado de
acessos a um banco de dados, poderá comprometer o serviço fazendo com que o
processamento do servidor atinja o máximo do seu uso. Quando esse fato chega a
acontecer, geralmente ocorrem erros de interpretação da maquina virtual java e
perda do PATH, ocorrendo erros de interpretação do $JAVA_HOME - Variável de
ambiente -. Para isso, precisamos configurar a JVM (Maquina Virtual).
Essa configuração deve ser feita no arquivo catalina.sh, que se
encontra no diretório /opt/tomCat6/bin. A sintaxe dos comandos a serem
acrescentados neste arquivo estão mencionados no exemplo 5 item 1. O parâmetro
-Xmx768M indica a quantidade de memória que a JVM (Máquina Virtual Java) irá
usar. O parâmetro -XX:MaxPermSize=256M indicará ao Tomcat a quantidade de
memória RAM disponível a ele e os outros são para configuração de hora,
linguagem e referência de fuso-horário. É importante lembrar que essa sintaxe
deve ser adicionada após os comentários iniciais do arquivo, antecedendo os
primeiros comandos do script.
Essa configuração refere-se a uma quantidade de 1GB no total, que um computador esteja porventura usando; caso tenha mais que essa quantidade ou menos, siga a seguinte orientação: usar 3/4 da capacidade da memória RAM para o parâmetro -Xmx768M e 1/4 para -XX:MaxPermSize=256M.
Outra
observação importante que precisa ser colocada é a ausência do drive JDBC
dentro da pasta lib do Tomcat. Caso deixe de colocar o drive nesta pasta, sua
aplicação não conseguirá fazer uma consulta ou rotina na base de dados. O drive
JDBC é responsável por todas as rotinas de interação com bases de dados
relacionais.
Cada Sistema de Gerenciamento de Bando de Dados - SGBD - possui um drive
JDBC que pode ser encontrado no site oficial da Sun
(http://devapp.sun.com/product/jdbc/drivers) ou no próprio site do SGBD que
está usando.
Os arquivos de configuração que ajudaram na elaboração deste documento estão disponíveis no site www.vivaolinux.com, na sessão conf. Para melhor acompanhamento na elaboração ou no teste de configuração os arquivos podem ser consultados ou baixados no seguinte link:
• http://www.vivaolinux.com.br/conf/userview.php?login=cleysinhonv
Caso tenha necessidade de uma aplicação JSP para testar os procedimentos descritos neste documento, também está disponível no site www.vivaolinux.com.br, uma aplicação simples desenvolvida por Hermes Júnior - hnpjunior - para teste deste documento. O download pode ser feito no link abaixo.
• http://www.vivaolinux.com.br/script/Aplicacao-simples-JSTL
Ao fazer o download do arquivo sistemaExibeJSTL.tar.gz, deverá copia-lo para o diretório /opt/tomcat6/webapps e descompactá-lo, usando o comando:
# tar -xvzf sistemaExibeJSTL.tar.gz |
Para acessar a aplicação, direcione o navegador para a seguinte
url:
http://localhost:8080/sistemaExibeJSTL/paginas |
No link abaixo está uma screenchot do funcionamento da aplicação
• http://www.vivaolinux.com.br/screenshot/Gnome-tomCat-manager-web/
Exemplo 5
Configurações gerais
|
Considerações finais
Sobre o autor
José Cleydson Ferreira da Silva, graduando em Sistemas de Informação - Faculdade de Viçosa-MG. Usuário do Linux por filosofia, acredita que o Software Livre e de Código Aberto podem mudar a forma e o modelo de mercado atual.
Contatos
Email, gtalk: cleysinhonv@gmail.com
Twitter: @cleysinhonv
Web site: www.cleysinho.blogspot.com
Web site: www.gnu-lia.org
Outros artigos: http://www.vivaolinux.com.br/artigos/userview.php?login=cleysinhonv
Referência Bibliografica
• http://tomcat.apache.org/
• http://pt.wikipedia.org/wiki/Apache_Tomcat
• http://luizgustavoss.wordpress.com/2009/02/06/visao-geral-da-tecnologia-java/
• http://www.tiobe.com