一、简介
正常来说SpringBoot项目就直接用jar包来启动,使用它内部的tomcat实现微服务,但有些时候可能有部署到外部tomcat的需求,本教程就讲解一下如何操作
二、修改pom.xml
将要部署的module的pom.xml文件<packaging>节点设置为war
<!-- 默认打包方式为jar,如果是用module做父级则需要修改为pom,如果使用外部tomcat可以修改为war, 子级module的打包方式只能是jar或者war --> <packaging>war</packaging>
有可能打包时会提示找不到maven-war-plugin那就在pom.xml中增加如下配置,加在<plugins>节点中
<plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.0</version> </plugin>
三、修改main()方法启动类
继承SpringBootServletInitializer基类来初始化SpringBoot,重写里面的configure方法并把自己注入进去
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; @ComponentScan("com.ysl.ts")//扫描common模块的包 @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) //继承war包SpringBoot初始化基类 public class WebBaseApp extends SpringBootServletInitializer { //重写配置方法 @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(WebBaseApp.class); } public static void main(String[] args) { SpringApplication.run(WebBaseApp.class, args); } }
四、禁用jmx内部bean监控(可选)
如果我们部署的war中都有某个module的引用,而这个module中又有bean就会出现如下错误,就是两个war都注册了相同的bean导致的
org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean
在application.properties中增加如下配置禁用掉jmx内部监控即可
spring.jmx.enabled=false
五、附录tomcat安装
下载tomcat 地址:http://tomcat.apache.org/
解压缩到指定目录:C:\apache-tomcat-8.5.33
1、添加环境变量
变量名:CATALINA_HOME 变量值:C:\apache-tomcat-8.5.33 PATH中添加: %CATALINA_HOME%\bin
2、进入tomcat的解压缩目录,进入bin运行startup.bat(如果闪退,检查环境变量是否配置正确)
打开浏览器http://localhost:8080就可以看到如下图就代表启动成功
3、配置管理员
打开tomcat目录,进入conf目录,打开tomcat-users.xml,可以添加如下用户,或者解开默认注释也行,保存重启,关闭startup.bat的窗口再执行shutdown.bat彻底关闭tomcat后再启动
<!-- <role rolename="tomcat"/> <role rolename="role1"/> <user username="tomcat" password="<must-be-changed>" roles="tomcat"/> <user username="both" password="<must-be-changed>" roles="tomcat,role1"/> <user username="role1" password="<must-be-changed>" roles="role1"/> --> <role rolename="manager-gui"/> <user username="admin" password="" roles="manager-gui"/>
启动后点击Manager APP输入admin密码空确定能进入,代表管理员配置完毕
4、部署站点
将自己的war放入某个位置并记好路径
打开tomcat的目录,进入conf目录,打开server.xml,找到Host节点在其内部增加如下节点
path:访问目录 如http://localhost:8080/ysl_web/
docBase:站点war目录,可以是相对路径也可以是绝对路径,他会自动对war包进行解压缩并存放到tomcat的webapps目录下
<Context path="/ysl_web" docBase="D:/TravelSupport/WebSite/ysl-ts-web-base-1.0-SNAPSHOT.war" debug="0" privileged="true" reloadable="true"/>
重启tomcat,如果报错就在tomcat的logs目录下查看日志,启动成功,点击Manager App,点击/ysl_web就可以看到自己的站点了