项目发布踩坑记录

一、遇到的问题根据发布项目时间梳理

首先是本地运行的数据库先入云,这一步比较顺利,Redis一直用的是服务器上的,所以这个倒不用多管。

本地ssh连不上云服务器,但是云服务器提供的客户端又可以连,这个问题弄了半天,考虑到了开放端口、ssh是否启动(本地、云端)、连接记录的影响等等,最后,无果,用服务器提供的操作界面配合着宝塔继续向后推进

因为项目里面用到了nacos注册中心,所以要先配置好nacos,这一步起初看上去还挺顺利的,但是直接单机部署雷就已经埋下了

1、想全部用docker部署,在成功打包了所有的后端文件后,一个个启动的时候,发现对于api项目,需要启动的3个后端最多可以启动2个,服务器的负载就满了,这1核2G的服务器确实难顶。这么来看直接无脑部署应该是行不通了,准备调整每个项目的JVM内存参数。

2、但是在docker上部署我还需要重新调整我的dockerFile文件,当时我是直接本地打包后再直接交给docker进行打包的,想到参数调整估计没有那么顺利,决定后端先不用docker的方式进行部署,直接用宝塔进行部署,尽管通过宝塔可以很快调整参数,但是情况还是好不到哪去,3个后端起了两个之后就歇菜了,JVM的堆参数都到64M了,还是行不通,反复调整一直都跑不起来3个,十分痛苦

3。所以昨天晚上回寝室就开始去别的服务商看看有没有便宜一点的服务器2核2G的那种,逛了一圈下来,便宜的百块出头,腾讯云可以白嫖一个月,但是这个项目肯定不会只跑一个月的,华为云的直接就是一年百块出头一年,倒不是完全不能接受,但是想着一切都要重新配实在是想再试试,并且还有域名申请,肯定花不少天,最后看回阿里云,升级配置直接干到将近300块,直接不想。

4、这时候准备先调整下nacos的运行内存了,搜了半天发现,nacos启动确实花不少内存,主要取决于bin中的启动sh文件,单机部署的起始参数被我大砍后,跑3个不断反复调整的后端文件还是不能同时启动,考虑到开始启动消耗的资源肯定不小,于是开始一个个启动,并不断观察内存使用情况,最后终于全部运行完成,并在浏览器能够访问到,准备部署起前端,后端部署JVM参数如下:
在这里插入图片描述
注:起始部署只是刚启动占用的内存比较多,改的次数比较多后发现其实这个服务器部署api项目应该是没问题,访问的人不多就行

5、前端用了docker部署,倒是挺顺利,起先配置的base_url是后端的访问域名。

6、前后端开始联调

7、再给后端配置了域名后,登录页面是没有问题了,但是每次初始载入发送的拿取用户信息因为未登录所以会报错,准备联调完再解决,但这时下一个问题接踵而来,由于前端是直接的IP地址,而base_url是域名,虽然我登录没有问题,但是,只要是涉及到发post中拿token的就是直接报错(当时看着是这种情况),看在宝塔上后端的日志又没有所以然,琢磨一段时间后,决定直接命令行启动主要后端看请求报什么错,很快发现是Cookies不存在而在JWT获取时对想拿到的cookies解析,报了空指针,那么就是Cookies的问题,而不是什么post请求的问题,再想想既然它在请求中不存在了,那必然是跨域问题了,之后把base_url重新置为IP地址并带上后端端口7529,同时修改一下后端让cookies为空的异常被自定义异常捕获,不至于在前端报莫名的错误,这时候前后端访问基本没有问题了。

8、配置域名

由于之前没有在docker情况下配置过域名,所以前端也想放在宝塔上直接部署,配置了前端域名后,果然跨域造成的cookies带不上的问题又来了,我又重新配置了前端的base_url为后端域名,cookies还是带不上,确实,两个域名这不是肯定带不上不是。这时候想到了反向代理,了解后明白了运行原理,base_url的端口后都可以去掉了,代理到后端域名的80端口请求到nginx我们直接代理到我们的7529端口即可,整个请求过程后端域名不过是作为监听到nginx的base_url,我们换前端域名或者直接是IP地址都是可以的,cookies应该是带上了的,

9、但是奇妙的是访问后端前有些接口直接404(其实是前端没有找到资源,从客户端的请求中可以看到token已经带上了的,但是当时一直想着跨域和反向代理),因为我浏览器F12初始过滤了大部分没有必要的请求,这时候报错network里面连个请求都看不到,搞半天把过滤先关了,发现有些请求没有带上/api这个默认带上的部分,这让我相当奇怪,琢磨一段时间后,考虑到是反向代理对参数的映射处理出了问题,翻半天资料大致说用反向代理最好不要配置上初始路径,用/就好,不然映射配置规则很不好处理,挺无语,花了半天去调,去掉了请求中的/api部分,想着这总不会出错了把!!

10、想多了,部分请求还是404,映射的参数和真正的接口对不上,没折了,思考半天,还是先放弃用反向代理吧,想着是反向代理把我坑了,我梳理来梳理去,这反向代理也没毛病啊,但是映射路径对不上接口是事实,只好先放弃了,想着那直接只用一个域名把,base_url的端口改成后端 的就行

11、跑起来还是和之前的情况一样,这时候感觉不对劲了,这不可能还出现映射路径的问题啊!仔细看报404的接口,是document类型的,才发现是前端资源访问不到,嗯?这宝塔的前端不是直接传dist包就行了,新建指定这个包,怎么会有资源找不到呢??????不知所以然,找不到资源,那我换docker试试

12、配了这么多nginx了,配docker里的nginx是一样的,也不知道之前为什么会感觉配docker里的nginx会麻烦,哎,很快项目跑起来,页面资源也访问到了,项目终于顺利跑起来了

13、这时候回想下我的反向代理,发现确实压根不是反向代理配置错了,只是前端资源请求请求不到罢了,倒是让反向代理背了锅,不过好在项目发布还是完成了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值