在linux服务器上部署java项目有两种方式:war和jar
一、war方式
war包的方式依托于tomcat,需要将war包放在tomcat的webapps下,启动tomcat,系统才能正常访问。
步骤如下:
1、项目打包
有几个需要注意的地方:
1.1) 主启动类要继承 SpringBootServletInitializer 类,并重写 configure() 方法;
@SpringBootApplication
public class NowcoderCommunityApplication extends SpringBootServletInitializer {
/**
* 在tomcat中以war包的形式部署java项目时,要将启动类继承 SpringBootServletInitializer 类,重写configue方法
* 因为tomcat本身就是java程序写的,已经有main函数了
* @param builder
* @return
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(NowcoderCommunityApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(NowcoderCommunityApplication.class, args);
}
}
1.2) pom文件要指明打包方式和生成的war包的文件名;
<!-- 和dependencies同级,通过<packaging>标签指明打包方式 -->
<packaging>war</packaging>
<dependencies>...</dependencies>
<build>
<!-- 在<build>标签内,通过<finalName>标签指明生成的war的名称,该名称会用做部署后的系统访问路径 -->
<finalName>community</finalName>
<resources>...</resources>
</build>
</project>
扩展:
在使用war方式部署web项目时,application.properties(.yaml)文件中的 port 和 context-path 都会失效。
只有使用jar方式的时候,这两个参数才会生效。
server:
port: 8080
servlet:
context-path: /community
然后开始打包:
打包完成后,会在target目录下生成一个war包:
2、linux部署
war包部署web项目,项目的 port 和 context-path 取决于 tomcat的端口和war包的名字。
war包放到tomcat的webapps目录下,然后执行bin目录下的startup.sh启动tomcat,会自动将war包解压。
到此部署成功,通过:http://linux服务器的ip:tomcat的port/community/***,访问系统。
二、jar方式
1、在application.properties(.yaml)文件中的 port 和 context-path 指明系统的端口和路径(可有可无)
2、不需要在pom文件中配置和
3、执行maven的package,会在target目录下生成一个名为 项目文件名-0.0.1-SNAPSHOT.jar 的jar包。
4、将这个jar包放到linux的自定义文件夹下,同时在该文件夹下创建一个logs文件夹用于存放日志文件:
在该文件夹目录上执行:nohup java -jar ./nowcoder-community-0.0.1-SNAPSHOT.jar >./logs/logs.txt &
后台启动jar程序,部署成功,通过:http://linux服务器的ip:项目port/context-path/***,访问系统。