我已经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 对我最初的脚本进行改进。