将后端项目部署到Linux服务器上所遇到的坑
1.Linux离线安装MariaDB: yum install rsync nmap lsof perl-DBI nc 安装失败:
2.Linux中/根目录内存不够,如何扩容:
3.配置外配置Tomcat后,添加javax.servlet依赖后,项目启动失败
4.Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Unexpected AOP exception; nested exception is java.lang.IllegalStateException: Unable to load cache item
1.Linux离线安装MariaDB: yum install rsync nmap lsof perl-DBI nc 安装失败:
将项目部署到云服务器或者本地虚拟机的时候,为了便于线上操作需要在服务器中安装Mysql或者MariaDB这两个功能差不多,都是Oracle旗下的产品,这样用户就可以在线上实现增删改查;
Linux的MariaDB安装分为线上安装和离线安装:
线上安装:
[mariadb]
name = MariaDB-5.5.39
baseurl=https://downloads.mariadb.com/files/MariaDB/mariadb-5.5.39/yum/rhel6-amd64/
// alternative: baseurl=http://archive.mariadb.org/mariadb-5.5.39/yum/rhel6-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
新建一个文件,输入上述地址,就会线上自动安装,但是线上使用的是国外资源,所以非常慢,很多人使用的是离线安装,离线安装的的第一步yum install rsync nmap lsof perl-DBI nc 是安装依赖环境包。
我也是第一步就报错了

系统一直寻找我的线上路径,然后显示路径无效(当时[mariadb]文件中安装mariaDB相关资源的路径已经失效),试了很多方法都不管用,但是根据离线安装教程安装已经上传的安装包时却没有报找不到资源的错,思前想后,离线安装需要事先将所需安装包下载好再安装,但是:yum install rsync nmap lsof perl-DBI nc属于安装依赖,为之后要安装的安装包布置好环境,这个是没有下载的,Linux中没有,所以需要到线上去下载你需要的依赖,找了一个能用的资源地址后,将线上地址布置好后就可以正常下载依赖了,并且可以正常离线安装:

资源下载地址:


云服务器离线安装MariaDB安装步骤和解决办法:
https://www.cnblogs.com/haoliyou/p/10191926.html
2.Linux中/根目录内存不够,如何扩容:
安装过程中,由于Linux下home目录当初内存分配的太少,导致安装的时候,内存不够,重新分配内存只有重装系统的时候可以分配内存空间,所以只能使用扩容:
https://www.cnblogs.com/bigyang/archive/2018/04/25/8948184.html
3.javax.servlet启动失败
为了将项目打包为war包,需要将SpringBoot内置的Tomcat去掉,因为SpringBoot内置的Tomcat会将项目打成jar包,为了避免冲突,去掉后需要配置一个外部的tomcat来启动项目
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>provided<version>
</dependency>

添加上面以来后,clean和instail都没问题,启动却报错,servlet错误,具体原因不清楚,但很显然是上面的依赖没有给我想要的结果:
相关问题可以参考以下链接,解释的很详细:
https://blog.csdn.net/fanshukui/article/details/80258793
给它换一个依赖,
tomcat-embed-jasper下面的tomcat-embed-core中就有这个javax.servlet,所以我换了一个依赖,ok了

4.Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Unexpected AOP exception; nested exception is java.lang.IllegalStateException: Unable to load cache item
首先在Linux中安装Tomcat,进入虚拟机中的bin文件夹中,输入./startup启动tomcat,然后在浏览器中打开:

打开成功,将项目打成war包,放到Linux中tomcat下的webapps里,启动tomcat后,访问后端项目中的:Hello World~,失败

进入tomcat中的logs目录下查看日志:cat catalina.out


很显然项目启动失败了,各种百度各种结果,各种失败,都是idea依赖问题,但我这个是Linux下的tomcat启动的,无法解决我的问题,一直到搜索:
Unexpected AOP exception; nested exception is java.lang.IllegalStateException: Unable to load cache item
才得到答案:
https://blog.csdn.net/qq_38700870/article/details/105817101?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control
虽然作者也不知道原因,好在报错的情况都一致
是aop的问题,个人怀疑是因为SpringBoot自带的aop版本低了,至于是和什么搭配使用导致的,还不清楚,但是配上新版本的aop依赖后,就可以运行了。

在项目中添加新的aop依赖,然后重新打包部署启动,浏览器打开成功

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)