Não é possível iniciar o servidor juggernaut como um processo / serviço em segundo plano

1

Estou usando o aplicativo Ruby on Rails para implementar o bate-papo. Eu não sou capaz de configurar o servidor juggernaut no modo de produção.

Eu segui este guia para configurar os redis. e está funcionando perfeitamente bem.

Então eu segui isso para configurar o juggernaut . Mas quando estou tentando começar a funcionar, não funciona.

Aqui está a saída para os comandos do grep para verificar se os redis estão funcionando, mas o rolo compressor não está.

Quando estou tentando parar / iniciar o servidor redis, isso me dá saída, ou seja:

 Starting/Stopping redis-server: redis-server.

Mas nada quando eu estou fazendo o mesmo para juggernaut. Verifique a captura de tela.

Algumas outras coisas para verificar o que realmente está acontecendo:

  1. Permissões de arquivos executáveis no arquivo /etc/init.d/juggernaut - YES

        -rwxr-xr-x 1 fizzy fizzy 1310 Sep 19 11:06 juggernaut
    
  2. PIDFILE = / var / run / juggernaut.pid 'está definido. Isso existe? --- NÃO

  3. Na parte de 'start', roda o 'chuck juggernaut: juggernaut'. O usuário juggernaut existe e é membro do grupo juggernaut? - SIM / SIM

      cat /etc/group
          redis:x:1002:
          juggernaut:x:113:
    
      groups juggernaut
          juggernaut : juggernaut
    
  4. Executando o sudo juggernaut, inicie o servidor, mas quero que ele continue sendo executado no processo / serviço em segundo plano.

Estou preso agora. Alguém pode me ajudar.

EDITAR

    fizzy@li136-198:~$ sudo ls -l /usr/bin/juggernaut 
              ls: cannot access /usr/bin/juggernaut: No such file or directory
     fizzy@li136-198:~$ sudo ls -l /usr/local/bin/juggernaut 
            lrwxrwxrwx 1 root root 40 Sep 20 02:48 /usr/local/bin/juggernaut -> ../lib/node_modules/juggernaut/server.js

Eu tentei mudar

        DAEMON=/usr/bin/juggernaut

para

        DAEMON=/usr/local/bin/juggernaut

depois disso eu tentei reiniciar o juggernaut usando

         sudo /etc/init.d/juggernaut start

Servidor iniciado, mas não como processo / serviço em segundo plano.

EDITAR

Executando o script no modo de depuração:

   + PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
   + DAEMON=/usr/bin/juggernaut
   + NAME=Juggernaut2
   + DESC=Juggernaut2
   + PIDFILE=/var/run/juggernaut.pid
   + test -x /usr/bin/juggernaut
   + exit 0

EDITAR

    fizzy@li136-198:~$ sudo /etc/init.d/juggernaut start
    + PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    + DAEMON=/usr/local/bin/juggernaut
    + NAME=Juggernaut2
    + DESC=Juggernaut2
    + PIDFILE=/var/run/juggernaut.pid
    + test -x /usr/local/bin/juggernaut
    + set -e
    + case "" in
    + echo -n 'Starting Juggernaut2: '
    Starting Juggernaut2: + touch /var/run/juggernaut.pid
    + chown juggernaut:juggernaut /var/run/juggernaut.pid
    + start-stop-daemon --start --quiet --umask 007 --pidfile /var/run/juggernaut.pid --chuid juggernaut:juggernaut --exec /usr/local/bin/juggernaut
    20 Sep 06:41:16 - Your node instance does not have root privileges. This means that the flash XML policy file will be served inline instead of on port 843. This will slow down initial connections slightly.
    20 Sep 06:41:16 - socket.io ready - accepting connections

    node.js:134
            throw e; // process.nextTick error, or 'error' event on first tick
            ^
    Error: EADDRINUSE, Address already in use
        at Server._doListen (net.js:1106:5)
        at net.js:1077:14
        at Object.lookup (dns.js:153:45)
        at Server.listen (net.js:1071:20)
        at Object.listen (/usr/local/lib/node_modules/juggernaut/lib/juggernaut/server.js:51:21)
        at Object.listen (/usr/local/lib/node_modules/juggernaut/lib/juggernaut/index.js:9:10)
        at Object.<anonymous> (/usr/local/lib/node_modules/juggernaut/server.js:21:12)
        at Module._compile (module.js:402:26)
        at Object..js (module.js:408:10)
        at Module.load (module.js:334:31)
    + echo failed
    failed
    + exit 0

Aqui está a saída para todas as portas usadas

tcp        0      0 localhost.localdom:9312 *:*                     LISTEN     
tcp        0      0 localhost.localdo:mysql *:*                     LISTEN     
tcp        0      0 *:6379                  *:*                     LISTEN     
tcp        0      0 *:http-alt              *:*                     LISTEN     
tcp        0      0 *:www                   *:*                     LISTEN     
tcp        0      0 localhost.localdo:52433 *:*                     LISTEN     
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 localhost.localdo:53784 *:*                     LISTEN     
tcp        0      0 *:smtp                  *:*                     LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
    
por Mohit Jain 19.09.2011 / 23:43

1 resposta

2

O que eu faria para depurar este tipo de problema recente é: editar /etc/init.d/juggernaut e alterar a linha shebang no topo para adicionar um -x , por exemplo

#! /bin/bash -x

tente iniciar o serviço e você deverá ver as informações de depuração impressas, o que, esperamos, deixará claro o que está errado.

update: a segunda última linha

 + test -x /usr/bin/juggernaut

deixa bem claro (para mim :-) o script de init está abortando porque acha que o juggernaut não está instalado. Você precisa atualizar essa linha para apontar para /usr/local/bin/juggernaut .

update: "endereço em uso" significa que outro processo está escutando naquele soquete, talvez outra cópia do juggernaut. netstat -tpl dirá a você.

    
por poolie 20.09.2011 / 00:27