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