通过pm2一键部署,nginx反向代理

2018-06-14
  • 2031
  • 0

这里我不讲如何安装nodepm2的环境安装,只讲如何通过pm2一键部署,怎么通过nginx反向代理到pm2上。如果有需要可以看我的另一篇文章:https://www.jianshu.com/p/9034dd3101f1

一、准工作

⚠️注:项目根目录上要创建app.js(express),监控端口号:9527

const express = require('express')

const history = require('connect-history-api-fallback')

const env = process.env.NODE_ENV || 'development'

 

const path = require('path')

const app = express()

 

app.use(history())

 

if (env !== 'development') {

  app.use(express.static(path.join(__dirname, 'dist')))

}

 

// 错误处理

app.use((err, req, res, next) => {

  res.status(442).send({ error: err.message })

})

 

const server = app.listen(8086, () => {

  console.log(`Express started in ${app.get('env')} mode on http://127.0.0.1:8086`)

})

根目录下创建ecosystem.json

{

  "apps": [

    {

      "name": "项目名称",//pm2启动项目名称

      "script": "app.js",//node启动程序

      "env": {

        "COMMON_VARIABLE": "true"

      },

      "env_production" : {

        "NODE_ENV": "production"

      }

    }

  ],

  "deploy": {

    "production": { //生产环境

      "user": "root",//ssh登录名

      "host": ["10.15.?.???"],//ssh host

      "port":"22",//ssh 端口

      "ref": "origin/stg",//git 分支

      "repo": "",//git url地址

      "path": "/data/www/website",//服务器部署目录

      "ssh_options": "StrictHostKeyChecking=no",//ssh缓存是否开启

      "post-deploy" : "cnpm install && npm run build && pm2 startOrRestart ecosystem.json --env production",//git 部署完成后,启动项目的命令集

      "env"  : {

        "NODE_ENV": "production"

      }

    },

    "dev":{//测试环境

      "user": "root",

      "host": ["10.15.?.???"],

      "ref": "origin/stg",

      "repo": "",

      "path": "/data/www/website—test",

      "ssh_options": "StrictHostKeyChecking=no",

      "post-deploy" : "cnpm install && npm run build && pm2 startOrRestart ecosystem.json --env production",

      "env"  : {

        "NODE_ENV": "production"

      }

    }

  }

}

==注意:package.json中的devDependencies中的依赖放到dependencies==

二、服器站点目git

1、进入站点目录/data/www/website,执行一下命令,拉去stg分支到source/目录下

git clone -b stg git@********/***.git source/

2、在本地项目目录下执行一下命令,执行命令前保证git全部提交完成,本地没有更改、删除、新增的文件

//发布到测试环境

pm2 deploy ecosystem.json dev steup

//上线到正式环境

pm2 deploy ecosystem.json production steup

等待执行完成
3、查看pm2的服务列表

pm2 list

4nginx反向代理

server {

        listen       80;

        server_name  Your Domain;

        location / {

            proxy_pass http://127.0.0.1:9527;

        }

}

搞定,收工!就是这么简单。