部署
Spring Boot 部署有两种方式
- jar包直接执行
- war包部署到tomcat服务器
jar包部署
1.配置内嵌Tomcat容器
Tomcat为Spring Boot的默认容器,下面是几个常用配置:
# tomcat最大线程数,默认为200
server.tomcat.max-threads=800
# tomcat的URI编码
server.tomcat.uri-encoding=UTF-8
# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹(如:/data/temp)
server.tomcat.basedir=/data/temp
# 打开Tomcat的Access日志,并可以设置日志格式的方法:
#server.tomcat.access-log-enabled=true
#server.tomcat.access-log-pattern=
# accesslog目录,默认在basedir/logs
#server.tomcat.accesslog.directory=
# 日志文件目录
logging.path=H:/springboot-tomcat-tmp
# 日志文件名称,默认为spring.log
logging.file=myapp.log
2.打包
进入项目根目录。
➜ cd 项目根目录(和pom.xml同级)
直接打包
➜ mvn clean package
跳过测试进行打包
➜ mvn clean package -Dmaven.test.skip=true
打包完成后jar包会生成到target目录下,命名一般是:项目名+版本号.jar
3.启动 jar 包命令部署
➜ java -jar target/spring-boot-app-1.0.0.jar
这种方式,只要控制台关闭,服务就不能访问了。下面我们使用在后台运行的方式来启动:
➜ nohup java -jar target/spring-boot-app-1.0.0.jar >app.log 2>&1 &
也可以在启动的时候选择读取不同的配置文件
➜ java -jar app.jar --spring.profiles.active=dev
war包部署
和普通war包一样,部署到到JavaEE容器中(Tomcat、Jetty)。
1. 修改启动类
修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法。
public class SpringBootSampleApplication extends SpringBootServletInitializer{
private static final Logger logger = LoggerFactory.getLogger(SpringBootSampleApplication.class);
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(this.getClass());
}
}
2. 修改pom文件
1.修改打包方式。
修改pom文件中jar 为 war 。
<!-- <packaging>jar</packaging> -->
<packaging>war</packaging>
2.排除Spring Boot中嵌入的Tomcat插件依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
3. 打包
➜ mvn clean package
使用 maven 命令打包后,同一般J2EE项目一样部署到web容器。