2014-02-27 3 views
7

내 nodejs 서버를 자동으로 시작하고 제어하기 위해 서비스/스크립트를 만들려고하는데, 전혀 작동하지 않습니다. 모든Upstart/init 스크립트가 작동하지 않습니다.

우선, I는 I (이것은 결과적으로 최소한, 오류의 종류를 피하기 위해 실제 파일의 내용을 minimzed 주변 테스트 후에 주요 기준 http://kvz.io/blog/2009/12/15/run-nodejs-as-a-service-on-ubuntu-karmic/

등이 소스를 사용하지만 나던

description "server" 
author  "blah" 

start on started mountall 
stop on shutdown 

respawn 
respawn limit 99 5 

script 
    export HOME="/var/www" 

    exec nodejs /var/www/server/server.js >> /var/log/node.log 2>&1 
end script 

파일이) 루트 또는 일반 사용자로 (스크립트를 시작하려고 할 때 /etc/init/server.conf

에 저장됩니다 일), 내가 얻을 :

내가 어떤 결과 initctl reload-configuration 같은 다른 다른 것들을 시도

$ init-checkconf /etc/init/server.conf 
File /etc/init/server.conf: syntax ok 

:

[email protected]:/etc/init# start server 
start: Job failed to start 

그럼, 결과 init-checkconf 내 구문을 확인했습니다.

어떻게해야합니까? 어떻게 작동시킬 수 있습니까? 그게 그렇게 힘들지는 않겠지?

+0

그리고/usr/local/bin/nodejs에 파일이 있습니까? –

+0

@MattPileggi 젠장, 네 말이 맞아 ... 그게 없어. 흠, 이상 하네, 나는 그 방법으로 노드를 사용하는 것을 기억한다. 다른 것을 시도하게해라. 결과 : 변경 없음 - 명령을'nodejs'로 직접 변경했으며'sudo -u' 부분을 제거하여 루트로 실행했습니다. 아무 것도 변경되지 않았습니다. 콘솔을 통해 직접 명령을 호출하려고했는데 작동합니다. – user169099

+0

죄송합니다. 뭘 더 봐야할지 모르겠군요. Forefront를 사용하기 위해 모든 init 스크립트를 설치했습니다.이 스크립트는 계속 실행되도록합니다. 그걸 들여다 봤어? –

답변

-3

Ubuntu 15부터는 더 이상 upstart가 사용되지 않습니다 (systemd 참조).

0

일반적인 시작 스크립트의 모양입니다. 보시다시피 노드 프로세스를 사용자 nodej로 실행하고 있습니다. 또한 사전 시작 스크립트를 사용하여 모든 로그 파일 디렉토리와 .tmp 디렉토리가 올바른 권한으로 만들어 졌는지 확인합니다.

#!upstart 
description "grabagadget node.js server" 
author  "Jeffrey Van Alstine" 

start on started mysql 
stop on shutdown 
respawn 

script 
    export HOME="/home/nodejs" 
    exec start-stop-daemon --start --chuid nodejs --make-pidfile --pidfile /var/run/nodejs/grabagadget.pid --startas /usr/bin/node -- /var/nodejs/grabagadget/app.js --environment production >> /var/log/nodejs/grabagadget.log 2>&1 
end script 

pre-start script 
    mkdir -p /var/log/nodejs 
    chown nodejs:root /var/log/nodejs 
    mkdir -p /var/run/nodejs 
    mkdir -p /var/nodejs/grabagadget/.tmp 

    # Git likes to reset permissions on this file, but it really needs to be writable on server start 
    chown nodejs:root /var/nodejs/grabagadget/views/layout.ejs 
    chown -R nodejs:root /var/nodejs/grabagadget/.tmp 

    # Date format same as (new Date()).toISOString() for consistency 
    sudo -u nodejs echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/nodejs/grabagadget.log 
end script 

pre-stop script 
    rm /var/run/nodejs/grabagadget.pid 
    sudo -u nodejs echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/nodejs/grabgadget.log 
end script 
관련 문제