走啊走
奋斗

在Linux服务器上运行Java Spring Boot应用至少需要什么配置?

服务器价格表

在 Linux 服务器上跑通一个 Spring Boot 应用,别整那些虚头巴脑的宏大叙事,核心就三件事:环境、配置、进程管理。只要这三点到位,应用就能稳稳地跑起来。

1. 基础环境:JDK 必须对版

Spring Boot 是 Java 写的,没 JDK 一切免谈。

  • 版本匹配:先看你代码用的 Spring Boot 版本要求什么 JDK。比如 Spring Boot 3.x 通常强制要求 JDK 17+,老项目可能还在用 JDK 8。千万别装错,报错 UnsupportedClassVersionError 就是这原因。
  • 安装方式:推荐用官方源或 SDKMAN 安装,不要随便从网上扒个不知名的安装包。装好后,在终端执行 java -version 确认一下,确保环境变量 JAVA_HOME 已经正确配置到 /etc/profile~/.bashrc 里,否则脚本跑不起来。

2. 打包与部署:Jar 包是王道

Spring Boot 最大的优势就是“单体”部署。

在Linux服务器上运行Java Spring Boot应用至少需要什么配置?

  • 本地构建:在开发机或 CI/CD 流水线里,用 Maven (mvn clean package) 或 Gradle 把项目打成可执行的 Jar 包。注意检查 pom.xml 里的打包插件配置,确保生成的 jar 包里包含了所有依赖(Fat Jar)。
  • 上传服务器:通过 scp 或 SFTP 工具,把打好的 .jar 文件传到服务器指定目录(比如 /opt/app),权限给足(chmod +x 虽不是必须,但好习惯要养成)。

3. 启动参数:别让端口和内存打架

直接运行 java -jar app.jar 能跑,但生产环境这么干等于裸奔。至少得配好这两条命脉:

  • 内存限制:Linux 服务器资源宝贵,必须显式指定堆内存。默认情况下 JVM 可能会占满服务器内存导致系统卡死。建议加上 -Xms-Xmx,比如 -Xms512m -Xmx1g,根据服务器实际物理内存调整。
  • 外部化配置:别把数据库密码、Redis 地址硬编码在代码里。使用 --spring.profiles.active=prod 配合外部的 application-prod.yml,或者直接用环境变量注入(Spring Boot 自动识别 SPRING_DATASOURCE_URL 这类变量)。这样换个环境不用重新打包。
  • 日志输出:默认控制台日志在生产环境很难排查问题。记得配置 Logback 或 Log4j2,把日志重定向到文件,并设置滚动策略(按天或按大小切割),防止日志撑爆磁盘。

4. 进程守护:挂了谁来重启?

这是新手最容易踩的坑。直接用 nohup java -jar ... & 虽然能让它后台跑,但一旦你关闭 SSH 窗口,或者服务崩溃了,没人知道也没人管。

  • Systemd(推荐):现在绝大多数 Linux 发行版都标配 Systemd。写个 .service 文件放在 /etc/systemd/system/ 下,定义好启动命令、用户、依赖关系、重启策略(Restart=always)和日志输出路径。
    • 执行 systemctl enable myapp 开机自启。
    • 执行 systemctl start myapp 启动。
    • 执行 journalctl -u myapp -f 实时看日志。
      这才是正经的生产级做法。
  • PM2 / Supervisor:如果你习惯 Node.js 生态或者不想写 systemd 文件,这些进程管理器也是成熟的选择,功能类似。

5. 网络与安全:防火墙别挡路

  • 端口放行:你的应用监听的是 8080 还是 9000?别忘了在服务器防火墙(如 firewalldiptables)上开放对应端口,否则网络连不上。
  • 安全组:如果是云服务器(阿里云、AWS 等),云厂商的安全组规则也得配,只允许必要的 IP 段访问,别全开。
  • Nginx 反向X_X:生产环境通常不会让 Nginx 直接转发请求给后端,而是让 Nginx 做入口,处理 SSL 证书、静态资源缓存和负载均衡,后端 Spring Boot 只负责逻辑。

总结一下
装上匹配的 JDK -> 打好 Fat Jar -> 写好 Systemd 配置文件(含内存参数)-> 开放防火墙端口 -> 启动服务。

这就够了。剩下的优化、监控、链路追踪,那是业务稳定后再去考虑的事。先把地基打牢,别整花里胡哨的。