nodepm2

node 项目多环境部署

# node 项目多环境部署

# 1. 新建环境变量文件夹 config

env.js

module.exports = {
  dev: {
    MODE: 'dev',
    ENV_API: 'http://localhost:8867',
    ENV_PROD: 8000
  },
  test: {
    MODE: 'test',
    ENV_API: 'http://localhost:8867',
    ENV_PROD: 8001
  },
  pro: {
    MODE: 'pro',
    ENV_API: 'http://localhost:8888'
  }
}

# 2. 入口等文件环境变量配置读取

const env = require('./config/env')

listen(env[process.env.MODE].ENV_PROD)

# 3. pm2 启动部署

如: dev.config 配置如下

module.exports = {
  apps: {
    name: 'im-server2222',
    exec_mode: 'cluster',
    autorestart: true,
    max_memory_restart: '512M',
    instances: 2,
    script: 'index.js',
    args: 'start',
    ignore_watch: ['node_modules', 'logs', 'public'],
    error: './logs/app-err.log', // 错误日志路径
    output: './logs/app-out.log', // 正常日志路径
    log_date_format: 'YYYY-MM-DD HH:mm:ss', // 指定日志文件的时间格式
    env: {
      MODE: 'dev' // 环境参数
    }
  }
}

# 4. 启动命令

pm2 start pm2_config/dev.config.js

# dev代表环境变量

pm2 del all #删除所有服务

# 本地环境 cross-env 使用

  1. 环境变量配置 package.json
"scripts": {
    "dev": "cross-env MODE=dev  node index.js",
    "test": "cross-env MODE=test  node index.js ",
    "deploy": "bash deploy.sh"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cross-env": "^7.0.3",
}
  1. 环境读取
process.env.MODE
  • deploy.sh 脚本
#!/usr/bin/env sh
# set -e

# echo $HOME  #路径
cross-env MODE=test  node index.js
cd -
上次更新: