2016-11-28 12 views
1

を設定することはできません私はShipIt(船-NPMプラグインワット)での展開時に正しい環境で自分のノードアプリを起動しようとしていますか?私は、ステージングENVでそれを展開していますが、彼はYJ-船ShipItノード/ PM2と特急展開が - 正しい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述べ表示するなどのアプリは開発モードで起動し├──────── ──────────────────────────────────────────────────────────── ─────┼──────────オンライン│2│0
│7224│myhost.live││0│ハローフォーク@ └──────────┴─ ───────────────────────────────────────────────────────── ────────┴────────┴─────┴──────────myhost16.live使用pm2 show <id|name> @ アプリ完成 の詳細を取得します9.01秒

後の 'START_SERVER' 私は 'ステージング' モードで展開する 'ステージング' にNODE_ENVを設定するだろうと思った...

hello.js

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); 

コンソールわかりませんログイン状態:

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であなたのstart属性に--env生産を追加するには、問題を解決するには、次の

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

感謝を!この場合には、私は、2つのスクリプトを設定開始のステージングをし、私のpackage.jsonファイルでの生産を開始する必要があります... – erwin

関連する問題