记录第一次上线(阿里云为例 springboot+vue)

记录第一次上线的过程

因为是个小白,又因为疫情的原因,并且阿里大大很大气的送了一个服务器,正好临近毕业毕业设计快要完成,就想着能够上线试试看,然后学着配置服务器,买了一个域名!后面就讲接下来的遇见的很多很多的错误

1: 首先领取了阿里大大的免费赠送的服务器嘿嘿,配置还好把,自己选了windows(傻了吧唧的)然后内存总共32G其他配置不多说了,都能再阿里云搜到

2: 之后兴冲冲的开始研究了,首先服务器已经自动创建好了一个实例,就运行了这个实例,教程上说要先配置安全组规则放行端口(放行哪些端口看你喜欢了,你想用几个就用几个)
Ps:都说专有网络才需要配置。我按照网上说的,放行了自己要用的端口(80端口作为http协议传输端口,一定要放行哦)

3: 然后就可以通过公网ip来访问啦哈哈哈,然后我就打开了浏览器 访问了我的公网ip(123.56.18.250);不出所料,哼哼,就知道没那么简单,网站被阻拦了!!!!!然后我就用本机telnet ip 端口号 依次的试,结果发现自己配置的端口都无法登陆,但是默认配置的都可以登陆。难过plus,这样肯定是我自己太笨了啊,没配置好呗。怎么办啊,只能自己继续解决啊。(还想能找到阿里的错误一飞冲天了呢,嘿嘿(冷笑+99))
(这个图片真讨人厌 ┭┮﹏┭┮)
在这里插入图片描述

4: 怎么解决呢?首先肯定是度娘啊,然后度娘就给我转了CSDN呀。(这个真心不错,很多大牛能踩过的坑都发上来了)。但是这次大牛们也被我难住了哈哈哈(实际上因为我搜索的时候可能没抓住关键字,所以劝大家再度娘的时候也要准确而的把握自己的问题)。前期搜索没有解决问题,因为大家都说要配置安全组规则,但是我已经配置了啊。就去找了阿里的工单。阿里的工程师。工单给的反馈是说 telnet 也无法登陆我的端口,让我看看安全组端口有没有放行,然后我就按照阿里大牛前辈的指导,去寻找度娘,这次我搜多的 “安全组规则配置端口,公网ip无法访问”然后点击各种链接寻找答案,
终于被我发现了一个宝贝。这个帖子说有可能是windows的入栈规则没有配置,抓住了一个救命稻草啊,不能松开!!!
在这里插入图片描述
(具体如何配置,度娘哦,要好好宠幸人家呀)
我就去试试了,然后发现还是访问不了,准备放弃的时候,就想着最后试试看,我再telnet一次看看,结果通了,通了,wcnm(口吐芬芳)<-这是兴奋的啊,简直了。那为什么还无法访问呢,因为我犯了一个特别蠢蛋的错误,那就是没有启动服务,我访问鬼吗。猪一样。

5: 那怎么下载呢,首先你要看到自己的windows才能下载吧,那要先连接自己的服务器啊,怎么链接呢
去度娘搜啊,”如何连接自己的服务器,连接不上怎么办”事实证明,别人可以跟你废话,浏览器绝不,因为要是问题关键字不对,打一百个字都没有更何况人家还限制字数,所以度娘虽好,不要废话太多哦。”阿里云 服务器 连接”。然后一堆对症下药的帖子就出来了。最后发现 阿里云的默认 登陆名字是 adminstrator 你要配置两个密码 一个是服务器密码,一个是登陆连接密码(这个是6位的)。配好了,登陆。
这个登陆通了,但是看着很别扭怎么办,网页毕竟操作不舒服,这是电脑的远程桌面连接就出来了(可以任务栏直接搜索 远程桌面连接)
在这里插入图片描述
输入自己的公网ip 然后登陆密码就阔以了,要是不知道是哪个密码两个密码挨个试试就行了,
在这里插入图片描述
立马去下载了tomact,运行起来,然后三脚猫就出来,于是我兴奋的亲了一口脏不拉几的屏幕,区区小命何足挂齿,还是三脚猫好看!

6: 通了对吧,那咱就下一步啊,把自己的项目拉上去对不对,对,我也这样干了,然后我就被啪啪啪啪啪的打脸,简直像是被佛祖的五指山照脸扇。再次口吐芬芳2。。。拉上去有什么用?没用啊,因为跑不起来啊,你这是给炮弹不给大炮,给女朋友但是不让知道是谁啊,扯淡扯淡扯淡(重要的事情说三遍)。你要跑就要配置环境 jdk要有吧,对不对,然后配置环境变量啊,这就完了么,本人跑的是vue的项目,所以node要有啊,配啊,谁怂谁是怂蛋,
一番操作,环境配好,然后项目跑起来,(注意要注意你的项目的运行端口,入栈规则和安全组都要配置),我个人懒蛋一个,我直接吧项目运行端口改成了80,哈哈哈哈。省了好多步骤,不知道这样有啥坏处,以后再说,坑是一个一个的踩的,不要急,以后都是坑。
各种操作之后,项目跑起来可以访问了
(当然在这个页面我用了bootstrap,然后手机端也可以完美访问啦啦啦-----)
在这里插入图片描述
7: 但是现在有三个问题:
第一:由于打包文件过大足足有11M,造成了加载特别慢(等待解决哦)

