鸡头掰脸搞个环境二
时间不够用啊
为了找工作,整个人扑在面试八股上,面对面试题编程,别说作品了,算法都好一阵没刷了。不过我这人对死记硬背十分反感,八股涉及的东西必须从理论上学明白了才记得住,也倒逼自己学到了些真东西。但这样就比背慢多了,总会被网上的速成路线的速度刺激到,以前既要也要的老毛病有点要复发。
招聘的情况也令人焦虑,公司们招人的热度降了,要求也越发不客气,boss直聘还能刷到boss建议,就离谱。

焦虑下看啥都焦虑,学习状态有点萎靡。那就趁这个时间搞环境吧!(台式上基本什么都没装,这篇仍是没图干讲),行动起来烦恼就让路了,废话不多说,开干!

开干
上回除了把中间件弄好了,项目也编译完了,包都下载好了(这块贼熟)。所以今天的第一步是,直接启动!打开service页面,全选,启动,让我看看今天能遇上什么坑。
坑一
服务一个都起不来,啥子情况?看看控制台,报databse url的错,那是mysql配置的问题咯。看看配置,没有application,只有bootstrap,好奇怪,而且bootstrap里也没有mysql的配置,有点懵。
别懵,这不是普通springboot项目啦!学的都记哪去了?bootstrap优先级更高,放的都是没有就起不来的配置,“正常”的配置都给nacos管了。那nacos的配置在哪呢?在mysql里。上次弄组件的时候有没有插入数据记不清了,我连上mysql看一下就知道了。
坑二
mysql咋连不上了?上次弄完组件我连过,咋突然不好使了呢?再试试组件的管理平台,也都连不上了,那我去虚拟机里试试,全都能访问。如果这样,那么真相只有一个——是虚拟机的问题。
经过我的反复试验,应该是虚拟机重启过,防火墙开了导致的网络问题,关闭了虚拟机防火墙,mysql就连上了。检查了mysql里的nacos配置,没问题,可能只是网络问题吧,再启服务看看。
坑三
小心意义的启动了一个服务,启动成功,开心。再启动一个,又成功,嘿嘿。一口气把剩下的都启动了,悲剧了,不好使的占一半……让我来看看报的什么错,找不到class,啥class啊?guava,项目里也没这个代码额,这咋整。
没有这个代码,那绝大多数问题是因为pom文件有问题,maven没下这个包,或者maven编译时没拿这个包。查找所有pom文件内容,发现这个包被exclude了(不太理解为什么,可能是因为这个包很常用,默认我有,怕版本冲突吧)。那我不exclude是不就行了?再重启,欸呦喂,能启动了。
坑四
刚开心没几秒,发现之前启动了的服务全在报错,报错信息写着cannot register RM。RM这词我熟,分布式事务、两阶段提交……肯定是seata有问题了。
于是我想起来,这是上一次留的坑:为了学习,没改seata调用nacos的IP。这把真是加深印象了,赶紧从127改成了宿主机IP,再启动看看。
坑五
还是不行,咋回事,服务依然报cannot register RM。
冷静一下,我来缕一缕:报这个的意思是服务找不到seata,服务是通过nacos注册中心找seata。服务跟nacos通信是没问题的,不然配置获取不到启都启不来。seata配置的nacos的IP刚改了,seata能找到nacos把自己注册进去。那问题是nacos里的seata的IP不正确吧。
检查了组件配置和docker-compose文件,发现是seata配置自己的IP(127.0.0.1),被nacos拿去了,服务根据nacos的指示,去127.0.0.1找seata,那能找到么……复杂的系统里,IP可不能乱配本地,不一定出现什么问题。修改之后重启组件一系列工作,好了,所有的服务都起来了。

到位了,歇歇
没有截图,又是以已经明白问题原因了的视角去写,看起来好像没解决几个问题。但耗费的时间和精力是真的多,后台服务全都启动的喜悦都不足以支持我把前端也搞了,只能下次一定了。
前端的挑战就更大了,懂的不如后端多,后端的逻辑也没验证过,很可能出现后端有问题但在前端查了老半天的情况……不过,办法总比困难多,出了问题,可以搜嘛,再不行也可以问问GPT(科技改变生活)。
那就下次再见了,下机,洗澡,睡觉。
