springboot项目打包与部署

本文详细介绍SpringBoot项目从本地打包到服务器部署的全过程,包括配置检查、Maven打包、解决常见错误、服务器启动及nginx代理配置。

转载

记录一下打包springboot项目并部署的过程

打开项目,先本地启动,确保你项目是能正常启动的

检查配置文件

可以根据实际配置服务器的MySQL,Redis等,端口号也可以自定义

打包,并本地运行jar包

打开maven,依次点击clean,compile,package

当控制台看到BUILD SUCCESS,就打包好了

打包好的jar包在项目下的target文件夹里面

打开cmd,本地启动测试打包好的jar包是否可以正常启动

确认可用后,进行下一步

tips:你可能会遇到下面的报错

是路径前面多了一条"/",也就是controller里在跳转视图的时候路径前面不要加一条"/"

@RequestMapping(path = "/toAdd")
public String toAdd() {
    // 路径开头不要带"/",不然会报上面的错    
    return "html/addDiscuss";
}
1
2
3
4
5
上传服务器,目录可以自定义,我这里将jar包上传到/lys/idea下(原jar包的名字比较长,可以重命名一下)

[root@VM-16-12-centos idea]# ls
community-j1.8-v1.5.jar  Dockerfile  nohup.out
1
2
使用下面的命令:后台启动项目,这样你关掉shell窗口程序也还能继续运行

nohub jar -jar [jar包名称] &
1
[root@VM-16-12-centos idea]# nohup java -jar community-j1.8-v1.5.jar &
#启动成功后会返回一个进程号
[1] 23224
1
2
3
这样访问域名+端口+项目名就能访问到项目了

可能会遇到下面的报错:

这是因为你服务器上的jdk版本与项目打包的版本不一致,如我服务器上的jdk是1.8,而打包时指定的jdk版本是8.

查看自己服务器的jdk版本

[root@VM-16-12-centos idea]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
1
2
3
4
可以在项目打包前在pom.xml里指定一下jdk版本

这样就解决上面的报错了。

用nginx配置代理

上面我们访问项目时需要带上端口号,这样不方便,可以用nginx做一个代理,直接域名就可以访问项目

nginx安装与使用=>Nginx学习笔记总结与案例