第二:后端服务要拉上去吧!!

第三:数据库也要拉上去呀!!
逐步进行咯,关于打包过大的问题网上基本给出的统一意见是 ”按需引入“,关于这个词不多解释。意思大概是只引入你需要的东西(类似java引入jar包,只引入用得到的jar包),但是现在是个大工程,因为我当初都是图方便一口气全部引入了;
关于第二个问题,要把后端服务拉到服务器上因为是web项目,采用了maven+springboot的方式,首先应该打包成war包
这里我采用的是idea,具体打war包的方式依旧是 度娘啦啦啦给几个截图看一下
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
然后呢就可以打包啦

打包之后的样子再你项目的target的目录下
在这里插入图片描述
打包的名字我改过了,最后会生成一个war文件,你把这个文件丢在你服务器的tomact的webapp的目录下就行了,然后运行tomact,tomact会自己的解析运行的哦。

第三步 就是把数据库数据表拉到服务器上了,去网上搜过很多方法,都非常麻烦,正好我现在有再用navicat,通过这个软件连接自己本机的数据库之后
点击自己需要导出的数据库,
然后点击导出向导(用这种方式如果数据库有的字段名字很长会被截断,造成异常,不过自己可以手动更改回来)
在这里插入图片描述
在这里插入图片描述

选择DBase(*.dbf)这样就把数据表全部以.dbf的形式导出了。然后你再自己的服务器上安装破解版的navicat就阔以了。(因为navicat破解需要断网,如果你不需要再服务器上一直用,就不用破解直接点击使用,)
服务器安装好navicat后,连接自己再服务器上安装的mysql数据库(数据库安装不用说吧,自己度娘。)这里有一点要注意,你导入的话要选择一个库,我是先创建好一个库,然后导入的。你用自己的本机的远程连接之后可以很方便的把自己的电脑上的东西复制黏贴到服务器上,然后把前面导出的.dbf的数据表文件复制到服务器上,随便放哪里,然后使用navicar导入就完成了数据迁移(这种方法不知道适不适合大批量的数据迁移,或者需要官方正版什么的,反正我一个小白玩不担心这些)。
至此服务完整的拉到了服务器上。应该已经能跑了。
8: 以上走完过程,然后加自己又完善毕业设计到开始写记录已经5天了(中间的出现的错误,都是让我欲仙欲死)。2月27号开始测试流通性。结果无法登陆,返回404,众所周知,404是资源不存的错误,据此判断我这里发送请求返回404应该是请求路径不存在,但是很奇怪在本机上跑的很正常拉到服务器上就不存在了,推理得应该是tomact在运行的时候改变了我的路径,然后就各种调试不对,最后想到打印一下请求路径试试,在这里插入图片描述
结果发现路径位 myprject/login/hello。也就是说tomact在路径上为我添加了 myproject这个目录,恰巧这个目录又是我tomact下的文件夹的名字
在这里插入图片描述
至此,发现问题所在但是该怎么解决呢(ps:可能有人会觉得我把Myproject这个目录删除了不就行了,把文件直接放到webapps的根目录,这样我也想过,但是没敢试,因为太蠢了。蠢到我要用这方法我都想撞死在电脑上。程序员哎,要用别人看不懂的高级方式那才够装逼)。但是心有余而力不足,我不会高级方式,然后我就去拥抱度娘去了,最后得到完美的回馈在你tomact的conf文件夹下的server.xml文件下的host标签下加一句话就行

路径要改为你自己的路径

