在 Linux 服务器上运行 Java Spring Boot 应用,最低限度的配置可以归纳为以下 5 项核心要素。只要满足这些条件,应用即可启动并对外提供服务:
1. 基础环境:JDK (Java Development Kit)
Spring Boot 是 Java 应用,必须安装与项目编译版本兼容的 JDK。
- 要求:通常建议安装 JRE/JDK 8、11、17 或 21(取决于你构建应用时使用的
java.version)。 - 验证命令:
java -version # 输出示例:openjdk version "17.0.9" ... - 注意:生产环境通常只需安装 JRE(Java Runtime Environment),但为了调试方便,很多运维人员会直接安装 JDK。
2. 应用包:可执行的 JAR 文件
Spring Boot 的核心优势在于“单体”部署,不需要 Tomcat 等外部容器。
- 要求:你需要一个通过 Maven/Gradle 打包好的 可执行 JAR 文件(通常命名为
app.jar或类似)。 - 特征:该 JAR 内部包含了 Spring Boot 的启动类、依赖库以及内嵌的 Web 服务器(如 Tomcat/Jetty/Undertow)。
- 验证方法:
jar tf app.jar | grep "Main-Class" # 如果看到 META-INF/MANIFEST.MF 中包含 Main-Class: com.example.Application,则说明是可执行的。
3. 网络配置:端口开放
Spring Boot 默认使用 8080 端口(可在 application.properties 中修改)。
- 要求:Linux 服务器的防火墙必须放行该端口,否则外部无法访问。
- 操作示例(以 CentOS/Firewalld 为例):
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --reload如果是 Ubuntu (UFW):
sudo ufw allow 8080/tcp
4. 进程管理:后台运行方式
在 Linux 上直接运行 java -jar app.jar 会导致终端关闭后进程终止,因此必须将其置于后台运行。
- 最低方案:使用
nohup和&符号。nohup java -jar app.jar > output.log 2>&1 & - 推荐方案(更稳健):使用
systemd服务管理器(见下文扩展部分),它支持自动重启、日志轮转和开机自启。
5. 环境变量(可选但强烈建议)
虽然 Spring Boot 有默认配置,但在生产环境中,至少需要配置以下内容之一来避免冲突或硬编码:
- 数据源密码/地址:数据库连接信息不应写在代码里。
- Profile 切换:指定使用
prod配置文件(例如-Dspring.profiles.active=prod)。 - 端口修改:如果 8080 被占用,需指定
-Dserver.port=80。
💡 最佳实践补充:Systemd 服务配置
虽然上述 5 点是“最少”配置,但为了生产环境的稳定性(崩溃自动重启、日志管理),强烈建议创建一个 systemd 服务文件。
步骤:
-
创建服务文件
/etc/systemd/system/myapp.service:[Unit] Description=My Spring Boot Application After=syslog.target network.target [Service] User=your_user_name WorkingDirectory=/opt/myapp ExecStart=/usr/bin/java -jar /opt/myapp/app.jar --spring.profiles.active=prod SuccessExitStatus=143 Restart=on-failure [Install] WantedBy=multi-user.target - 启动并设置开机自启:
sudo systemctl daemon-reload sudo systemctl start myapp sudo systemctl enable myapp
总结
要运行 Spring Boot 应用,你只需要:
- 安装匹配的 JDK。
- 上传可执行的 JAR 包。
- 确保防火墙开放对应端口。
- 使用
nohup或systemd将其作为后台服务运行。
除此之外,没有强制性的其他配置。
云服务器