无聊时候写了一个SpringBoot的项目,在自己的机器上运行正常,tomcat自认为也用的不错,但是在把项目部署到远程tomcat服务器上的时候还是遇到了不少坑,写下此文,积累经验的同时也希望能够帮助到他人。
部署SpringBoot项目到tomcat上会有那些坑?
springboot自己集成了服务器,在没有服务器的支持下也能正常运行web项目。但是部署项目一般是打成jar包或者war包的形式。打成war包最后依托的还是tomcat服务器,这就必须得在springboot中配置有关tomcat的内容了。另外,对tomcat没有玩熟也会遇到tomcat上本来就有的各种坑,还有一些情况下可能JDK也会挖出很多的坑来,本来简简单单的一个部署工作,很可能就会卡上一下午甚至一天的时间。
SpringBoot里面需要的一些配置
1.MAVEN配置
首先把默认的jar包改成war包
<groupId>com.hz</groupId>
<artifactId>megaproject</artifactId>
<packaging>war</packaging>
其次把war包名字改成项目名,默认情况下会有发布以及版本信息
<build>
<finalName>mageproject</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
去掉内嵌的tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
2.代码配置
Tomcat读取SpringBoot的配置信息,需要继承SpringBootServletInitializer这个类,重写里面的configure方法。
@SpringBootApplication
public class MegaprojectApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
return application.sources(MegaprojectApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MegaprojectApplication.class, args);
}
}
配置好了上面的这些,代码里面的问题基本就没有了,如果仍有问题,可以给我留言或者自行百度。
Tomcat配置
tomcat里面的内容很多,这次部署的环境是windows下,Linux下的一些配置相关内容可以参见https://blog.csdn.net/qq_41803278/article/details/108115931
先到官网https://tomcat.apache.org/上下载匹配的版本zip包,解压。解压后的tomcat可能会出现控制台乱码、JAVA_HOME、CATALINA_HOME配置的错误,这些来一一讲解。
1.Tomcat控制台中文乱码
计算机所有的乱码问题一定都是编码和解码不匹配导致的,Tomcat采用的是utf-8的编码,但是内地的控制台一般都采用GBK进行解码,修改Tomcat的这个配置在conf目录下的loggin.properties文件中。搜索所有的utf-8,将其替换成GBK即可。
2.JAVA_HOME、CATALINA_HOME配置
这个两个配置还可能引发JRE_HOME、CATALINA_BASE等一系列的问题,当然,我们可以像JDK的配置一样在环境变量中去配置,但是建议在startup.bat、shutdown.bat中或者在catalina.bat这些脚本中去配置,这样可以避免系统中环境变量过多而覆盖其他的tomcat服务器。
在tomcat的bin目录下找到startup.bat文件和shutdown.bat文件,用记事本或者其他文本编辑器打开,可以在这两个文件的最上面加上这两行脚本,其路径分别为JDK的路径以及tomcat的安装路径。
SET JAVA_HOME=E:\software\studyApp\JDK11\jdk-11.0.8_windows-x64_bin\jdk-11.0.8
SET CATALINA_HOME=E:\software\studyApp\tomcat\apache-tomcat-9.0\apache-tomcat-9.0.39
如果在startup.bat或者shutdown.bat文件中配置,那么都需配置上,也可以只在catalina.bat中配置,因为他们的脚本里都会调用catalina.bat脚本文件。
server.xml配置
如果上面的配置都没问题了,把war包放到webapps下,直接点击bin目录startup.bat就可以运行了。正常情况下tomcat运行后是会多出一个项目目录以及一个Root目录的(这两个目录在运行前应该删除),否则很可能就是server.xml配置有问题。在标签中添加一个context标签,内容如下:
<Context path="" docBase="E:\software\studyApp\tomcat\apache-tomcat-9.0\apache-tomcat-9.0.39\webapps\mageproject.war" />
docBase配置的就是war包的完整路径。完成了这些配置,再次运行试试,如果出现了令人激动的Spring标志,那么恭喜你运行成功了。
结语
部署项目的时候还有一个就是JDK的版本不匹配的问题,项目和远程机器上的JDK不匹配导致Spring标志出不来,下载一个匹配的JDK就可以了。好了我部署服务器遇到的问题以及解决方案基本都写在了这里,经验之谈,希望能对大家有所帮助。