這里我不講如何安裝node典蝌、pm2的環(huán)境安裝,只講如何通過pm2一鍵部署头谜,怎么通過nginx反向代理到pm2上骏掀。如果有需要可以看我的另一篇文章:http://www.reibang.com/p/9034dd3101f1
一、準備工作
??注:項目根目錄上要創(chuàng)建app.js(express)柱告,監(jiān)控端口號: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`)
})
根目錄下創(chuàng)建ecosystem.json
{
"apps": [
{
"name": "項目名稱",//pm2啟動項目名稱
"script": "app.js",//node啟動程序
"env": {
"COMMON_VARIABLE": "true"
},
"env_production" : {
"NODE_ENV": "production"
}
}
],
"deploy": {
"production": { //生產(chǎn)環(huán)境
"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":{//測試環(huán)境
"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葵袭,執(zhí)行一下命令,拉去stg分支到source/目錄下
git clone -b stg git@********/***.git source/
2甲脏、在本地項目目錄下執(zhí)行一下命令眶熬,執(zhí)行命令前保證git全部提交完成妹笆,本地沒有更改块请、刪除娜氏、新增的文件
//發(fā)布到測試環(huán)境
pm2 deploy ecosystem.json dev steup
//上線到正式環(huán)境
pm2 deploy ecosystem.json production steup
等待執(zhí)行完成
3、查看pm2的服務列表
pm2 list
4墩新、nginx反向代理
server {
listen 80;
server_name Your Domain;
location / {
proxy_pass http://127.0.0.1:9527;
}
}
搞定贸弥,收工!就是這么簡單海渊。