应用场景
实际项目开发中遇到如下场景:
- 公司jenkins并未配置前端自动化部署,且jenkins的内部配置,前端无法更改的情况下,
- 公司接口代理在后端进行,杜绝了跨域问题
- 前后端异地开发,为了减少后端/运维部署出现页面问题导致重新部署
为了解决如上问题,无奈之下,只能在搭建一个express+pm2的本地脚本进行页面检测
功能实现
首先我们建立一个app.js的文件,放在与package.json同级的文件下,后续我们会通过bat脚本将app.js打包复制到打包文件内。
端口声明
在app.js内声明要访问的项目端口:
// 端口声明
const port = 3000
IP获取
不同的电脑会有不同的ip配置,我们在后面的请求中,或者打开浏览器中需要获取到本地的ip。
获取ip我们通过os模块获取:
const os = require('os');
///获取本机ip///
function getIPAdress() {
const interfaces = os.networkInterfaces();
for (let devName in interfaces) {
let iface = interfaces[devName];
for (let i = 0; i < iface.length; i++) {
let alias = iface[i];
if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) {
return alias.address;
}
}
}
}
express本地服务搭建
引入模块
首先我们引入所需的模块
/**
* @private
* @param {string} staticPath
* @example express.static = require('serve-static')(staticPath);
*/
let express = require('express');
let open = require('open')
如上所示:我们引入了所需的express模块进行服务搭建,以及open模块进行浏览器自启动。
服务搭建与静态文件配置
之后我们通过执行express模块,并且使用static配置静态文件
let app = express();
app.use(express.static(__dirname))
app.use(express.static("要配置的静态文件"));
监听端口
通过listen方法监听我们前面声明的端口,之后通过open打开浏览器页面
app.listen(port, function() {
console.log(`server start: http://${getIPAdress()}:${port}`);
})
open(`http://${getIPAdress()}:${port}`)
启动服务
在express搭建完成之后执行命令node app.js
pm2守护进程
安装
使用npm进行安装即可
npm install -g pm2
常用指令
pm2 start app.js # 启动app.js应用程序
pm2 start app.js -i 4 # cluster mode 模式启动4个app.js的应用实例
# 4个应用程序会自动进行负载均衡
pm2 start app.js --name="api" # 启动应用程序并命名为 "api"
pm2 start app.js --watch # 当文件变化时自动重启应用
pm2 start script.sh # 启动 bash 脚本
pm2 list # 列表 PM2 启动的所有的应用程序
pm2 monit # 显示每个应用程序的CPU和内存占用情况
pm2 show [app-name] # 显示应用程序的所有信息
pm2 logs # 显示所有应用程序的日志
pm2 logs [app-name] # 显示指定应用程序的日志
pm2 flush # 清空所有日志文件
pm2 stop all # 停止所有的应用程序
pm2 stop 0 # 停止 id为 0的指定应用程序
pm2 restart all # 重启所有应用
pm2 reload all # 重启 cluster mode下的所有应用
pm2 gracefulReload all # Graceful reload all apps in cluster mode
pm2 delete all # 关闭并删除所有应用
pm2 delete 0 # 删除指定应用 id 0
pm2 scale api 10 # 把名字叫api的应用扩展到10个实例
pm2 reset [app-name] # 重置重启数量
pm2 startup # 创建开机自启动命令
pm2 save # 保存当前应用列表
pm2 resurrect # 重新加载保存的应用列表
pm2 update # Save processes, kill PM2 and restore processes
pm2 generate # Generate a sample json configuration file
pm2守护进程
之后通过执行pm2 start app.js命令我们就可以在后台运行本地打包的vue项目了。