9:配置完就可以愉快的玩耍啦呀????那你是想多了,按照这尿性,不会那么顺利的,哼哼
后台返回错误代码是401。因为之前没遇见过401错误,并且我自己在过滤器配置了拦截,而拦截之后如果错误返回的就是401,所以我怀疑是我代码判断导致的401
在这里插入图片描述
事实证明虽然返回的是401,但是完全和我没关系啊,因为我试着打印了这个页面的所有可能为null的值但是发现都是很正常的获取到了该获取的值和地址(当时报的错误是 Forward error page exception [/order/sum] due to exception [null]])。这就让我纳闷了,既然流程都正常,没有null值,那么为什么会出现这个问题呢?再反复的确认和修改代码之下依旧是这个错误,但是我发现同样是发送请求,上面的登陆请求,注册请求却并未出现这种情况,所以我就暂时将else的代码注释掉,直接chain.doFilter(…,…)放行,结果却是能够正常访问了,但是出现了新的错误 这个错误是前端的错误 mediaform utf-8 …具体忘记了,就是AES加密的时候数据格式不正确造成的。然后老规矩咯,F12->network查看响应体的数据,发现后端我的返回的数据内容竟然被追加了几倍…。原本返回的应该是json数据,但是竟然变成了String数据,所以进入了我解密的代码部分。然后人家AES说这货是什么鬼,我不认识啊,也不符合进我家的规则啊,所以报个错吧,省的说我不讲情面。于是无情的报错就朝着我迎面而来,
找到了问题的根源那就能解决,既然是返回的数据错误那我就更改一下后端的数据,结果发现后端的数据返回的格式是是正确的,内容也正确那就纳闷这个流程错在哪里了,开始猜测是不是tomact对我的数据做了什么手脚,但是报着对Tomact官方坚信的信念,我又在本机Idea上面运行了一遍自己的代码,结果发现了同样的错误,这就可以断定是我的代码出了问题,猜测 既然Controller没问题,那就应该出错在我的过滤器上,但是过滤器并没有任何处理数据的过程。于是我再过滤器最后打印了一句话,按我猜测应该是无法打印的,结果竟然打印了,然后去查看网上关于Filter的解释,发现再每次chain.doFilter();之后应该return一次。具体原因不多说,度娘都有,我的错误是因为连续放行了两次,造成了一个请求被执行了两次然后就变成了上面的问题,于是我在每个chain.doFilter()之后都加上了return。问题解决.

10: 新的代码,打包(war),执行,不出所料依然是不通滴,经过一系列测试我发现如果我过滤器else部分存在,我就无法访问我的资源。(对于springboot2.x打成war包会出现这种情况,到现在我都没有一个明确的解决方法,只能注释掉我的过滤器。)
注释掉过滤器之后,万事大吉,所有数据都能正常的返回。长舒了一口气,内心简直比阿里巴巴给我offer都开心,然而然而事实是无情的,总会给你一个响亮的巴掌,我发现我的Post请求如果携带中文,那么就会报错500 报错是 JSON parse error: Invalid UTF-8 start byte 0xb9,(ps:这个鬼问题实际上困扰了我两天整整的,从2月27号晚上开始调试,到凌晨一点没解决,之后到29号正午都没解决)
这个错误让我很无奈,现在出了两个问题:
第一、我不能放弃我的过滤器,如果没有过滤器那么很多数据处理我都要再子在每个Controller进行一次,那这样代码看起来太蠢了(如果公司按行算工资,那我开心的要死了,哈哈哈嗝)。
第二、我的post请求肯定需要携带中文的,这是我的软件功能需求的必要部分。
关于第二个问题,百度的大佬给了几个意见:
1.设置tomact的server.xml <Connector … URIEncoding=UTF-8 />。
2.设置tomact的web.xml 配置过滤器编码
3.从代码层面添加配置:

spring.http.encoding.force=true
	spring.http.encoding.charset=UTF-8
	spring.http.encoding.enabled=true
	server.tomcat.uri-encoding=UTF-8

4.设置request的编码格式
为了稳妥我全部都配置了,然而不行,这时候我都已经很无奈了,
2月28号一整天都是在调整,然后各种方式尝试了之后,中间虽然有过转机,但是往往都会又新的BUG出现,一个个BUG解决过去之后,竟然又回到了最初的起点(我真的是呆呆的坐在电脑前了)
时间走到2月29号,在继续调试到上午12点发现我发解决之后,宣布放弃war包的方式,
11: 将备份的代码重新拷贝一份,然后打成jar包使用 命令
Jar -jar xxxxx.jar运行,正常运行,正常访问,过滤器正常工作。比打成war包简直轻松太多,不用配置那么多东西。
但是啊但是,万万没想到,老天爷又对我这个小可爱下了毒手,JSON parse error: Invalid UTF-8 start byte 0xb9这个错误就像个鬼一样粘着我不走啊,但是我身为共产主义的接班人,什么牛鬼蛇神都要打到,揍他吖的,我想这既然在服务器上出现这个问题,那我就试试看会不会在我本机上运行也会出现这种情况呢?
有了猜想就去试试,然后果不其然也出现了这个错误,POST请求不能带有中文,抱着这个疑问就去找了度娘,很简单只用改变一下运行的命令
java -Dfile.encoding=UTF-8 -jar xxxx.jar(这个命令如果不能用,很有可能是你环境变量配置的有问题)之所以出现这个问题还是因为编码的问题,但是是因为运行平台的问题,这个命令就是指定了以utf-8的格式来运行jar。反思一下,用编译器的时候不是也要指定一下编码格式吗?我觉得这应该是一个道理吧!!

12:终于一切都通,不知道后面会出现什么问体,我现在只想配置域名影射了,然后优化一下我vue的项目启动过程(打包文件11M呢。启动起来要1分32秒左右,这是回到了石器时代吗???),然后完成我的毕业论文

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

巴啦啦老魔王

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值