新手部署Spring Boot项目到云服务器要几步?

对于初次接触云服务器的开发者而言,将本地开发完成的 Spring Boot 应用部署到线上环境是一个关键环节。整个过程涉及从代码打包、环境准备到服务启动等多个步骤,需按顺序操作以确保应用正常运行。

本地项目打包为可执行 JAR 文件

Spring Boot 项目默认支持内嵌 Web 容器,可通过 Maven 或 Gradle 构建工具直接生成包含所有依赖的独立 JAR 包。在开发环境中执行构建命令后,会在目标目录(如 target/)生成一个以项目名和版本命名的 JAR 文件,该文件可在任何安装了 Java 运行环境的服务器上执行。

mvn clean package
 或使用 IDEA 等 IDE 提供的图形化构建功能

准备云服务器并配置基础运行环境

购买云服务器后,需选择合适的操作系统镜像(如 CentOS、Ubuntu),并通过 SSH 工具远程登录。首次使用时应完成系统更新,并安装与本地开发环境匹配的 JDK 版本。Java 环境安装完成后,通过 java -version 验证是否正确配置。

常见 Java 环境变量配置示例

编辑系统全局配置文件,设置 JAVA_HOME 并将其加入执行路径:

export JAVA_HOME=/usr/java/jdk-17
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

保存后执行 source /etc/profile 使更改立即生效。

上传 JAR 包并启动应用服务

利用 SCP、SFTP 工具或面板文件管理功能,将本地生成的 JAR 文件传输至服务器指定目录。上传完成后,在对应路径下执行启动命令。为避免终端关闭导致进程中断,建议使用 nohup 命令结合后台运行符 & 启动服务。

nohup java -jar myapp-0.0.1-SNAPSHOT.jar > app.log 2>&1 &

上述命令会将标准输出和错误日志重定向至 app.log,便于后续排查问题。

开放防火墙端口并验证服务状态

Spring Boot 应用默认监听 8080 端口,需在云服务器控制台安全组规则中放行该端口的入方向流量。配置完成后,可通过浏览器访问公网 IP 加端口号的方式测试服务是否已成功响应。同时可在服务器内部使用 psnetstat 命令检查 Java 进程及端口占用情况。

“为什么我在浏览器输入 IP:端口打不开页面?”
可能原因包括:安全组未开放对应端口、应用未成功启动、程序内部绑定的是 localhost 而非 0.0.0.0。

配置域名访问与反向代理(可选)

若需通过自定义域名访问服务,可在 DNS 服务商处解析域名至服务器公网 IP。为进一步提升访问体验和安全性,可安装 Nginx 作为反向代理服务器,将 80 或 443 端口的请求转发至本地应用端口,并支持 HTTPS 加密传输。

使用 Nginx 可解决前端资源分离、多服务路由、负载均衡等问题,是生产环境常用架构之一。

FAQ

  • Q: 部署 Spring Boot 项目必须使用宝塔面板吗?

    A: 不是必需的。宝塔面板提供可视化操作界面,适合不熟悉 Linux 命令的用户;也可直接通过命令行完成全部部署流程。

  • Q: 如何查看 JAR 包是否正在运行?

    A: 在服务器执行 ps aux | grep java,若返回结果包含对应的 JAR 名称,则表示进程处于运行状态。

  • Q: 修改代码后如何更新线上服务?

    A: 重新打包生成新 JAR 文件,上传覆盖原文件前先停止旧进程(通过 kill 命令),再启动新版应用。

  • Q: 为什么启动时提示端口被占用?

    A: 可能已有其他服务监听同一端口,可通过 netstat -tlnp | grep :8080 查看占用进程并决定是否终止或更换应用端口。

  • Q: 是否需要在服务器上安装 Tomcat?

    A: 不需要。Spring Boot 内嵌了 Tomcat、Jetty 等容器,打包后的 JAR 可直接运行,无需单独部署 Servlet 容器。