在 Red Hat 上将 JBoss-5.1.0.GA 作为服务/守护进程运行?

在 Red Hat 上将 JBoss-5.1.0.GA 作为服务/守护进程运行?

我在 Red Hat(Amazon ECS)上使用 JBoss 5.1.0 GA...

正在尝试设置它,以便 JBoss 作为服务/守护进程运行(现在它仅在我手动 SSH 并调用 sh $JBOSS_HOME/bin/run.sh 时启动)。

以下是我目前所做的:

(1)在/etc/init.d/中创建以下jboss脚本:

JBOSS_HOME=${JBOSS_HOME:-"/usr/jboss-5.1.0.GA"}

JBOSS_USER=${JBOSS_USER:-"jboss"}

JAVAPTH=${JAVAPTH:-"/usr/java/jdk/bin"}

JBOSS_CONF=${JBOSS_CONF:-"default"}

JBOSS_BIND_ADDR=${JBOSS_HOST:+"-b $JBOSS_HOST"}

JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.jar:$JBOSS_HOME/client/jnet.jar"}

JBOSSSH=${JBOSSSH:-"$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF $JBOSS_BIND_ADDR"}

if [ "$JBOSS_USER" = "RUNASIS" ]; then
  SUBIT=""
else
  SUBIT="su - $JBOSS_USER -c "
fi

if [ -n "$JBOSS_CONSOLE" -a ! -d "$JBOSS_CONSOLE" ]; then
  # ensure the file exists
  touch $JBOSS_CONSOLE
  if [ ! -z "$SUBIT" ]; then
    chown $JBOSS_USER $JBOSS_CONSOLE
  fi 
fi

if [ -n "$JBOSS_CONSOLE" -a ! -f "$JBOSS_CONSOLE" ]; then
  echo "WARNING: location for saving console log invalid: $JBOSS_CONSOLE"
  echo "WARNING: ignoring it and using /dev/null"
  JBOSS_CONSOLE="/dev/null"
fi

JBOSS_CONSOLE=${JBOSS_CONSOLE:-"/dev/null"}

JBOSS_CMD_START="cd $JBOSS_HOME/bin; $JBOSSSH"
JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"java -classpath $JBOSSCP org.jboss.Shutdown --shutdown"}

if [ -z "`echo $PATH | grep $JAVAPTH`" ]; then
  export PATH=$PATH:$JAVAPTH
fi

if [ ! -d "$JBOSS_HOME" ]; then
  echo JBOSS_HOME does not exist as a valid directory : $JBOSS_HOME
  exit 1
fi

echo JBOSS_CMD_START = $JBOSS_CMD_START

case "$1" in
start)
    cd $JBOSS_HOME/bin
    if [ -z "$SUBIT" ]; then
        eval $JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &
    else
        $SUBIT "$JBOSS_CMD_START >${JBOSS_CONSOLE} 2>&1 &" 
    fi
    ;;
stop)
    if [ -z "$SUBIT" ]; then
        $JBOSS_CMD_STOP
    else
        $SUBIT "$JBOSS_CMD_STOP"
    fi 
    ;;
restart)
    $0 stop
    $0 start
    ;;
*)
    echo "usage: $0 (start|stop|restart|help)"
esac

(2)通过执行以下操作使脚本可执行并更改所有权:

sudo chown root:root /etc/init.d/jboss
sudo chmod ug+x /etc/init.d/jboss

(3)当我尝试启动它时,我收到以下输出(并且 JBoss 没有启动):

JBOSS_CMD_START = cd /usr/jboss-5.1.0.GA/bin; /usr/jboss-5.1.0.GA/bin/run.sh -c default

问题:

(1)我可能做错了什么?

(2) 如何设置它以 root 用户身份运行?我必须添加 JBoss 组和 JBoss 用户吗?

我可以通过 $JBOSS_HOME/bin 手动运行 JBoss,但希望它一直运行......

任何帮助是极大的赞赏...

答案1

您不愿意使用 JBoss 5.1.0.GA 版本中自带的 bin/jboss_init_redhat.sh SysV init 脚本,有什么特别的原因吗?我在多个 RHEL 和 CentOS 系统上使用它,重启时 JBoss 启动完全没有问题。

我只需要做一点小小的改动就可以让它顺利处理chkconfig。这个改动包括脚本顶部附近的以下内容:

--- bin/jboss_init_redhat.sh    2009-05-22 11:01:22.000000000 -0400
+++ /etc/rc.d/init.d/jboss  2009-06-07 22:05:17.000000000 -0400
@@ -4,6 +4,10 @@
 #
 # JBoss Control Script
 #
+# chkconfig: - 85 15
+# description: JBoss Application Server
+# processname: jboss
+
 # To use this script run it as root - it will switch to the specified user
 #
 # Here is a little (and extremely primitive) startup/shutdown script

然后我简单地将其复制到 /etc/rc.d/init.d 并jboss运行chkconfig --add jboss。您可以使用以下命令验证它是否处于活动状态chkconfig --list jboss,并查看它是否设置为对于您想要的运行级别,通常它会激活 2-5。

答案2

提供的启动脚本非常糟糕,而且不太可靠。

我创建了一个更加强大的替代初始化脚本:https://jira.jboss.org/jira/browse/JBPAPP-3194

欢迎所有反馈!

答案3

由于某种原因,Red Hat 的 JBoss 5.1学术英语课程缺少分布bin/jboss_init_redhat.sh,尽管有 HPUX 和 Solaris 版本,但这对于 Red Hat 发行版来说有点令人困惑

我在这里详细记录了设​​置守护进程的程序...... http://www.forwardslashbin.com/?p=108

答案4

您需要添加 jboss 用户才能正常运行。根据上面给出的脚本,它将被命名为“jboss”(不带引号)。

[root@destination-host ~]# /usr/sbin/useradd jboss

让脚本以 root 用户身份运行的唯一方法是在启动时以 root 用户身份运行,或者通过 sudo。我强烈建议不要以 root 身份运行 JBoss。

相关内容