Problema
Como configurar o Tomcat como serviço no Linux?
Solução/Procedimento
Para facilitar a utilização do Tomcat no Linux, é possível criar um script que reúne em um único arquivo as operações necessárias para utilização do mesmo (start, stop, restart e status). Além do script, também pode-se realizar algumas configurações para se utilizar como um serviço.
Esse artigo, será dividido em três partes: primeiro será exibido uma lista de comandos com ilustrações; em seguida, o código e a explicação do funcionamento do mesmo; e por último será demonstrado como a configuração do serviço é realizada utilizando a biblioteca "chkconfig".
1 - Comandos:
A - Listar comandos do script: "service tomcat"
B - Iniciar serviço do Tomcat: "service tomcat start"
C - Parar serviço do Tomcat: "service tomcat stop"
D - Reiniciar serviço Tomcat: "service tomcat restart"
E - Listar status do serviço: "service tomcat status"
2 - Análise de Código:
Agora que já têm uma visão do funcionamento do script, vamos analisá-lo melhor em código. Deve-se criar um arquivo chamado tomcat na pasta "bin" do Tomcat.
A - Variáveis do serviço
#!/bin/bash # chkconfig: 2345 20 80 # description: Tomcat Server basic start/shutdown script # processname: tomcat #JAVA_HOME=/opt/oobj/aplicativos/jre1.7.0_75 #export JAVA_HOME #PATH=$PATH:$JAVA_HOME/bin #export PATH TOMCAT_HOME=/opt/oobj/aplicativos/tomcat/bin START_TOMCAT=/opt/oobj/aplicativos/tomcat/bin/startup.sh STOP_TOMCAT=/opt/oobj/aplicativos/tomcat/bin/shutdown.sh
No código acima, as variáveis são:
B - Procedimentos de inicialização: "start":
start() { a=`ps -ef |grep java | grep -m 1 "$TOMCAT_HOME" | awk '{ print $15 }'` if [ -n "$a" ]; then echo -e " \033[1;32m Serviço ja em execucao \033[0m" else echo -n "Starting tomcat: " cd $TOMCAT_HOME ${START_TOMCAT} echo "done." fi }
Na variável "a" armazena a informação se o tomcat está ativo ou não. Trata-se de uma consulta pelo serviço, utilizando-se 2 filtros, um pelo "java" e outro pelo caminho de instalação do tomcat "$TOMCAT_HOME". Se houver instância do tomcat ativa, um valor será armazenado, caso contrário, a variável ficará vazia. Uma condição avalia se a variável "a" está vazia ou não, se estiver vazia, uma mensagem de que o serviço já está em execução é exibida na tela; caso contrário, o tomcat é iniciado.
C - Procedimentos de parada: "stop"
stop() { echo -n "Shutting down tomcat: " cd $TOMCAT_HOME ${STOP_TOMCAT} a=`ps -ef |grep java | grep -m 1 "$TOMCAT_HOME" | awk '{ print $2 }'` `kill -9 "$a"` echo -e " \033[1;31m kill PID $a \033[0m" }
O procedimento de parada chama o serviço de "shutdown" do Tomcat para parar o serviço. Visto que o serviço de "shutdown" do Tomcat em alguns momentos não responde, principalmente, quando se inicia e tenta parar no mesmo instante, foi incrementado um "kill" sobre o processo do Tomcat, para caso o "shutdown" falhe. Este procedimento consiste em capturar o PID "variável 'a' ", e executar um "kill" sobre o mesmo.
D - Procedimento para captura e exibição do status do serviço:
status(){ echo "" echo -e "\033[1;50m STATUS SERVICO TOMCAT OOBJ: \033[0m" echo "" STATE=0 STATE=`ps -ef |grep java|grep tomcat|wc -l` echo -e "Servico : \033[1;29m + TOMCAT + \033[0m" if [ "$STATE" -ge "1" ] ; then echo -e " + STATUS: \033[1;32m Rodando \033[0m" else echo -e " + STATUS: \033[1;31m Inativo \033[0m" fi echo "" a=`ps -ef |grep java | grep -m 3 "$TOMCAT_HOME" | awk '{ print $2 }'` echo -e " + PID: \033[1;31m $a \033[0m" echo "" }
Exibe-se a mensagem "STATUS SERVICO TOMCAT OOBJ", que pode ser modificada como desejar. A variável "STATE" recebe o valor "0" (zero), e faz uma busca pelo serviço. Se o serviço estiver ativo, recebe o valor "1" (um) e uma condicional verifica se o valor armazenado é 1, caso seja, exibe que o serviço está "rodando", caso seja 0, exibe a mensagem "inativo". Também foi incrementado a escrita do PID do tomcat junto com o status, com a visão de facilitar a identificação e monitoramento via "top".
E - Captura de comandos dos usuários e execução das ações:
#acoes executadas de acordo com parametros passados via console case "$1" in start) start ;; stop) stop ;; restart) stop sleep 10 start ;; status) status ;; *) echo "Usage: {start|stop|restart|status}" esac
No final do script, há um "case" que captura o comando digitado, e seleciona a ação a ser executada.
F - Script completo:
#!/bin/bash # chkconfig: 234 20 80 # description: Tomcat Server basic start/shutdown script # processname: tomcat #Caso utilize um java diferente do do SO, informar caminho aqui, e exportar a variavel #JAVA_HOME = /opt/jre/ #export JAVA_HOME #Define diretorio do tomcat e scripts de inicio e parada TOMCAT_HOME=/opt/oobj/aplicativos/tomcat START_TOMCAT=$TOMCAT_HOME/bin/startup.sh STOP_TOMCAT=$TOMCAT_HOME/bin/shutdown.sh start() { a=`ps -ef |grep java | grep -m 1 "$TOMCAT_HOME" | awk '{ print $15 }'` if [ -n "$a" ]; then echo -e " \033[1;32m Serviço ja em execucao \033[0m" else echo -n "Starting tomcat: " cd $TOMCAT_HOME ${START_TOMCAT} echo "done." fi } stop() { echo -n "Shutting down tomcat: " cd $TOMCAT_HOME ${STOP_TOMCAT} a=`ps -ef |grep java | grep -m 1 "$TOMCAT_HOME" | awk '{ print $2 }'` `kill -9 "$a"` echo -e " \033[1;31m kill PID $a \033[0m" } status(){ echo "" echo -e "\033[1;50m STATUS SERVIOS TOMCAT OOBJ: \033[0m" echo "" STATE=0 STATE=`ps -ef |grep java|grep tomcat|wc -l` echo -e "Servico : \033[1;29m + TOMCAT + \033[0m" if [ "$STATE" -ge "1" ] ; then echo -e " + STATUS: \033[1;32m Rodando \033[0m" else echo -e " + STATUS: \033[1;31m Inativo \033[0m" fi echo "" a=`ps -ef |grep java | grep -m 3 "$TOMCAT_HOME" | awk '{ print $2 }'` echo -e " + PID: \033[1;31m $a \033[0m"
3 - Configuração do Script:
Por fim, para se configurar o script é utilizado o comando “chkconfig”. O procedimento é o seguinte:
1. Criar link simbólico (atalho) na pasta "/etc/init.d/" com o nome tomcat:
Comando: ln -s /opt/oobj/aplicativos/tomcat/bin/tomcat /etc/init.d/tomcat
Obs.: Onde "/opt/oobj/aplicativos/tomcat/bin/tomcat" é o caminho onde está o arquivo “tomcat”.
2. Configurar permissão e adicionar a configuração ao S.O.:
chmod 755 /etc/init.d/tomcat chkconfig --add tomcat chkconfig --level 234 tomcat on
Pronto, feito isto o script já está configurado para ser utilizado como serviço no linux e com todos os comandos necessário para facilitar sua utilização.
Referência
Sem referências.
Nº do Artigo: 300
Postado: 05/11/2015 11:55:14
Última atualização: 05/11/2015 11:55:14
Postado: Mateus Neves [mateus.neves@oobj.com.br]
URL: https://oobj.com.br/bc/article/como-configurar-o-tomcat-como-serviço-no-linux-300.html