家校 H5 部署说明
适用人群
开发、测试、运维
开发须知
开发中平时我们采用 npm run dev
进行启动,在转测前夕需使用npm run build && npm run pm2:prod
进行模仿测试、现网的项目部署方式,防止项目跑不起来造成转测失败。
项目介绍
wave 是一个基于 Nuxt 框架的公众号H5项目,页面采用同构渲染方式(SSR),网络请求采用axios,脚本、样式、图片采用 Vue 自带脚手架进行压缩、合并,项目部署采用nodemon及pm2。
工程目录介绍:关于 Nuxt.js : -)
├── api # 所有请求
├── assets # 资源文件
├── components # 组件目录
├── layouts # 布局目录
├── logs # pm2 启动日志
├── middleware # 中间件目录
├── mocks # 项目mock 模拟数据
├── modules # 模块目录
├── pages # 页面目录
├── pid # pm2 进程日志
├── plugins # 插件目录
├── server # 启动文件,基于koa
├── static # 静态资源
├── store # 全局 store管理
├── tests # 单元测试
├── utils # 工具类
├── .gitignore # git 忽略项
├── base.config.js # 项目基础配置
├── ecosystem.config.js # pm2 启动文件
├── jest.config.js # jest 单元测试配置
├── nuxt.config.js # nuxt 配置
├── tailwind.config.jss # tailwind 配置
├── package.json # package.json
└── README.md # 项目说明文档
pm2配置文件介绍:ecosystem.config.js(运维重点关注)PM2 配置相关说明
apps: [{
name : 'jiaxiaoclass',
script : './server/index.js',
cwd : __dirname,
args : '',
instances : 1, // 集群实例
'error_file' : './logs/pm2/error.log',
'out_file' : './logs/pm2/out.log',
'pid_file' : './pids/pid.pid',
'merge_logs' : false,
'ignore_watch' : ['node_modules', 'logs', 'pids'],
autorestart : true,
watch : false,
exec_mode : "cluster" // 集群模式
max_memory_restart : '1G', // 溢出重启
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}]
环境准备
nodejs安装包
环境搭建
以linux为例
- NodeJS
- 安装nodejs:nodejs版本建议取v8.11.1,同开发一致,下载:
wget https://nodejs.org/dist/v8.11.1/node-v8.11.1-linux-x64.tar.xz
- 解压:
tar –xvf node-v8.11.1-linux-x64.tar.xz
- 删除压缩包:
rm –rf node-v8.11.1-linux-x64.tar.xz
- 查看nodejs是否安装成功:
node –v
- PM2
- 全局安装pm2(pm2可以监控项目的运行情况)
npm i pm2 –g
- 查看pm2是否安装成功
pm2 -v
项目部署
运行node模块安装命令:npm install
启动服务,npm run build
, 测试: npm run pm2:test
,运维: npm run pm2:prod
查看实时日志信息,会有短暂的真空期,pm2 log jiaxiaoclass
查看日志
日志文件在 wave 下的 logs 目录,其中测试查看 /pm2/out-xx.log,运维查看yyyy-MM-dd.log,日志文件不一致。
如:
测试:tail –n 100 –f logs/pm2/out-0.log
运维:tail –n 100 –f logs/2018-04-03.log
同时由于采用了pm2部署项目,日志还可以在任意目录下运行:
pm2 logs(由于现网日志存于yyyy-MM-dd.log文件中,此命令对于运维无效)