如何使用 upstart 脚本运行 Phantomjs 服务器?

如何使用 upstart 脚本运行 Phantomjs 服务器?

我已经phantomjs安装并且想要在(Ubuntu)服务器启动时运行幻影服务器。

我目前在 Ubuntu 14.04 上本地工作,并且将部署到的服务器也是 Ubuntu 14.04。

这是我目前所拥有的:

新贵脚本:

# /etc/init/phantomjs.conf

start on startup

exec '/path/to/script/to/start/server.bash'

bash 脚本启动幻影服务器:

#/path/to/script/to/start/server.bash   

#!/bin/bash

phantomjs /path/to/the/server.js -host 127.0.0.1 -port 1337

当我从命令行正常运行服务器时,它可以按预期工作。

当我运行 upstart 脚本时,它会输出OK, PhantomJS is ready到日志文件,但当我向它发出 post 请求时,没有其他任何事情发生。我期望它在每次发出请求时都会向日志输出一些内容,就像我从命令行运行它时一样,但它似乎只是启动服务器,然后什么也没有发生。

答案1

您只需使用该console log节将日志存储在 /var/log/upstart 中即可。控制台日志实际上是默认的,因此它们应该自动出现在那里:

start on runlevel [2345]
stop on runlevel [016]

respawn

exec phantomjs /path/to/the/server.js -host 127.0.0.1 -port 1337

我没有重置重生限制,因为 Stef 使用的那个有点激进,可能会导致 Upstart 重生(不断这样做,尽管最好放弃)。

答案2

保存以下作业/etc/init/myphantomjs.conf

description 'phantomjs'
start on runlevel [2345]
stop on runlevel [06]
respawn
# in case of failure retry 3 times to respawn with 5 sec interval
respawn limit 3 5

# set some variables
env SERVER=/path/to/the/server.js
env HOST=127.0.0.1
env PORT=1337

# enable logger output and write to syslog with tag phantomjs
# for more info see http://upstart.ubuntu.com/cookbook/#id152
# and/or type logger --help
console output
# execute the command and log it
exec phantomjs $SERVER -host $HOST -port $PORT | logger -s -t "phantomjs: "

答案3

事实证明,这不起作用的原因是,只有当我在文件所在的目录中启动服务器时,phantomjs 服务器才能正常工作。

执行脚本的完整路径不起作用。

为了解决这个问题,我采用了 Stef K 的脚本并添加了

evn SERVER_DER=/path/to/server/directory
evn SERVER_FILE=phantomserver.js
...
script
    chdir $SERVER_DIR
    exec phantomjs $SERVER_FILE -host $HOST -port $PORT | logger -s -t "phantomjs: "
end script

感谢 Stef K 和 CameronNemo 对我最初的脚本进行改进。

相关内容