2016-07-02 6 views
0

내 nodejs 서버에서 앱을 영원히 실행하고 싶습니다. 하지만 pm2forever에서는 작동하지 않습니다.Nodejs + expressjs - pm2 그리고 영원히 작동하지 않습니까?

$ npm start 

> [email protected] start /var/www/path/to/myapp 
> node ./bin/www 

내가 성공적으로 내 브라우저에서 응용 프로그램을 볼 수 있습니다 : 내가 수동으로 응용 프로그램을 시작하는 경우

.

그러나 PM2

는 :

$ pm2 start /var/www/path/to/myapp/app.js 

[PM2] Applying action restartProcessId on app [app](ids: 0) 
[PM2] [app](0) ✓ 
[PM2] Process successfully started 
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐ 
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory  │ watching │ 
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤ 
│ app  │ 0 │ fork │ 29210 │ online │ 0  │ 0s  │ 12.383 MB │ disabled │ 
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘ 

나도이 함께 노력 :

$ cd /var/www/path/to/myapp 
$ pm2 start app.js 

이 앱이 온라인 상태인지 말한다. 내 브라우저에서 응용 프로그램에 액세스하려고 할 때 :

This webpage is not available

ERR_CONNECTION_REFUSED

영원히 함께 :

$ sudo forever start app.js 
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 

그러나 운이 전혀 http://127.0.0.1:3000/

나는이 오류가 발생합니다.

내가 놓친 아이디어가 있습니까?

편집 : package.json에서

:

{ 
    "name": "iot", 
    "version": "1.0.0", 
    "private": true, 
    "scripts": { 
    "start": "node ./bin/www" 
    }, 
    "dependencies": { 
    "bcrypt": "^0.8.7", 
    "body-parser": "~1.15.1", 
    "connect-mongo": "^1.2.1", 
    "cookie-parser": "~1.4.3", 
    "debug": "~2.2.0", 
    "express": "~4.14.0", 
    "express-session": "^1.13.0", 
    "hat": "0.0.3", 
    "rand-token": "^0.2.1", 
    "method-override": "^2.3.6", 
    "mongoose": "^4.5.1", 
    "morgan": "~1.7.0", 
    "pug": "~2.0.0-beta3", 
    "serve-favicon": "~2.3.0" 
    } 
} 

내가 "scripts"를 제거하고 npm update를 실행하는 경우 수동으로 다시

{ 
    "name": "iot", 
    "version": "1.0.0", 
    "private": true, 
    "dependencies": { 
    "bcrypt": "^0.8.7", 
    "body-parser": "~1.15.1", 
    "connect-mongo": "^1.2.1", 
    "cookie-parser": "~1.4.3", 
    "debug": "~2.2.0", 
    "express": "~4.14.0", 
    "express-session": "^1.13.0", 
    "hat": "0.0.3", 
    "rand-token": "^0.2.1", 
    "method-override": "^2.3.6", 
    "mongoose": "^4.5.1", 
    "morgan": "~1.7.0", 
    "pug": "~2.0.0-beta3", 
    "serve-favicon": "~2.3.0" 
    } 
} 

그럼 내가 응용 프로그램을 시작하지만 오류가 :

$ npm start 
npm ERR! Linux 3.13.0-76-generic 
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "start" 
npm ERR! node v5.10.1 
npm ERR! npm v3.8.3 

npm ERR! missing script: start 
npm ERR! 
npm ERR! If you need help, you may report this error at: 
npm ERR!  <https://github.com/npm/npm/issues> 
+0

'package.json'의'scripts.start' 본문은 무엇입니까? – Nonemoticoner

+0

@Nonemoticoner 위의 편집을 참조하십시오. 감사. 'scripts.start'는 무엇을위한 것인가요? – laukok

+0

나는'start' 스크립트를 의미했습니다. 그것을 지나치게 단순하게 생각해서 죄송합니다. 흠, 당신은 디렉토리에 대한 노드를 시작하지만 영원히 및 pm2를 사용하면 특정 파일에서 시작합니다. Dunno,하지만 그게 원인 일 수도있어. – Nonemoticoner

답변

0

문제는 express-generator에 의해 발생합니다. 저는 이것을 앱 프로젝트 생성에 사용합니다!

http가 실행되는 bin 폴더가 있습니다. 그래서 나는 cd bin이되어야하고 pm2 start www이되어야한다.

+1

당신이 그것을 하나의 명령으로 짜낼 수 있다고 생각합니다 : pm2 start bin/www (cd'ing하지 않고) –