一種簡單的生產環境部署Node.js程序方法
阿新 • • 發佈:2017-08-30
set process 一次 ann 來安 環境配置 load 修改 evel
最近在部署Node.js程序時,寫了段簡單的腳本,發覺還挺簡單的,忍不住想與大家分享。
配置文件
首先,本地測試環境和生產環境的數據庫連接這些配置信息是不一樣的,需要將其分開為兩個文件存儲 到config
目錄下,比如:
開發環境配置文件config/development.js
:
module.exports = {
port: 3001,
mysql: {
user: ‘root‘
}
};
生產環境配置文件config/production.js
:
module.exports = {
port: 80,
mysql: {
user: ‘myapp‘,
password: ‘2zbonsjzl305vkh3‘
}
};
另外還要建立一個程序自動載入相應環境的配置,文件config/index.js
:
var path = require(‘path‘);
// 通過NODE_ENV來設置環境變量,如果沒有指定則默認為生產環境
var env = process.env.NODE_ENV || ‘production‘;
env = env.toLowerCase();
// 載入配置文件
var file = path.resolve(__dirname, env);
try {
var config = module.exports = require(file);
console.log(‘Load config: [%s] %s‘, env, file);
} catch (err) {
console.error(‘Cannot load config: [%s] %s‘, env, file);
throw err;
}
假設應用的入口文件是app.js
,可通過以下方法載入配置:
var config = require(‘./config‘);
console.log(‘listen on port %s‘, config.port);
// 如果是開發環境,將輸出 listen on port 3001
// 如果是生產環境,將輸出 listen on port 80
本地開發測試
為了方便,我新建一個腳本文件run
,代碼如下:
export NODE_ENV=development
node app
要啟動程序,直接在命令行下執行./run
即可。
部署應用
新建部署腳本文件deploy
,代碼如下:
git reset --hard
git pull origin HEAD
npm install
pm2 stop myapp -f
pm2 start app.js -n myapp
此段代碼會自動拉去git倉庫中最新的一次提交的代碼,並使用npm來安裝package.json中列出的模塊, 然後先停止之前已啟動的應用實例,再啟動。
為了方便傳輸代碼到服務器端,需要將程序代碼提交到一個私有的git倉庫,首次在服務器端部署時, 需要先將代碼clone到服務器端,比如:
git clone git[@github](/user/github).com:leizongmin/node-uc-server.git ~/myapp
應用在服務器端運行時使用pm2
工具來管理進程,所以還需要先在服務器上安裝此工具:
npm install pm2 -g
完成以上準備工作後,我們就可以通過deploy
腳本來實現自動更新代碼:
- 將本地修改提交到遠程git倉庫
- 登錄服務器,進入
~/myapp
目錄 - 執行
./deploy
以上程序執行的環境為Linux,如果開發環境是Windows,需要將run
文件改為以下代碼:
set NODE_ENV=development
node app
一種簡單的生產環境部署Node.js程序方法