无法将 juggernaut 服务器作为后台进程/服务启动

无法将 juggernaut 服务器作为后台进程/服务启动

我正在使用 ruby​​ on rails 应用程序实现聊天。我无法在生产模式下设置 juggernaut 服务器。

我跟着本指南设置 redis。并且它运行正常。

然后我跟着这是为了设置 juggernaut。但是当我尝试启动 juggernaut 时它却不工作。

下面是使用 grep 命令检查 redis 是否正常工作但 juggernaut 是否不正常工作的结果。

在此处输入图片描述

当我尝试停止/启动 redis 服务器时,它会给出输出,即:

 Starting/Stopping redis-server: redis-server.

但当我对 juggernaut 执行相同操作时,没有任何反应。请查看屏幕截图。

在此处输入图片描述

检查实际发生的情况还有以下一些事项:

  1. /etc/init.d/juggernaut 文件的可执行文件权限--是

        -rwxr-xr-x 1 fizzy fizzy 1310 Sep 19 11:06 juggernaut
    
  2. PIDFILE=/var/run/juggernaut.pid' 已定义。它存在吗? --- 不存在

  3. 在“开始”部分,它运行“chown juggernaut:juggernaut”。用户 juggernaut 是否存在,并且它是否是 juggernaut 组的成员?-- 是/是

      cat /etc/group
          redis:x:1002:
          juggernaut:x:113:
    
      groups juggernaut
          juggernaut : juggernaut
    
  4. 运行 sudo juggernaut 启动服务器,但我希望它继续在后台进程/服务中运行。

在此处输入图片描述

我现在陷入困境。有人能帮助我吗?

编辑

    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

我尝试改变

        DAEMON=/usr/bin/juggernaut

        DAEMON=/usr/local/bin/juggernaut

之后我尝试使用

         sudo /etc/init.d/juggernaut start

服务器已启动但不是作为后台进程/服务。

编辑

在调试模式下运行脚本:

   + 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

编辑

    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 "$1" 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

这是所有使用的端口

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     

答案1

我要调试这种新贵问题的方法如下:编辑/etc/init.d/juggernaut并更改顶部的 shebang 行以添加-x,例如

#! /bin/bash -x

然后尝试启动服务,您应该会看到它打印调试信息,希望这可以清楚地说明问题所在。

更新:倒数第二行

 + test -x /usr/bin/juggernaut

对我来说 :-) 非常清楚,init 脚本正在中止,因为它认为 juggernaut 未安装。您需要更新该行以指向/usr/local/bin/juggernaut

更新:“地址正在使用”意味着另一个进程正在监听该套接字,可能是 juggernaut 的另一个副本。 netstat -tpl会告诉你。

相关内容