在Nginx的配置文件中增加一个server块

    server{
      listen 80;
      server_name localhost;
      location /community {
        proxy_pass http://[你的服务器]:[端口号]/community/ ;
      }
1
2
3
4
5
6
保存配置,重启Nginx

效果:

原先是你访问项目要输入域名:端口/community,现在你直接访问域名/community就可以了

(备注:community是我上面演示项目的名称)

这样就部署好了


————————————————
版权声明:本文为优快云博主「程序员-小李」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/weixin_44107140/article/details/123058232

<think>我们正在讨论如何打包部署Java Spring Boot应用程序。根据之前的引用,我们知道Spring Boot提供了许多便利,包括端口配置。但用户现在关心的是打包部署打包部署Spring Boot应用程序通常有两种方式: 1. 打包成可执行的JAR文件(包含嵌入式服务器,如Tomcat) 2. 打包成WAR文件(部署到外部应用服务器,如Tomcat) 下面我将分别介绍这两种方式。 ### 打包成可执行的JAR文件 这是Spring Boot推荐的方式,因为内置了Tomcat、Jetty或Undertow服务器,使得应用程序可以独立运行。 步骤: 1. 在项目的构建配置文件(如Maven的`pom.xml`或Gradle的`build.gradle`)中,确保使用了Spring Boot提供的构建插件。 2. 使用构建工具打包。 3. 运行生成的JAR文件。 以Maven项目为例: 首先,在`pom.xml`中确保有Spring Boot Maven插件: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> ``` 然后,在项目根目录下运行Maven打包命令: ```bash mvn clean package ``` 打包完成后,会在`target`目录下生成一个可执行的JAR文件(通常命名为`your-project-name-version.jar`)。运行该JAR文件: ```bash java -jar target/your-project-name-version.jar ``` 这样,应用程序就会启动,并监听默认的8080端口(除非你配置了其他端口)[^1]。 ### 打包成WAR文件 如果你需要将应用程序部署到外部的Servlet容器(如Tomcat),则需要打包成WAR文件。 步骤: 1. 修改构建方式为WAR。 2. 修改主类,使其继承`SpringBootServletInitializer`并重写`configure`方法。 3. 打包部署到外部服务器。 修改`pom.xml`,将打包方式改为`war`: ```xml <packaging>war</packaging> ``` 然后,在主应用程序类中(通常是带有`@SpringBootApplication`注解的类): ```java @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 然后同样使用Maven打包: ```bash mvn clean package ``` 生成的WAR文件位于`target`目录下,将其复制到外部Tomcat的`webapps`目录中,然后启动Tomcat服务器即可。 ### 部署到云平台 除了传统的部署方式,Spring Boot应用程序也可以轻松部署到云平台(如Cloud Foundry、Heroku、AWS等)。这些平台通常支持直接部署可执行的JAR文件,或者通过容器化(如Docker)进行部署。 例如,使用Docker部署: 1. 创建一个Dockerfile,内容如下: ```Dockerfile FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 2. 构建Docker镜像: ```bash docker build -t your-image-name . ``` 3. 运行容器: ```bash docker run -p 8080:8080 your-image-name ``` 以上是打包部署Spring Boot应用程序的常见方法。 §§相关问题§§ 1. 如何配置Spring Boot应用程序的端口号? 2. 如何为Spring Boot应用程序添加HTTPS支持? 3. 在部署到外部Tomcat时,如何解决静态资源访问问题? 4. 如何使用Docker Compose部署Spring Boot应用程序数据库? 5. Spring Boot应用程序如何实现零停机部署?</think>### 打包部署 Java Spring Boot 应用程序 #### 一、打包方式 1. **可执行 JAR 文件(推荐)** Spring Boot 默认使用嵌入式服务器(Tomcat/Jetty),可直接打包为独立可执行 JAR: ```bash mvn clean package # Maven 项目 ./gradlew build # Gradle 项目 ``` 生成位置:`target/*.jar`(Maven)或 `build/libs/*.jar`(Gradle) 2. **WAR 文件(传统部署)** 需修改 `pom.xml`: ```xml <packaging>war</packaging> <!-- 修改打包格式 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> <!-- 声明外部Tomcat提供 --> </dependency> ``` 主类需继承 `SpringBootServletInitializer`: ```java @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } } ``` #### 二、部署方式 1. **独立运行 JAR** ```bash java -jar your-app.jar # 默认端口8080[^1] java -jar your-app.jar --server.port=9090 # 自定义端口 ``` 2. **外部服务器部署(WAR)** 将 WAR 文件复制到 Tomcat 的 `webapps/` 目录,启动 Tomcat 即可自动解压部署。 3. **容器化部署(Docker)** Dockerfile 示例: ```Dockerfile FROM eclipse-temurin:17-jdk-alpine VOLUME /tmp COPY target/*.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 构建运行: ```bash docker build -t spring-app . docker run -p 8080:8080 spring-app ``` 4. **云平台部署** - **AWS**: 使用 Elastic Beanstalk 上传 JAR - **Heroku**: `git push heroku main` - **Kubernetes**: 通过 Helm Chart 部署 #### 三、关键配置 1. **端口修改** 在 `application.properties` 中配置: ```properties server.port=8443 # HTTP 端口 server.ssl.enabled=true # 启用 HTTPS server.ssl.key-store=classpath:keystore.p12 ``` 2. **生产环境配置** ```properties spring.profiles.active=prod management.endpoints.web.exposure.include=health,info ``` #### 四、部署流程示例 ```mermaid graph LR A[代码开发] --> B[打包:mvn package] B --> C{部署方式} C --> D[JAR独立运行] C --> E[外部Tomcat] C --> F[Docker容器] D --> G[生产服务器] E --> H[应用服务器集群] F --> I[Kubernetes] ``` > **注意**:部署前务必测试 `java -jar` 的本地运行,确保打包无误。生产环境建议使用 **PM2** 或 **systemd** 守护进程管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值