Java服务器部署需确保JDK匹配(如Spring Boot 3.x用JDK 17+)、环境变量正确、fat JAR或WAR包规范、启动脚本含JVM参数与日志重定向、运维配置含端口管理及进程托管。

Java服务器环境部署运行包,核心是确保JVM可用、依赖完整、启动方式正确,并适配生产环境要求。不需要复杂工具链,但细节容易出错。
确认Java版本与环境变量
运行Java应用前,必须验证服务器上已安装匹配的JDK(非仅JRE),且JAVA_HOME指向正确路径,PATH包含$JAVA_HOME/bin。
- 执行java -version和javac -version确认版本一致(如Spring Boot 3.x需JDK 17+)
- 检查echo $JAVA_HOME是否输出有效路径,避免使用系统默认OpenJDK而未配置环境变量
- 若为多版本共存,建议在启动脚本中显式指定/path/to/jdk17/bin/java,不依赖全局PATH
准备可运行包(JAR/WAR)
区分打包类型:Spring Boot等内嵌容器项目通常打成fat JAR;传统Web应用则生成WAR并部署到Tomcat/Jetty等外部容器。
- fat JAR需确保MANIFEST.MF中包含Main-Class,且所有依赖已打包进BOOT-INF/lib/
- WAR包应放在外部Servlet容器的webapps/目录下,或通过管理界面部署;注意web.xml或注解配置是否兼容容器版本
- 避免直接上传开发环境下的target/classes或IDE编译输出,务必使用Maven/Gradle构建生成的正式包
编写健壮的启动脚本
不推荐直接敲命令启动,应使用Shell脚本统一管理JVM参数、日志、进程控制和异常退出逻辑。
立即学习“Java免费学习笔记(深入)”;
- 设置合理堆内存:-Xms512m -Xmx2g,避免初始过小导致频繁GC
- 添加必要参数:-Dfile.encoding=UTF-8 -Duser.timezone=GMT+8,防止中文乱码或时区错误
- 重定向标准输出:nohup java -jar app.jar > app.log 2>&1 &,并记录PID到文件便于后续管理
- 加入简单健康检查:启动后用curl -f http://localhost:8080/actuator/health确认服务就绪
配置基础运维支持
上线后需保障可观测性与可维护性,不能只关注“跑起来”。
- 日志输出到文件而非控制台,按大小或时间滚动(如Logback配置RollingFileAppender)
- 开放必要端口(如8080),关闭调试端口(如Spring Boot的5005)和Actuator未授权端点(如/env、/jolokia)
- 使用systemd或supervisord托管进程,实现开机自启、崩溃自动拉起、资源限制等功能










