2016-11-28 5 views
1

ShipIt (w ships-npm 플러그인)을 배포 할 때 정확한 환경에서 노드 응용 프로그램을 시작하려고합니다. 나는 준비 ENV에 배포를하고 있지만 표시 한 바와 같이 앱을 개발 모드에서 시작 YJ를 - 그는 선박ShipIt 노드가있는 노드/익스프레스 배치 - 올바른 NODE_ENV를 설정할 수 없음

>$ shipit staging deploy 
Starting deployment... 
.... 
Running 'start_server' task... 
Running "cd /opt/hello/releases/20161128182300 && npm start" on host "myhost.live". 
@myhost.live 
@myhost.live > [email protected] start /opt/hello/releases/20161128182300 
@myhost.live > pm2 startOrReload ecosystem.json 
@myhost.live 
@myhost.live [PM2] Applying action reloadProcessId on app [hello](ids: 0) 
@myhost.live [PM2] [hello](0) ✓ 
@myhost.live ┌──────────┬────┬──────┬──────┬────────┬─────────┬────────┬─────┬────────── 
@myhost.live │ App name │ id │ mode │ pid │ status │ restart │ uptime 

배포 process.env.NODE_ENV ├──────── ──┼────┼──────┼──────┼────────┼─────────┼────────┼ ─────┼────────── @ myhost.live │ 안녕하세요 │ 0 │ 포크 │ 7224 │ 온라인 2 │ 0
│ └──────────┴─ ───┴──────┴──────┴────────┴ myhost16.live 사용 pm2 show <id|name> @ ────────┴────────┴─────┴────────── 이 응용 프로그램에 대한 자세한 정보를 얻을 완료 9.01의

후 'start_server를은'나는 '준비'모드에서 배포하는

var express = require('express'); 
var app = express(); 

app.get('/', function (req, res) { 
    res.send('Hello World! Now you can call Express at 3637'); 
}); 

var port = process.env.PORT || 3637; 

app.listen(port); 
console.log('Now on ' + process.env.NODE_ENV + ' server'); 
console.log('Express app listening on localhost:'+ port); 

콘솔을 '준비'에 NODE_ENV을 설정 ...하지 않도록

hello.js 것이라고 생각 로그인 상태 :

0|hello | Now on development server 
0|hello | Express app listening on localhost:3637 

shipitfile.js

... 
// this task starts the application with PM2 
shipit.blTask('start_server', function() { 
    var cwd = shipit.releasePath; 
    return shipit.remote("cd " + cwd + " && npm start"); 
}); 

shipit.on('deployed', function() { 
    console.log("Deployed !"); 
    shipit.start('start_server'); 
}); 
... 

package.json

... 
"main": "hello.js", 
"scripts": { 
    "start": "pm2 startOrReload ecosystem.json", 
... 

ecosystem.json 내 ecosystem.js이 파일에 문제가 있는지

{ 
    "apps" : [ 
    { 
     "name": "hello", 
     "cwd": "/opt/hello/current", 
     "script": "hello.js", 
     "args": "", 
     "watch": true, 
     "node_args": "", 
     "merge_logs": true, 
     "env": { 
     "NODE_ENV": "development" 
     }, 
     "env_production": { 
     "NODE_ENV": "production" 
     }, 
     "env_staging": { 
     "NODE_ENV": "staging" 
     } 
    }] 
}  

? 피드백

PM2와

답변

2

에 대한

덕분에, 생산 환경 변수 (env_production에서 설정)를 사용하여, 당신은 --env 옵션을 지정해야합니다.

Here 당신은 그것에 대해 더 많은 정보를 찾을 수 있습니다.

그냥 package.json에 시작 속성에 --env 생산을 추가하여 문제를 해결하려면

"start": "pm2 startOrReload ecosystem.json --env production", 
+1

감사합니다! 이 경우에는 package.json 파일에서 2 개의 스크립트, 시작 준비 및 시작 프로덕션을 설정해야합니다. – erwin