Executando o JBoss-5.1.0.GA como um serviço / daemon na Red Hat?

3

Estou usando o JBoss 5.1.0 GA no Red Hat (Amazon ECS) ...

Estou tentando configurá-lo para que o JBoss seja executado como um serviço / daemon (agora ele só inicia quando eu manualmente SSH e invoco sh $ JBOSS_HOME / bin / run.sh).

Aqui está o que eu fiz até agora:

(1) Criamos o seguinte script do jboss em /etc/init.d/:

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) Tornou o script executável e alterou a propriedade, fazendo o seguinte:

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

(3) Quando tentei iniciá-lo, recebi a seguinte saída (e o JBoss não iniciou):

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

Perguntas:

(1) O que estou possivelmente fazendo errado?

(2) Como faço para configurá-lo para que ele seja executado como usuário root? Eu tenho que adicionar um grupo do JBoss e um usuário do JBoss?

Eu posso executar manualmente o JBoss através de $ JBOSS_HOME / bin, mas adoraria tê-lo funcionando o tempo todo ...

Qualquer ajuda é muito apreciada ...

    
por David Pashley 28.07.2009 / 10:38

6 respostas

2

Qualquer motivo em particular que você tenha uma aversão ao uso do script init bin / jboss_init_redhat.sh que já vem com a versão do JBoss 5.1.0.GA? Eu uso-o em vários sistemas RHEL e CentOS e não tenho absolutamente nenhum problema com o arranque do JBoss na reinicialização.

Eu só tive que fazer uma pequena alteração para conseguir lidar com chkconfig sem problemas. Essa alteração consistiu no seguinte, próximo ao início do script:

--- 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

Eu simplesmente copiei para /etc/rc.d/init.d como jboss e executei chkconfig --add jboss . Você pode verificar se está ativo com chkconfig --list jboss e se está definido como em para os níveis de execução que você deseja, normalmente 2-5, que são ativados.

    
por 28.07.2009 / 14:42
1

O script de inicialização fornecido é bastante terrível e pouco confiável.

Eu criei um script de inicialização alternativo que deve ser mais robusto: link

Todo o feedback é bem-vindo!

    
por 01.12.2009 / 14:06
1

Por alguma razão, a distribuição do JBoss 5.1 EAP da Red Hat está faltando bin / jboss_init_redhat.sh , embora as versões HPUX e Solaris estejam lá, o que é um pouco confuso uma distribuição da Red Hat

Eu documentei completamente os procedimentos para configurar o daemon aqui ... link

    
por 01.03.2011 / 19:26
0

Remova o eval da linha de partida. Além disso, configure JBOSS_CONSOLE para que ele não redirecione todos os erros para / dev / null.

    
por 28.07.2009 / 10:53
0

Você precisará adicionar um usuário do jboss para que ele seja executado corretamente. De acordo com o script como dado acima, seria nomeado "jboss" (sem aspas).

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

A única maneira de fazer com que o script seja executado como usuário root é ser o usuário root ao iniciá-lo ou via sudo. Eu recomendaria strongmente contra rodar o JBoss per se como root.

    
por 28.07.2009 / 15:47
0

Ao fazer e trabalhar em torno dos mesmos requisitos, passei a seguir mudanças muito breves

#! / bin / sh

# chkconfig: 345 90 10
 # description: Executa o JBoss Application Server 5
 # processname: jboss  # pidfile: /var/run/jboss_m2i.pid

1 - Os pontos acima são feitos para o serviço chkconfig.

# $ Id: jboss_init_redhat.sh 81068 2008-11-14 15: 14: 35Z [email protected] $  # JBoss Control Script  # Para usar este script, execute-o como root - ele mudará para o usuário especificado  # Aqui está um pequeno (e extremamente primitivo) script de inicialização / desligamento  # para sistemas RedHat. Ele assume que o JBoss vive em / usr / local / jboss,  # ele é executado pelo usuário 'jboss' e os binários do JDK estão em / usr / local / jdk / bin.  # Tudo isso pode ser alterado no próprio script.  #  # Ou modifique este script para suas necessidades ou apenas assegure que  # as seguintes variáveis estão definidas corretamente antes de chamar o script.

#define onde o jboss é - este é o diretório que contém diretórios log, bin, conf etc  2 - Aqui você tem que dar sua localização inicial do servidor jboss.  JBOSS_HOME = $ {JBOSS_HOME: - "/ home / jboss_user / servers / jboss / jboss-5.1.0.GA"}

3- ponto três da modificação

