我正在使用juggernaut推送服务器。如何在生产模式下启动redis和juggernaut导致我
juggernaut
或
redis-server will keep on showing me log etc.
我在rails 3上使用ruby。
修改
我按照这两个指南在生产服务器上设置juggernaut和redis
似乎两个服务器现在都运行顺畅。但我怎么才能访问
:8080/application.js for juggernaut.
我试过
my_ip:8080/application.js but nothing.
托管我正在使用Linode。
EDIT2
当我试图停止/启动redis服务器时,它会给我输出,即:
Starting/Stopping redis-server: redis-server.
但是当我为剑圣做同样的事情时却没有。检查截图。
修改
我看不到任何juggernaut的日志..有一个用于redis但是没有juggernaut
修改
/etc/init.d/juggernaut文件的可执行文件权限 - 是
-rwxr-xr-x 1 fizzy fizzy 1310 Sep 19 11:06 juggernaut
定义了PIDFILE = / var / run / juggernaut.pid'。那存在吗? ---没有
在'开始'部分,它运行'chown juggernaut: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
答案 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以解决此问题。