Назад | Перейти на главную страницу

Как запустить TomEE как службу на RHEL6?

cat /etc/passwd (Последняя линия):

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

Мне нужно сделать init.d сценарий для запуска Tomcat EE как service tomee start.

Итак, у меня 2 проблемы:

  1. Как я могу выполнить команду (от root) как пользователь tomee (без входа в bash)?

    sudo su - tomee -c "некоторая команда"

Не работает.

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

работает, но выглядит ужасно.

  1. Насколько я сказал, я собираюсь использовать это /etc/init.d/tomee service bash script, и проблема здесь мне нужно как-то иметь JAVA_HOME переменная envirioment, установленная перед выполнением указанной выше команды. (Так как же это сделать, если пользователь системы и у него нет оболочки?)

И еще у меня есть проблема (предупреждение), что couldn't change dir to /home/tomee. Да, его нет, но я создал пользователя как системного.

Я использую RHEL (не самый новый, поэтому нет systemd). Как запустить TomEE как службу на RHEL6?

ОБНОВЛЕНИЕ №1:

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

И никаких результатов. Только

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

работает, но я не хочу видеть эту ужасную -s "/bin/bash" часть.

И более того, согласно JAVA_HOME, если я положу это внутрь init.d скрипт (фолиант), поэтому он имеет смысл только для root как init.d скрипты запускаются с правами root, поэтому не будет JAVA_HOME для пользователя tomee?

ОБНОВЛЕНИЕ №2:

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

Печатает "привет" - все нормально.

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

Он ничего не печатает. Зачем?

ОБНОВЛЕНИЕ # 3:

Наконец-то я заставил его работать с:

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

Я заметил, что сценарии инициализации oracle db используют тот же подход, поэтому я думаю, что это нормально.

Кстати, я все еще не могу понять, почему нам нужно указывать оболочку при выполнении *.sh файл, так как есть первая строка, где #!/bin/bash и т.п.

начало службы управляется корень чтобы начать Мне служба. Это не настоящая команда, которую должен запустить сценарий инициализации. Сценарий инициализации для этого включен ниже.

JAVA_HOME должен быть установлен в сценарии инициализации.

/etc/init.d/tomee (необходимо пометить как исполняемый):

#!/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

Адаптировано из http://www.davidghedini.com/pg/entry/apache_tomee_on_centos_6.

редактировать CATALINA_HOME выше, чтобы быть абсолютным путем установки TomEE. Убедитесь, что он доступен для чтения пользователю tomee и что веб-приложения, журналы, временные и рабочие каталоги в нем доступны для записи пользователю tomee.