部署相关问题
缓存问题
原因: 一些文件,比如配置文件,每次修改,部署发版,都导致因为缓存,拿不到最新的文件,可能会报错或者拿不到最新的数据
- 1、打包的静态文件,生成随机数hash
- 2、配置文件加上参数随机数,每次发版部署请求文件都会是拿到最新的文件
<script
type="text/javascript"
src="config.js?t=<%=+new Date()%>"
></script>
- 3、禁止index.html缓存
- 比如缓存了
index.html,静态资源都放在了CDN,那么前端每次部署更新的时候,由于了缓存了index.html,页面及时强刷新了,也是看到旧的内容,旧的index.html。因为index.html引用的js、css的脚本都是旧的,如果不禁止缓存index.html, 会导致需要刷新CDN (去源站拿到最新资源), 用户才能看到最新的内容
- 比如缓存了
静态资源存放到CDN问题
-
1、前端打包好的静态资源放到CDN、进行资源内容分发的网络加速
-
2、利用CDN加速访问资源
-
3、设置CDN的静态资源缓存
-
4、每次发布之后,需要刷新CDN,可以通过刷新CDN的脚本
修改pm2启动node端口
- 1、通过pm2的配置文件
- 2、指定env参数,设置node的环境变量端口
PORT
module.exports = {
apps: [
{
name: 'my-nuxt-demo',
// 多进程集群模式、让PM2 管理多个 Node.js 实例
exec_mode: 'cluster',
instances: 'max',
script: './.output/server/index.mjs',
autorestart: true,
watch: false,
max_memory_restart: '1G',
env: {
"PORT": 3000,
"NODE_ENV": 'production',
},
// 预发布环境
env_pre: {
"PORT": 3001,
"NODE_ENV": "production",
},
// 生产环境
env_prod: {
"PORT": 3002,
"NODE_ENV": "production",
},
out_file: './logs/pm2-out.log',
error_file: './logs/pm2-error.log',
log_date_format: 'YYYY-MM-DD HH:mm:ss',
},
],
}
- 使用指定的环境变量
pm2 start ecosystem.config.js --env pre # 使用 env_pre
pm2 start ecosystem.config.js --env prod # 使用 env_prod
查看监听的端口
- node应用
- 通过pm2来启动的话,可以通过pm2 logs查看
- netstat命令
- 网络状态分析命令
- curl命令
- 发送网络请求命令工具
- 检查是否有返回响应体内容
# 查看pm2日志 可以通过pm2 log查看pm2启动的日志,里面可以看到监听的端口
pm2 log
# 使用netstat命令
# windows
netstat -ano | findstr 3002
# linux
netstat -tulnp | grep 3002
# curl命令
curl 127.0.0.1:3002