Como executar um servidor Phantomjs com um script upstart?

0

Eu tenho phantomjs instalado e quero executar um servidor fantasma sempre que o servidor (Ubuntu) é iniciado.

Atualmente estou trabalhando localmente no Ubuntu 14.04, e o servidor para o qual isso será implementado também é o Ubuntu 14.04.

Isso é o que eu tenho até agora:

script upstart:

# /etc/init/phantomjs.conf

start on startup

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

script bash para iniciar o servidor fantasma:

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

#!/bin/bash

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

Quando eu executo o servidor normalmente a partir da linha de comando, ele funciona como esperado.

Quando executo o script upstart, ele transfere OK, PhantomJS is ready para o arquivo de log, mas quando faço solicitações de postagem para ele, nada mais acontece. Eu esperaria que ele emitisse algo para o log toda vez que eu fizesse um pedido, como acontece quando eu o executo a partir da linha de comando, mas parece que ele apenas inicia o servidor e nada mais.

    
por user1521753 24.07.2014 / 15:18

3 respostas

0

Acontece que a razão pela qual isso não estava funcionando foi porque o servidor phantomjs só funciona corretamente se eu iniciar o servidor no diretório em que o arquivo está.

A execução do caminho completo do script não funciona.

Para corrigir isso, peguei o script de Stef K e adicionei

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

Obrigado Stef K e CameronNemo pelas suas versões aprimoradas do meu script inicial.

    
por user1521753 24.07.2014 / 22:46
2

Você pode apenas usar a sub-rotina console log para ter os logs armazenados em / var / log / upstart. log do console é, na verdade, o padrão, então eles devem aparecer lá com este trabalho automaticamente:

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

respawn

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

Eu não reiniciei o respawn limti, como o que Stef usou é um pouco agressivo e poderia resultar em Upstart se debatendo (fazendo isso constantemente, embora seja provavelmente melhor desistir).

    
por CameronNemo 24.07.2014 / 22:34
1

Salve o seguinte trabalho em /etc/init/ as 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: "
    
por Stef K 24.07.2014 / 19:29