web-dev-qa-db-ja.com

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を手動で実行できますが、常に実行したいと思います...

どんな助けでも大歓迎です...

3
socal_javaguy

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に設定されていることを確認できます。

2
Jeremy Bouse

何らかの理由で、RedHatのJBoss5.1[〜#〜] eap [〜#〜]ディストリビューションがありませんbin /jboss_init_redhat.sh、ただしHPUXとSolarisのバージョンがあり、RedHatディストリビューションでは少し混乱します。

ここでデーモンを設定する手順を完全に文書化しました... http://www.forwardslashbin.com/?p=108

1
keith ratcliffe

提供されているinitスクリプトはかなりひどいものであり、信頼性はあまり高くありません。

より堅牢な代替のinitスクリプトを作成しました: https://jira.jboss.org/jira/browse/JBPAPP-3194

すべてのフィードバックは大歓迎です!

1
neu242

スタートラインからevalを削除します。また、すべてのエラーが/ dev/nullにリダイレクトされないようにJBOSS_CONSOLEを設定します。

0
David Pashley

正しく実行するには、jbossユーザーを追加する必要があります。上記のスクリプトによると、「jboss」(引用符なし)という名前になります。

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

スクリプトをrootユーザーとして実行する唯一の方法は、スクリプトを起動するとき、またはSudoを介してrootユーザーになることです。 JBoss自体をrootとして実行しないことを強くお勧めします。

0
Kevin M