我在红帽(Amazon ECS)上使用JBoss 5.1.0 GA …
我试图设置它,所以JBoss将作为服务/守护进程运行(现在只有当我手动SSH和调用sh $ JBOSS_HOME / bin / run.sh时才会启动)。
以下是我迄今所做的:
(1)在/etc/init.d/中创build了以下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,但是希望能够一直运行
任何帮助是极大的赞赏…
你有什么特别的理由反对使用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 jbossvalidation它是否有效,并且看到它被设置为你想要的运行级别,通常是2-5,它被激活。
提供的init脚本非常糟糕,而且不太可靠。
我已经创build了一个更强大的替代init脚本: https : //jira.jboss.org/jira/browse/JBPAPP-3194
所有的反馈是欢迎的!
出于某种原因,Red Hat的JBoss 5.1 EAP分发版缺lessbin / jboss_init_redhat.sh ,尽pipeHPUX和Solaris版本在那里,这对于Red Hat发行版有点混乱
我彻底logging了在这里设置守护进程的程序… http://www.forwardslashbin.com/?p=108
从开始行删除评估。 另外,设置JBOSS_CONSOLE,使其不会将所有错误redirect到/ dev / null。
您将需要添加一个jboss用户才能正常运行。 根据上面的脚本,它将被命名为“jboss”(不含引号)。
[root@destination-host ~]# /usr/sbin/useradd jboss
以root用户身份运行脚本的唯一方法是在启动时使用root用户,或者使用sudo。 我强烈build议不要以root身份运行JBoss。
在做同样的工作和工作时,我已经进行了非常简短的修改
#!/ bin / sh的
#chkconfig:345 90 10
#description:运行JBoss应用程序服务器5
#processname:jboss#pidfile:/var/run/jboss_m2i.pid
1 – 以上几点是为了chkconfig工具而做的。
#$ Id:jboss_init_redhat.sh 81068 2008-11-14 15:14:35Z [email protected] $#JBoss控制脚本#使用这个脚本运行它作为根 – 它将切换到指定的用户#这里有一点(和非常原始的)启动/closures脚本#为RedHat系统。 它假定JBoss位于/ usr / local / jboss中,#它由用户'jboss'运行,而JDK二进制文件位于/ usr / local / jdk / bin中。 #所有这些都可以在脚本中改变。 ##根据需要修改这个脚本,或者在调用脚本之前确保#下面的variables设置正确。
#define其中jboss是 – 这是包含目录日志,斌,conf等目录2 – 在这里你必须给你的jboss服务器的家位置。 JBOSS_HOME = $ {JBOSS_HOME: – “/首页/ jboss_user /服务器/ JBoss的/ jboss-5.1.0.GA”}
3-三点的修改
#定义运行jboss的用户,或使用“RUNASIS”作为当前用户运行JBOSS_USER = $ {JBOSS_USER: – “jboss_user”}
#make肯定java是在你的pathJAVAPTH = $ {JAVAPTH: – “/ usr / java / jdk1.7.0_04 / bin”}
4 – 指向服务器configuration文件#configuration要使用的通常是'minimal','default','all','test'JBOSS_CONF = $ {JBOSS_CONF: – “test”}之一
5 – 点5指定绑定地址。 这一点是非常重要的,如果你分配0.0.0.0 rmi / jndiexception将被提出。
#if指定JBOSS_HOST,使用-b将jboss服务绑定到该地址JBOSS_BIND_ADDR = $ {JBOSS_HOST: – “10.168.1.10”}
6 – 点6应该被定义closures服务器的variables。 这里的1299取决于你的端口偏移改变你的绑定configuration$ JBOSS_HOME / server / server_def_profile / conf / bindingservice.beans / META-INF / bindings -jboss-beans.xml 6.0这可以通过–netstat命令
#porta做JNDI服务做JBoss(usada para shutdown)JBOSS_JNP_PORT = $ {JBOSS_JNP_PORT: – “1299”} JBOSS_ADMIN_USER = $ {JMX_USER: – “admin”} JBOSS_ADMIN_PWD = $ {JMX_PWD: – “admin”}
#defineclosures类的类pathJBOSSCP = $ {JBOSSCP: – “$ JBOSS_HOME / bin / shutdown.jar:$ JBOSS_HOME / client / jnet.jar”}
7。 第7点的修改。 在运行脚本。 这与标准分配不同。
#定义用于启动jboss的脚本JBOSSSH = $ {JBOSSSH: – “$ JBOSS_HOME / bin / run.sh -c $ JBOSS_CONF -b $ JBOSS_BIND_ADDR”}
如果[“$ JBOSS_USER”=“RUNASIS”]; 那么SUBIT =“”否则SUBIT =“su – $ JBOSS_USER -c”fi
如果[-n“$ JBOSS_CONSOLE”-a! -d“$ JBOSS_CONSOLE”]; 那么#确保文件存在触摸$ JBOSS_CONSOLE if [! -z“$ SUBIT”]; 然后chown $ JBOSS_USER $ JBOSS_CONSOLE fi fi
如果[-n“$ JBOSS_CONSOLE”-a! -f“$ JBOSS_CONSOLE”]; 然后回声“警告:位置保存控制台日志无效:$ JBOSS_CONSOLE”回声“警告:忽略它,并使用/ dev / null”JBOSS_CONSOLE =“/ dev / null”fi
#define控制台日志会做什么JBOSS_CONSOLE = $ {JBOSS_CONSOLE: – “/ dev / null”}
JBOSS_CMD_START =“cd $ JBOSS_HOME / bin; $ JBOSSSH”
8 – 点8,使用服务命令closures服务器的主要修改之一。
JBOSS_CMD_STOP = $ {JBOSS_CMD_STOP: – “java -classpath $ JBOSSCP org.jboss.Shutdown –shutdown \ -s jnp:// $ JBOSS_BIND_ADDR:$ JBOSS_JNP_PORT \ -u $ JBOSS_ADMIN_USER -p $ JBOSS_ADMIN_PWD”} if [-z“ echo $PATH | grep $JAVAPTH “]; 然后导出PATH = $ PATH:$ JAVAPTH fi
如果[! -d“$ JBOSS_HOME”]; 那么echo JBOSS_HOME不存在作为一个有效的目录:$ JBOSS_HOME exit 1 fi
回声JBOSS_CMD_START = $ JBOSS_CMD_START
case“$ 1”)cd $ JBOSS_HOME / bin if [-z“$ SUBIT”]; 然后eval $ JBOSS_CMD_START> $ {JBOSS_CONSOLE} 2>&1&else $ SUBIT“$ JBOSS_CMD_START> $ {JBOSS_CONSOLE} 2>&1&”fi ;; 停止)如果[-z“$ SUBIT”]; 那么$ JBOSS_CMD_STOP else $ SUBIT“$ JBOSS_CMD_STOP”fi ;; 重启)$ 0 stop $ 0 start ;; *)echo“用法:$ 0(start | stop | restart | help)”esac
chkconfig – 添加jboss – 添加
chkconfig –list jboss – 列出
服务jboss启动
服务jboss停止