#define o usuário sob o qual o jboss será executado ou use 'RUNASIS' para executar como o usuário atual JBOSS_USER = $ {JBOSS_USER: - "jboss_user"}

# certifique-se de que o java está no seu caminho  JAVAPTH = $ {JAVAPTH: - "/ usr / java / jdk1.7.0_04 / bin"}

4 - Ponto 4 em que o perfil do servidor é especificado  #configuração para usar, geralmente um dos 'mínimos', 'padrão', 'todos', 'teste'  JBOSS_CONF = $ {JBOSS_CONF: - "teste"}

5 - ponto 5 onde o endereço de ligação é especificado. Este ponto é muito importante se você atribuir 0.0.0.0 a exceção rmi / jndi será levantada.

#if JBOSS_HOST especificado, use -b para ligar os serviços do jboss a esse endereço  JBOSS_BIND_ADDR = $ {JBOSS_HOST: - "10.168.1.10"}

6 - Variáveis do ponto 6 que devem ser definidas para desligar o servidor.    aqui 1299 depende da sua porta off-set mudar em sua configuração de ligação    $ JBOSS_HOME / server / server_def_profile / conf / bindingservice.beans / META-INF / bindings-jboss-beans.xml   6.0 isso pode ser verificado pelo comando - netstat

# porta do serviço JNDI do JBoss (utilizada para desligamento)    JBOSS_JNP_PORT = $ {JBOSS_JNP_PORT: - "1299"}   JBOSS_ADMIN_USER = $ {JMX_USER: - "admin"}   JBOSS_ADMIN_PWD = $ {JMX_PWD: - "admin"}

# define o caminho de classe para a classe de desligamento  JBOSSCP = $ {JBOSSCP: - "$ JBOSS_HOME / bin / shutdown.jar: $ JBOSS_HOME / client / jnet.jar"}

7. Ponto 7 de modificação. em execução de script. Isso é diferente da distribuição padrão.

# define o script a ser usado para iniciar o jboss  JBOSSSH = $ {JBOSSSH: - "$ JBOSS_HOME / bin / run.sh -c $ JBOSS_CONF -b $ JBOSS_BIND_ADDR"}

if ["$ JBOSS_USER"="RUNASIS"]; então    SUBIT=""  outro    SUBIT="su - $ JBOSS_USER -c"  fi

se [-n "$ JBOSS_CONSOLE" -a! -d "$ JBOSS_CONSOLE"]; então   # garantir que o arquivo exista   toque em $ JBOSS_CONSOLE   E se [ ! -z "$ SUBIT"]; então     chown $ JBOSS_USER $ JBOSS_CONSOLE   fi fi

se [-n "$ JBOSS_CONSOLE" -a! -f "$ JBOSS_CONSOLE"]; então   echo "AVISO: local para salvar o log do console inválido: $ JBOSS_CONSOLE"   echo "ATENÇÃO: ignorando-o e usando / dev / null"   JBOSS_CONSOLE="/ dev / null" fi

#define o que será feito com o log do console JBOSS_CONSOLE = $ {JBOSS_CONSOLE: - "/ dev / null"}

JBOSS_CMD_START="cd $ JBOSS_HOME / bin; $ JBOSSSH"

8 - Ponto 8, uma das principais modificações para desligar o servidor usando o comando service.

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 "]; então   PATH de exportação = $ PATH: $ JAVAPTH fi

se [! -d "$ JBOSS_HOME"]; então   O echo JBOSS_HOME não existe como um diretório válido: $ JBOSS_HOME   sair 1 fi

echo JBOSS_CMD_START = $ JBOSS_CMD_START

caso "$ 1" em começar)     cd $ JBOSS_HOME / bin     if [-z "$ SUBIT"]; então         eval $ JBOSS_CMD_START > $ {JBOSS_CONSOLE} 2 > & 1 &     outro         $ SUBIT "$ JBOSS_CMD_START > $ {JBOSS_CONSOLE} 2 > & 1 &"     fi     ;; Pare)     if [-z "$ SUBIT"]; então         $ JBOSS_CMD_STOP     outro         $ SUBIT "$ JBOSS_CMD_STOP"     fi     ;; reiniciar)     $ 0 stop     $ 0 começo     ;; *)     echo "uso: $ 0 (iniciar | parar | reiniciar | ajuda)" esac

Use o seguinte comando para adicionar este script ao serviço chkconfig e testar

chkconfig --add jboss - para adicionar

chkconfig --list jboss - para listar

Use o seguinte comando para executar e parar os serviços.

serviço jboss start

serviço jboss stop

    
por 21.01.2013 / 13:20