如何在生产模式下运行redis服务器和juggernaut服务器

时间:2011-09-15 13:32:18

标签: ruby-on-rails ruby-on-rails-3 redis production-environment juggernaut

我正在使用juggernaut推送服务器。如何在生产模式下启动redis和juggernaut导致我

 juggernaut

redis-server will keep on showing me log etc.

我在rails 3上使用ruby。

修改

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

Terminal commands.

似乎两个服务器现在都运行顺畅。但我怎么才能访问

     :8080/application.js for juggernaut. 

我试过

   my_ip:8080/application.js but nothing. 

托管我正在使用Linode。

EDIT2

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

  Starting/Stopping redis-server: redis-server.

但是当我为剑圣做同样的事情时却没有。检查截图。

enter image description here

修改

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

enter image description here

修改

  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'。用户主宰是否存在并且是否是团体主宰的成员? - 是/是

      cat /etc/group
          redis:x:1002:
          juggernaut:x:113:
    
      groups juggernaut
          juggernaut : juggernaut
    
  4. 修改

         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
    

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

创建一个'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 /中的juggernaut.log,其中写有关于upstart尝试启动juggernaut的信息。

我或多或少地从this blog复制粘贴了上述脚本。但是,那里显示的脚本始于:

 start on startup

这对我不起作用,因为文件系统在启动时未正确安装,因此无法创建juggernaut.log(只读文件系统错误)。在服务器故障上致信this post以解决此问题。