Instalando o Tomcat no Debian Sarge

02/12/2007 – 18:53:20

O objetivo desse artigo é explicar, passo a passo, como proceder para instalar o Apache Tomcat 5.5 em uma instalação do Debian Sarge.

Este artigo é mais direto do que instrutivo. Ao fim dele você terá o Tomcat instalado no Debian Sarge, rodando com a JVM da Sun, mas não tenho a pretensão de explicar os motivos de cada um dos passos.

Espero na sequência escrever um artigo ensinando como utilizar o Apache 2 na frente do Tomcat, como acontece nos ambientes mais sérios de produção (o Apache responde às requisições de arquivos estáticos passando a responsabilidade para o Tomcat quando existir uma requisição a um conteúdo dinâmico (gerado por servlets, etc).

O que é necessário para começar

Para começar você deve ter um Debian Sarge instalado com o servidor web Apache 2, ou apenas um Debian Sarge caso você não tenha interesse em ter um servidor web à frente do servidor de aplicação (Tomcat).

Se você usa Windows e não quer ter muito trabalho fazendo uma instalação de Linux, uma boa opção é baixar o VMWare Player (para baixar clique aqui e depois clique no botão .Download VMware Player.) e uma das imagens do VMWare de Debian Sarge disponibilizadas (você pode baixá-la aqui).

Instalação do JDK

Baixando o JDK da Sun

Devido às questões de licenciamento, não existe uma maneira direta de obter o JDK da Sun com um .apt-get. ou similar no Debian. Então a opção é baixar a versão apropriada para Linux no site da Sun (clique aqui e depois siga o link .JDK 5.0 Update 11.). O arquivo utilizado neste artigo é o jdk-1_5_0_11-linux-i586.bin.

Instalando o JDK da Sun

Após baixar o arquivo basta executá-lo, ler a licença e digitar .yes. caso você concorde com ela. A partir daí os arquivos serão extraídos para o seu disco (note que para executar o arquivo você precisa, antes de tudo, setar as devidas permissões).

Ao final da operação vamos mover os arquivos para um local mais apropriado, o diretório /opt/. E para facilitar o trabalho na hora de atualizar os arquivos do JDK vamos criar, também, um link simbólico para o diretório:

chmod 755 jdk-1_5_0_11-linux-i586.bin
mv jdk1.5.0_11/ /opt/
ln -s /opt/jdk1.5.0_11 /opt/java

Instalação do Tomcat

Baixando e instalando o Tomcat

Você pode baixar o arquivo .zip com os arquivos binários do Tomcat no endereço http://tomcat.apache.org/download-55.cgi . Aproveite para baixar a aplicação de administração do Tomcat, pois ela certamente lhe será util no futuro.

Após baixar o arquivo vamos descompactá-lo, movê-lo para o diretório /opt, criar um link simbólico para o diretório (assim podemos trocar a versão do Tomcat sem maiores dores de cabeça) e setar as permissões para os scripts do Tomcat.

unzip apache-tomcat-5.5.23.zip
mv apache-tomcat-5.5.23/ /opt/
ln -s /opt/apache-tomcat-5.5.23 /opt/tomcat
chmod 755 /opt/tomcat/bin/*.sh

Preparando o ambiente para rodar o Tomcat

Vamos aproveitar para preparar o ambiente de forma a rodar o Tomcat com um usuário não privilegiado.

A idéia aqui é criar um grupo chamado .webusers. e um usuário .tomcat., associar esse novo usuário ao grupo recém-criado e sempre subir o Tomcat utilizando esse usuário. Adicionalmente precisamos dar as devidas permissões no diretório do Tomcat ao novo usuário.

groupadd webusers
useradd -g webusers -s /dev/null tomcat
chown -R tomcat:webusers /opt/tomcat

Vamos criar, também, um script para subir e derrubar o servidor de aplicações com o devido usuário.

Não irei dar maiores explicações sobre o conteúdo do script, até mesmo porque o original não é de minha autoria. Apenas fiz as alterações necessárias para que funcionasse no ambiente descrito nesse artigo.

Crie um arquivo /opt/tomcat/bin/tomcat.sh com o conteúdo abaixo:

#! /bin/sh -e
#
# /etc/init.d/tomcat -- startup script for the Tomcat 5.0 servlet engine
#
# Written by Miquel van Smoorenburg .
# Modified for Debian GNU/Linux by Ian Murdock .
# Modified for Tomcat by Stefan Gybas .
# Modified by Rafael Cotta

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=tomcat
DESC="Tomcat 5.5 servlet engine"
CATALINA_HOME=/opt/$NAME
#DAEMON=/usr/bin/$NAME
DAEMON=$CATALINA_HOME/bin/catalina.sh

# The following variables can be overwritten in /etc/default/tomcat5

# Run Tomcat 5.5 as this user ID (default: tomcat5)
# Set this to an empty string to prevent Tomcat from starting automatically
TOMCAT5_USER=tomcat

# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
# defined in /etc/default/tomcat5)
JDK_DIRS="/opt/java"
JAVA_HOME="/opt/java"

# Arguments to pass to the Java virtual machine (JVM)
#CATALINA_OPTS="-Djavax.net.ssl.trustStore=/etc/tomcat/truststore.aaitest.jks"

# Use the Java security manager? (yes/no)
#TOMCAT5_SECURITY="no"

# End of variables that can be overwritten in /etc/default/tomcat5

# overwrite settings from default file
#if [ -f /etc/default/tomcat5 ]; then
#        . /etc/default/tomcat5
#fi

test -f $DAEMON || exit 0

# Look for the right JVM to use
for jdir in $JDK_DIRS; do
        if [ -d "$jdir" -a -z "${JAVA_HOME}" ]; then
                JAVA_HOME="$jdir"
        fi
done
export JAVA_HOME
export CATALINA_OPTS

# Define other required variables
PIDFILE="/var/run/$NAME.pid"
LOGDIR="$CATALINA_HOME/logs"
WEBAPPDIR="$CATALINA_HOME/webapps"
STARTUP_OPTS=""
if [ "$TOMCAT5_SECURITY" = "yes" ]; then
        STARTUP_OPTS="-security"
fi

# CATALINA_PID for catalina.sh
export CATALINA_PID="$PIDFILE"

case "$1" in
  start)
        if [ -z "$TOMCAT5_USER" ]; then
            echo "Not starting $DESC as configured (TOMCAT5_USER is empty in"
            echo "/etc/default/tomcat5)."
            exit 0
        fi
        if [ -z "$JAVA_HOME" ]; then
            echo "Could not start $DESC because no Java Development Kit"
            echo "(JDK) was found. Please download and install JDK 1.3 or higher and set"
            echo "JAVA_HOME in /etc/default/tomcat5 to the JDK's installation directory."
            exit 0
        fi

        echo -n "Starting $DESC using Java from $JAVA_HOME: "

        # Remove dangling webapp symlinks
        for webapp in "$WEBAPPDIR"/*; do
            if [ "$webapp" != "$WEBAPPDIR/*" -a ! -e "$webapp" ]; then
                echo "Removing obsolete webapp $webapp" >>"$LOGDIR/catalina.out"
                rm "$webapp" >> "$LOGDIR/catalina.out" 2>&1 || true
            fi
        done

        # Symlink new webapps from /usr/share/java/webapps
        for webapp in /usr/share/java/webapps/*; do
            if [ -e "$webapp" -a ! -e "$WEBAPPDIR/`basename $webapp`" \
                        -a ! -e "$WEBAPPDIR/`basename $webapp .war`" ]; then
                echo "Symlinking new webapp $webapp" >>"$LOGDIR/catalina.out"
                ln -s "$webapp" "$WEBAPPDIR" || true
            fi
        done

        # Create catalina.policy (for the security manager)
        # rm -f /var/lib/tomcat/catalina.policy
        # cat /etc/tomcat/policy.d/*.policy >/var/lib/tomcat/catalina.policy

        mkdir -p "$CATALINA_HOME/work/_temp"
        touch "$PIDFILE" "$LOGDIR/catalina.out" || true
        chown --dereference "$TOMCAT5_USER" "$PIDFILE" "$LOGDIR" \
            "$LOGDIR/catalina.out" "$CATALINA_HOME/work" \
            "$CATALINA_HOME/temp" || true
        if start-stop-daemon --test --start --pidfile "$PIDFILE" \
                --user $TOMCAT5_USER --startas "$DAEMON" >/dev/null; then
                # -p preserves the environment (for $JAVA_HOME etc.)
                # -s is required because tomcat5's login shell is /bin/false
                su -p -s /bin/sh $TOMCAT5_USER \
                        -c "\"$DAEMON\" start $STARTUP_OPTS" \
                        >>"$LOGDIR/catalina.out" 2>&1
                echo "$NAME."
        else
                echo "(already running)."
        fi
        ;;
  stop)
        echo -n "Stopping $DESC: "
        if start-stop-daemon --test --start --pidfile "$PIDFILE" \
                --user $TOMCAT5_USER --startas "$DAEMON" >/dev/null; then
                echo "(not running)."
        else
                su -p $TOMCAT5_USER -c "\"$DAEMON\" stop" >/dev/null 2>&1 || true
                # Fallback to kill the JVM process in case stopping did not work
                sleep 1
                start-stop-daemon --stop --oknodo --quiet --pidfile "$PIDFILE" \
                        --user "$TOMCAT5_USER"
                rm -f "$PIDFILE"
                echo "$NAME."
        fi
        ;;
  restart|force-reload)
        $0 stop
        sleep 1
        $0 start
        ;;
  *)
        echo "Usage: /etc/init.d/tomcat {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0

Controlando o Tomcat

Finalmente, podemos iniciar o Tomcat com o comando:

/opt/tomcat/bin/tomcat.sh start

E derrubá-lo com o commando:

/opt/tomcat/bin/tomcat.sh stop

Dica: você pode digitar o comando sem nenhuma opção para visualizar todas as opções disponíveis.

Teste o servidor de aplicação acessando o endereço http://SEU_ENDERECO_IP:8080/. Se tudo estiver correto você deverá visualizar a tela de boas-vindas do Tomcat.

Postar um Comentário