2014-06-24 2 views
8

OpenShift의 무료 티어에 첫 번째 Node.js 앱을 배포했는데 잘 작동합니다.OpenShift에서 Forever.js를 사용해야합니까?

충돌이 발생하면 OpenSift가 자동으로 노드 응용 프로그램을 다시 시작합니까, 아니면 Forever.js를 설정해야합니까? 나는 그것을 세우려고했는데 효과가 없을 것이다. node_modules/forever/bin/forever start app.js를 실행 한 후 나는이 출력 얻었다 (forever의 로컬 복사본으로, DIR을 app-root/repo 된 작업) :

warn: --minUptime not set. Defaulting to: 1000ms 
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms 
info: Forever processing file: app.js 

fs.js:240 
    return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); 
       ^
Error: ENOENT, no such file or directory '/var/lib/openshift/5397416f5004466c0b000080/.forever/VQMF.log' 
    at Object.openSync (fs.js:240:18) 
    at Object.startDaemon (/var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever.js:406:14) 
    at /var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever/cli.js:258:13 
    at /var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever/cli.js:145:5 
    at Object.oncomplete (/var/lib/openshift/5397416f5004466c0b000080/app-root/runtime/repo/node_modules/forever/lib/forever.js:358:11) 

그래서, 나를 위해 내 애플 리케이션의 건강을 관리 OpenShift 않습니다

을, 또는 내가 작업을 영원히 얻을해야합니까? 그렇다면, 내가 가진 오류에 대한 어떤 생각?

+0

완벽한 질문, 나는 (또한 당신의 응용 프로그램을 다시 시작하는) 계수부터 이동 알 필요가 정확히 무엇을. Modulus에는 OpenShift가 그렇게 할 수 있는지 여부를 아는 사람에게 전자 메일을 보내는 옵션도 있습니다. (노드 수퍼바이저에는 옵션이있는 것처럼 보이지 않습니다.) – user949300

답변

6

예, OpenShift는 충돌시 노드 응용 프로그램을 자동으로 다시 시작합니다. OpenShift는 forever.js를 사용하지 않지만 node-supervisor을 사용합니다. 존재하지 않는 것을 요구함으로써 그것을 테스트 할 수 있습니다. 앱을 다시 시작하면 로그가 빠르게 커질 수 있기 때문에 빨리 해결할 수 있습니다.

DEBUG: Running node-supervisor with 
DEBUG: program 'server.js' 
DEBUG: --watch '/var/lib/openshift/53a9e06ae0b8cde26300008e/app-root/data/.nodewatch' 
DEBUG: --ignore 'undefined' 
DEBUG: --extensions 'node|js|coffee' 
DEBUG: --exec 'node' 
DEBUG: Starting child process with 'node server.js' 
DEBUG: Watching directory '/var/lib/openshift/53a9e06ae0b8cde26300008e/app-root/data/.nodewatch' for changes. 
+0

흥미 롭군요, 그 로그는 어디에 있습니까? 그리고'main'이나'scripts.start'를 사용합니까? – Jeff

+0

귀하의 응용 프로그램 아래 openshift 사이트에서 명령 문자열을 사용하여 시스템에 ssh. 그런 다음 cd app-root/logs를 실행하면 모든 로그가 나타납니다. 나는 앱을 시작하기 전에 시작/설치/설정 등 많은 것들이 있기 때문에 배포하기 위해 스크립트를 사용하고 있다고 확신합니다 ... 어떤 스크립트인지 알기 위해 실제로 파고 들지 않았습니다. – Ben

+0

신난다, 고마워! – Jeff

5

현재 OpenShift의 기본 동작은 시계를 시작하고 nodejs 응용 프로그램을 다시 시작 supervisor을 사용하는 것입니다 : 여기 노드 관리자를 실행중인 것을 알 수 OpenShift에 nodejs.log의 로그입니다. 귀하의 응용 프로그램이 main 항목 (containing the name of your server script)와 유효한 package.json 파일이 포함

  1. 경우, OpenShift를 시작 supervisor를 사용하여 응용 프로그램을 초기화합니다 : 여기

    은 nodejs에 대한 다양한 초기화 옵션에 대한 간단한 개요입니다 그 스크립트.
  2. 앱에 force_npm_deploy marker file (빈 파일이 .openshift/markers/use_npm) 인 경우 - OpenShift는 단지 npm start을 실행합니다. 이 파일은 package.json 파일의 scripts.start 엔티티에 정의 된대로 실행됩니다.
  3. 모두 실패하면 OpenShift는 server.js을 사용하여 supervisor을 사용합니다 (폴백 옵션으로 사용).

일부 추가 참고 사항 여기에 사용할 수 있습니다 https://www.openshift.com/blogs/10-reasons-openshift-is-the-best-place-to-host-your-nodejs-app#npm

+0

감사합니다. 이것은 도움이되었습니다. :) – Jeff

관련 문제