Tomcat部署SpringBoot项目实践

无聊时候写了一个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就可以了。好了我部署服务器遇到的问题以及解决方案基本都写在了这里,经验之谈,希望能对大家有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值