1. 程式人生 > >一種簡單的生產環境部署Node.js程序方法

一種簡單的生產環境部署Node.js程序方法

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程序方法