我在 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
答案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。