在雨云服务器部署 Java SpringBoot 项目,本质是在 Linux 实例中配置 JDK 运行环境并通过系统守护进程管理 Jar 包。适用场景为标准 Web 服务上线,主要风险边界在于安全组端口未放行导致外部无法访问,以及 JDK 版本与项目编译版本不一致导致启动失败。
先说结论:雨云服务器部署 SpringBoot 核心在于环境一致性配置与进程保活,无需额外安装 Tomcat 容器。
- 适合:标准 Java Web 应用、微服务节点、后台 API 服务
- 先准备:确认雨云控制台安全组规则、准备 JDK 安装包或 yum 源、上传编译好的 Jar 文件
- 验收:外部网络能访问业务端口、服务断电后能自动重启、日志无异常报错
命令速用版
以下命令适用于大多数基于 CentOS 或 Ubuntu 的雨云 Linux 实例,直接复制可执行环境检查与启动操作。
# 检查 Java 版本
java -version
# 后台启动 Jar 包(临时测试)
nohup java -jar your-app.jar `--server`.port=8080 > app.log 2>&1 &
# 查看进程是否运行
ps -ef | grep java
# 查看日志尾行
tail -f app.log为什么会这样
SpringBoot 项目内置了 Tomcat 或 Jetty 容器,打包后成为可执行 Jar 包,只需要宿主机提供 JDK 运行环境即可启动。雨云服务器提供的是底层 IaaS 资源,不包含应用层环境,因此需要手动安装 JDK 并配置进程守护,否则 SSH 断开后服务会停止。
分步处理
按顺序完成环境准备、文件上传、服务配置和防火墙放行,每一步完成后需确认状态再进行下一步。
步骤 1:配置雨云安全组
登录雨云控制台,找到实例对应的安全组,添加入站规则,放行 SpringBoot 业务端口(默认 8080)和 SSH 端口(默认 22)。未放行安全组会导致外部请求超时,即使服务启动成功也无法访问。
步骤 2:安装 JDK 环境
通过 SSH 连接服务器,使用包管理器安装 JDK。确保安装的版本不低于项目编译版本,例如 SpringBoot 3.x 通常要求 JDK 17+。
# CentOS 示例
yum install java-17-openjdk -y
# Ubuntu 示例
apt install openjdk-17-jdk -y步骤 3:上传项目文件
使用 SFTP 工具或 scp 命令将本地编译好的 Jar 包上传至服务器目录,例如/home/wwwroot/app.jar。确保文件权限允许当前用户读取和执行。
步骤 4:配置 Systemd 守护进程
创建/etc/systemd/system/myapp.service 文件,配置 ExecStart 指向 Java 命令,设置 Restart=always 实现崩溃自动重启。配置完成后执行 systemctl daemon-reload 重载配置。
怎么验证是否生效
验证分为进程状态检查、端口监听检查和外部访问检查,三者均通过才算部署成功。
检查服务状态:执行 systemctl status myapp.service,显示 active (running) 表示进程正常。
检查端口监听:执行 netstat -tlnp | grep 8080,确认 Java 进程正在监听业务端口。
检查外部访问:在本地浏览器或 curl 命令访问 http://服务器公网 IP:8080,能返回接口数据或页面即生效。
常见坑
部署过程中容易在防火墙配置、内存限制和日志路径上出错,需提前排查避免服务不可用。
- 安全组未放行:云服务器实例内部防火墙关闭但控制台安全组未开放端口,外部依然无法访问。
- JDK 版本不匹配:项目用 JDK 17 编译,服务器安装 JDK 8,启动时报 UnsupportedClassVersionError。
- 内存不足 OOM:小规格实例运行 Java 服务可能因内存不足被系统杀死,需检查 dmesg 日志确认是否有 OOM Kill。
- 日志路径权限:Systemd 配置中指定的日志文件目录若无权写入,会导致服务启动失败。
常见问题
服务启动后外部无法访问怎么办
优先检查雨云控制台安全组入站规则是否放行了业务端口,其次检查服务器内部 firewall 或 iptables 设置。
如何查看 SpringBoot 启动日志
若配置了 Systemd 服务,使用 journalctl -u myapp.service -f 查看;若使用 nohup 启动,查看指定的 log 文件。
服务器重启后服务会自动运行吗
只有配置了 Systemd 服务并执行 systemctl enable myapp.service 才会开机自启,单纯 nohup 启动重启后会失效。