У меня установлено 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
в файл журнала, но когда я делаю к нему почтовые запросы, больше ничего не происходит. Я ожидал, что он будет выводить что-то в журнал каждый раз, когда я делаю запрос, как это происходит при запуске из командной строки, но кажется, что он просто запускает сервер, а затем ничего больше.
Это оказывается причиной, это не работало, был то, потому что 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 для улучшенных версий моего первоначального сценария.
Сохраните следующее рабочее место в /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: "
Можно просто использовать 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 немного агрессивен и мог привести к Выскочке, перегружающей переикру (выполнение его постоянно даже при том, что, вероятно, лучше просто сдаться).