如何在RHEL6上运行TomEE作为服务?

cat /etc/passwd (最后一行):

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

我需要做一个init.d脚本来运行Tomcat EE,比如service tomee start

所以我有两个问题:

  1. 我怎样才能执行命令(从根)作为一个tomee用户(没有bashlogin)?

    sudo su – tomee -c“一些命令”

不起作用。

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

作品,但我觉得它看起来很可怕。

  1. 据我所说,我打算使用它/etc/init.d/tomee服务bash脚本,这里的问题我需要JAVA_HOME环境variables之前执行上述命令。 (那么如果用户是系统而没有shell,怎么办呢?)

我也有一个问题(警告), couldn't change dir to /home/tomee 。 是的,它不存在,但我创build了一个系统的用户。

我正在使用一个RHEL(不是最新的,所以没有systemd)。 如何在RHEL6上运行TomEE作为服务?

更新#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脚本(tomee)中,所以它对root有意义,因为init.d脚本以root身份运行,那么tomee用户将没有JAVA_HOME

更新#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数据库的init脚本使用相同的方法,所以我认为没关系。

顺便说一句,我仍然不明白为什么我们需要指定shell,而我们执行*.sh文件,因为有第一行,其中#!/bin/bash

服务启动tomeeroot运行来启动tomee服务。 这不是init脚本运行的实际命令。 初始化脚本包含在下面。

应该在init脚本中设置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安装的绝对path。 确保tomee用户可以读取,并且其中的webapps,日志,temp和工作目录可由tomee用户写入。