SpringBoot项目打war包在Linux系统tomcat发布
我的环境:IDEA、阿里云Centos7.7、SpringBoot2.5.5 、MySQL5.7.30、Tomcat9.0.46、jdk1.8
1 修改SpringBoot项目
因为Springboot内置有tomcat,要使用外部的tomcat需要做一些修改
修改pom.xml文件里的打包方式,Springboot默认打jar包,改为war
添加依赖,使得打包时忽略内置的tomcat
<!--为了打war包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope> <!-- 只在调试时使用,打包后不使用-->
</dependency>
设置war包的名字,也可以不设置,用默认的名字
<build>
<finalName>你想设置的war包名</finalName>
<plugins>
创建一个类继承SpringBootServletInitializer类,我将它放在和springboot启动类同一目录下
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
//打war包需要创建的类
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(PetsiteApplication.class);
}
}
修改数据库的配置信息,连接到服务器上的数据库
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://服务器公网ip:3306/项目名?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF8
driver-class-name: com.mysql.jdbc.Driver
检查Mysql版本、Mysql依赖和驱动名(8.0:com.mysql.cj,jdbc.Driver)是否一致
打包之前先运行一下SpringBoot项目,看看是否能正常运行
2 使用maven打war包
双击clean清除原来的包
点上方圆形闪电按扭,忽略测试文件
双击package打包
war包的默认生成路径是在target目录下
3 Linux系统Tomcat上发布
需要的环境:jdk1.8, tomcat, mysql
如果阿里云的服务器,要先在安全组开启端口,怕麻烦可以1/65535全开
配置防火墙
不想弄可以直接使用下面这两个命令关闭
停止:
systemctl disable firewalld
禁用:
systemctl stop firewalld
查看状态
systemctl status firewalld
启动
systemctl start firewalld
开机自启
systemctl enable firewalld.service
开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
–permanent永久生效,没有此参数重启后失效
重新载入(使新添加的端口生效)
firewall-cmd --reload
查看已开启的端口
firewall-cmd --zone=public --list-ports
到这里我们的防火墙就配置好了
查看更多关于防火墙的命令
配置Tomcat
上传项目.war包
cd 你的tomcat安装路径/webapps/
使用远程文件传输工具将IDEA的target目录下生成.war包上传到webapps目录下,我使用的是xshell和xftp,Tomcat启动时会自动识别解压这个.war包。
配置server.xml文件
cd 你的tomcat安装路径/conf/
vim server.xml
修改端口为80或者8080 (http默认为80端口,使用80端口在网址上不用输入端口号, 也可以是其它端口)
在文件最下方的Host中加入
<Context docBase="你的.war包名" path="" reloadable="true" name="/你的.war包名" />
docBase: 项目路径, 可以是绝对路径, 也可以是相对于appBase的相对路径
path: 网站路径, 设置为“”就可以直接使用ip+端口访问网站
reloadable: 项目的文件改动时自动更新网站, 但会占用更多资源
name: 为防止path=“”时项目重复部署
name=“服务器ip或者域名” (Host的name)
path=“” 访问路径:ip:端口
path=“/项目名” 访问路径 : ip:端口/项目名/
进入bin目录
cd tomca安装路径/bin/
启动
./startup.sh
停止
./shutdown.sh
查看日志文件,看看启动情况
cd tomca安装路径/logs/
tail -F catalina.out
ctl+C 退出
访问
根据上面server.xml文件配置的路径
直接输入IP地址访问或者IP:8080、IP:8080/项目名/