我正在使用剑圣推送服务器。 如何在生产模式下启动Redis和剑圣
juggernaut
要么
redis-server will keep on showing me log etc.
我正在使用Rails 3。
编辑
似乎两台服务器现在都运行平稳。 但是我该如何访问
:8080/application.js for juggernaut.
我试过了
my_ip:8080/application.js but nothing.
对于托管,我正在使用Linode。
EDIT2
当我尝试停止/启动Redis服务器时,它会给我输出,即:
Starting/Stopping redis-server: redis-server.
但是当我为剑圣做同样的事情时,什么也没有。 检查屏幕截图。
编辑
我看不到主宰的任何日志。.有一个供Redis使用,但没有主宰的日志
编辑
对/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
您可能希望将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
我遇到了同样的问题(使用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 /中,其中写入有关启动新剑法的尝试的信息。
我或多或少从此Blog复制粘贴了上面的脚本。 但是,此处显示的脚本开头为:
start on startup
这对我不起作用,因为文件系统在启动时未正确安装,因此无法创建juggernaut.log(只读文件系统错误)。 归功于serverfault上的这篇文章 ,以解决此问题。