文章目录
- JavaWeb项目部署到阿里云服务器
- 1. 把项目打包成war包
- 1.1 方法一
- 1.2 方法二
- 2. 配置服务器的jdk和tomcat环境
- 3. JavaWeb项目部署
JavaWeb项目部署到阿里云服务器
服务器:阿里云服务器 + Ubuntu 18.04 64位Linux操作系统
集成环境:IntelliJ IDEA 2019.1
项目类型:SpringBoot 2.2.6
1. 把项目打包成war包
1.1 方法一
在使用IDEA创建SpringBoot项目时,选择打成war包:
1.2 方法二
默认maven项目如果是打成jar包,这时需要一些修改使得项目能够打成war包。
(1)修改pom.xml文件中下面的两处
- 修改pom.xml指定打包方式为 war 包:<packaging>war</packaging>。
- 修改SpringBoot内置的Tomcat依赖,指定scope为provided(provided说明对编译和测试有效,但在运行时无效),因为我们想把war包放在外置的Tomcat中运行。
<groupId>com.example</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>test</name>
<description>Demo project for Spring Boot</description>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
(2)编写一个SpringBootServletInitializer的子类,并调用configure方法
- 每个SpringBoot项目创建时都有一个application主类,我这里的名称为TestApplication。主类不需要修改。
- 这里还需要自己另外创建一个继承SpringBootServletInitializer的子类,我这里的名字为ServletInitializer。
package com.example.test;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(TestApplication.class);
}
}
(3)打包
注意:最好不要使用网上的一些【Project Structure -> Artifacts -> Web Application:Archive】方法打成war包。
我也尝试过,虽然成功了,但是发现war包里的pom.xml文件并没有相应的修改,也就是没有屏蔽springboot自身的tomcat,导致项目启动后它默认走springboot自己的tomcat,然后出现无法访问controller层等问题。
2. 配置服务器的jdk和tomcat环境
(1)服务器配置jdk和Tomcat可以查看这个配置:
(2)对于配置jdk和Tomcat需要从本地上传文件到服务器,可以看我的另一篇博客:
(3)启动Tomcat默认访问的端口是8080,阿里云服务器默认没有配置,需要手动配置:
3. JavaWeb项目部署
(1)将上面的war包上传到服务器,不知道怎么上传的可以参考:。
(2)将war包移动到Tomcat文件夹中webapps下面。
(3)如果Tomcat已经启动,那么war包会自动解压,我们就可以通过【服务器公网ip:8080/war包名称/访问的界面】来访问。如果Tomcat没有启动,需要进入Tomcat的bin目录,执行./startup.sh命令来启动Tomcat。