Como executo o TomEE como um serviço no RHEL6?

1

cat /etc/passwd (última linha):

tomee:x:990:987::/home/tomee:/bin/false

Eu preciso criar um script init.d para executar o Tomcat EE como service tomee start .

Então eu tenho 2 problemas:

  1. Como eu posso executar o comando (do root) como um usuário do tipo tomee (sem login do bash)?

    sudo su - tomee - c "algum comando"

Não funciona.

sudo - tomee -s "/bin/bash" -c "some command"

funciona, mas acho que parece horrível.

  1. Até onde eu disse, vou usar o script /etc/init.d/tomee service bash, e o problema aqui eu preciso de alguma forma ter a variável JAVA_HOME envirioment definida antes de executar o comando acima. (Então, como isso pode ser feito se o usuário for sistema e não tiver shell?)

E eu também tenho um problema (aviso) que couldn't change dir to /home/tomee . Sim, não existe, mas criei o usuário como um sistema.

Estou usando um RHEL (não o mais novo, então não há systemd). Como executo o TomEE como um serviço no RHEL6?

UPDATE # 1:

[root@localhost httpd]# su tomee /usr/local/tomee-webprofile-1.7.2/bin/startup.sh
[root@localhost httpd]#

e sem resultados. Apenas

su - tomee -s "/bin/bash" /usr/local/tomee-webprofile-1.7.2/bin/startup.sh

funciona, mas não quero ver essa parte -s "/bin/bash" horrível.

E, além disso, de acordo com JAVA_HOME , se eu colocá-lo dentro de init.d script (tomee), só faz sentido root, pois init.d scripts são executados como root, então não haverá JAVA_HOME para o usuário do tomee?

UPDATE # 2:

[root@localhost ~]# su tomee -s "/bin/bash" -c "echo hi"

Imprime "oi" - está tudo bem.

[root@localhost ~]# su tomee -c "echo hi"

Não imprime nada. Por quê?

UPDATE # 3:

Finalmente consegui trabalhar com:

su -s /bin/bash $TOMCAT_USER $TOMCAT_CATALINA_SH stop

Eu notei que os scripts init do oracle db usam a mesma abordagem, então eu acho que está tudo bem.

BTW, ainda não consigo entender por que precisamos especificar o shell enquanto executamos um arquivo *.sh , já que há a primeira linha em que #!/bin/bash etc.

    
por user3070377 02.07.2015 / 18:24

1 resposta

1

início do serviço tomee é executado pelo root para iniciar o serviço tomee . Não é o comando real que o script de inicialização executaria. O script de inicialização para isso está incluído abaixo.

JAVA_HOME deve ser definido no script de inicialização.

/etc/init.d/tomee (precisa ser marcado como executável):

#!/bin/bash
# description: TomEE Start Stop Restart
# processname: tomee
# chkconfig: 234 20 80
TOMEE_USER=tomee
JAVA_HOME=/usr/java/jdk1.6.0_33
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=apache-tomee-webprofile-1.0.0

case $1 in
start)
/bin/su $TOMEE_USER $CATALINA_HOME/bin/startup.sh
;; 
stop)   
/bin/su $TOMEE_USER $CATALINA_HOME/bin/shutdown.sh
;; 
restart)
/bin/su $TOMEE_USER $CATALINA_HOME/bin/shutdown.sh
/bin/su $TOMEE_USER $CATALINA_HOME/bin/startup.sh
;; 
esac    
exit 0

Adaptado de link .

Edite CATALINA_HOME acima para ser o caminho absoluto da instalação do seu TomEE. Certifique-se de que é legível pelo usuário e que os diretórios webapps, logs, temp e work dentro dele podem ser gravados pelo usuário principal.

    
por 02.07.2015 / 18:39