Как запустить сервер Phantomjs с помощью сценария upstart?

У меня установлено 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 в файл журнала, но когда я делаю к нему почтовые запросы, больше ничего не происходит. Я ожидал, что он будет выводить что-то в журнал каждый раз, когда я делаю запрос, как это происходит при запуске из командной строки, но кажется, что он просто запускает сервер, а затем ничего больше.

0
задан 24 July 2014 в 17:18

3 ответа

Это оказывается причиной, это не работало, был то, потому что phantomjs сервер только работает правильно, если я запускаю сервер в каталоге, файл находится в.

Выполнение полного пути сценария не работает.

Для фиксации этого я взял сценарий K Stef и добавил

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 для улучшенных версий моего первоначального сценария.

0
ответ дан 24 July 2014 в 17:18

Сохраните следующее рабочее место в /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: "
1
ответ дан 24 July 2014 в 17:18

Можно просто использовать 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

я не сбрасывал переикру limti как та, что используемый Stef немного агрессивен и мог привести к Выскочке, перегружающей переикру (выполнение его постоянно даже при том, что, вероятно, лучше просто сдаться).

2
ответ дан 24 July 2014 в 17:18

Другие вопросы по тегам:

Похожие вопросы: