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を手動で実行できますが、常に実行したいと思います...
どんな助けでも大歓迎です...
JBoss5.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
次に、それをjboss
として/etc/rc.d/init.dにコピーし、chkconfig --add jboss
を実行しました。 chkconfig --list jboss
でアクティブになっていることを確認し、必要なランレベル(通常はアクティブになる2〜5)に対してonに設定されていることを確認できます。
何らかの理由で、RedHatのJBoss5.1[〜#〜] eap [〜#〜]ディストリビューションがありませんbin /jboss_init_redhat.sh、ただしHPUXとSolarisのバージョンがあり、RedHatディストリビューションでは少し混乱します。
ここでデーモンを設定する手順を完全に文書化しました... http://www.forwardslashbin.com/?p=108
提供されているinitスクリプトはかなりひどいものであり、信頼性はあまり高くありません。
より堅牢な代替のinitスクリプトを作成しました: https://jira.jboss.org/jira/browse/JBPAPP-3194
すべてのフィードバックは大歓迎です!
スタートラインからevalを削除します。また、すべてのエラーが/ dev/nullにリダイレクトされないようにJBOSS_CONSOLEを設定します。
正しく実行するには、jbossユーザーを追加する必要があります。上記のスクリプトによると、「jboss」(引用符なし)という名前になります。
[root@destination-Host ~]# /usr/sbin/useradd jboss
スクリプトをrootユーザーとして実行する唯一の方法は、スクリプトを起動するとき、またはSudoを介してrootユーザーになることです。 JBoss自体をrootとして実行しないことを強くお勧めします。