idea 打包Springboot为(war) 部署到tomcat 配置域名访问
1.在pom.xml里设置 <packaging>war</packaging>
2.去除内置tomcat
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 去除内嵌tomcat --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!--添加servlet的依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
3.修改启动类
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
在Application类的同级添加一个SpringBootStartApplication类,其代码如下:
/** * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法 */ public class SpringBootStartApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意这里要指向原先用main方法执行的Application启动类 return builder.sources(Application.class); } }
接着可以打包了:
打包好会生成以为xxx.war的文件,在你项目target文件里
以下是部署配置tomcat的操作
第一步把打包好的war包 放到 tomcat目录下的webapps 下
截图:
第二步:找到tomcat目录下的server.xml配置文件
server.xml在conf文件夹下面
编辑server.xml,将下图位置的8080端口更改为80
我这里已经改成80了
第三步:
将Host中的name更改成要设置的域名或IP地址,本例中设置了如下域名,此外,我们还需要在Host下配置一个Context用于指定应用的运行环境。其中:
1. docBase(Document Base)为应用相对于webapps的路径,如果将docBase设置为Web应用名称(本例为demo),则在Url地址中就可以不用输入项目名称了;
2. path为应用的上下文路径,如果默认为空则表明当前Context为默认Context;
3. reloadable默认为false,表明是否监听/WEB-INF/classes/以及/WEB-INF/lib目录的变化,应用在开发阶段可以将其设置为true,但是上生产环境时最好设置为false,否则会占用较大的虚拟机资源影响应用性能。