1

我正在使用剑圣推送服务器。如何在生产模式下启动 redis 和 juggernaut 原因我

 juggernaut

或者

redis-server will keep on showing me log etc.

我在rails 3上使用ruby。

编辑

我按照这两个指南在生产服务器上设置juggernautredis

终端命令。

似乎两台服务器现在都运行顺利。但是我怎样才能访问

     :8080/application.js for juggernaut. 

我试过了

   my_ip:8080/application.js but nothing. 

对于托管,我使用的是 Linode。

编辑2

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

  Starting/Stopping redis-server: redis-server.

但是当我为剑圣做同样的事情时,什么都没有。检查屏幕截图。

在此处输入图像描述

编辑

我看不到主宰的任何日志.. 有一个用于 redis 但没有用于主宰

在此处输入图像描述

编辑

  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 是否存在,它是 group juggernaut 的成员吗? - 是的是的

      cat /etc/group
          redis:x:1002:
          juggernaut:x:113:
    
      groups juggernaut
          juggernaut : 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

服务器已启动,但未作为后台进程/服务。

编辑

在调试模式下运行脚本,即更改顶部的shebang行以添加-x,例如

    #! /bin/bash -x

这是输出: -

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

2 回答 2

3

您可能希望将 Juggernaut 和 Redis 作为服务/后台进程启动。将其作为服务启动可以将日志重定向到一个文件,然后您可以定期检查该文件。

要创建在启动时自动启动的服务,您必须根据您使用的操作系统执行不同的操作:

确保在创建服务后通过将服务添加到默认运行级别(将在引导时自动启动)或手动启动它们来启动服务。

将服务添加到默认运行级别 (Linux),也是上述两个 Linux 教程的一部分:

sudo update-rc.d -f juggernaut defaults
sudo update-rc.d -f redis-server defaults

将服务添加到默认运行级别后,仍然需要手动启动服务(Linux):

sudo /etc/init.d/juggernaut start
sudo /etc/init.d/redis-server start
于 2011-09-15T17:46:13.273 回答
0

我遇到了同样的问题(使用 Ubuntu 12.04 LTS)。使用暴发户为我做到了。

创建一个文件“juggernaut.conf”,其中包含:

start on filesystem and started networking
stop on shutdown

script
    # We found $HOME is needed. Without it, we ran into problems
    export HOME="/root"

    exec /usr/local/bin/juggernaut 2>&1 >> /var/log/juggernaut.log
end script

将此文件保存在 /etc/init/(不是 init.d)中并使其可执行(chmod +x)。就是这样,如果服务器启动,剑圣作为守护进程运行。

注意:在 juggernaut 本身的 juggernaut.log 旁边,有一个 juggernaut.log 位于 /var/log/upstart/ 中,其中记录了 upstart 尝试启动 juggernaut 的信息。

我或多或少地从这个博客复制粘贴了上面的脚本。但是,那里显示的脚本以:

 start on startup

这对我不起作用,因为文件系统在启动时没有正确安装,所以不可能创建 juggernaut.log (只读文件系统错误)。归功于serverfault 上的这篇文章来解决这个问题。

于 2012-12-31T12:11:31.470 回答