在CentOS服务器上部署Java应用程序,是一项常见且重要的运维工作,无论是部署一个简单的Spring Boot单体应用,还是复杂的微服务集群,掌握其核心流程都至关重要,本文将以清晰、详尽的步骤,引导您完成从环境准备到服务上线的全过程。
第一步:环境准备 – 安装Java运行时环境
任何Java程序的运行都离不开Java虚拟机,我们的首要任务是在CentOS系统上安装合适的JDK。

更新系统包管理器: 在开始安装任何新软件之前,先更新系统的软件包列表是一个好习惯,通过SSH连接到您的服务器,执行以下命令:
sudo yum update -y
查找可用的JDK版本: CentOS的默认仓库可能提供了多个版本的OpenJDK,您可以使用以下命令查看:
yum search openjdk
Java 8和Java 11是较为流行的长期支持版本,对于新项目,建议选择Java 11或更新版本。
安装JDK: 我们要安装OpenJDK 11,可以执行:
sudo yum install -y java-11-openjdk-devel
这里的
devel版本包含了完整的开发工具,而不仅仅是运行时。验证安装: 安装完成后,通过检查Java版本号来确认安装是否成功:

java -version
如果终端输出类似“openjdk version "11.0.xx"”的信息,则说明JDK已正确安装。
配置环境变量: 虽然大部分情况下可以直接运行
java命令,但显式设置JAVA_HOME环境变量是推荐的做法,因为某些程序会依赖它。 找到JDK的安装路径:sudo alternatives --config java
通常会显示类似
/usr/lib/jvm/java-11-openjdk-11.x.x.x-x.el7_9.x86_64/bin/java的路径。JAVA_HOME则是其上级目录,即/usr/lib/jvm/java-11-openjdk-11.x.x.x-x.el7_9.x86_64。 编辑环境变量文件:sudo vi /etc/profile
在文件末尾添加:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.x.x.x-x.el7_9.x86_64 export PATH=$PATH:$JAVA_HOME/bin
保存退出后,使用
source命令使配置立即生效:source /etc/profile
第二步:上传与部署Java应用程序
环境准备就绪后,接下来就是将您的Java程序部署到服务器上。

上传应用程序包: 常见的Java程序发布形式有可执行的JAR包和需要部署到Web容器(如Tomcat)的WAR包。
- 对于JAR包:可以使用SCP命令、FTP工具或通过Git等方式将JAR文件上传到服务器的指定目录,
/opt/app/。 - 对于WAR包:需要先安装Tomcat等Servlet容器,然后将WAR包放置在其
webapps目录下。
- 对于JAR包:可以使用SCP命令、FTP工具或通过Git等方式将JAR文件上传到服务器的指定目录,
创建专属用户: 出于安全考虑,不建议使用
root用户直接运行Java应用,创建一个专用的系统用户来运行程序是更安全的做法。sudo adduser myapp sudo passwd myapp # 为其设置密码
将应用程序目录的所有权赋予该用户:
sudo chown -R myapp:myapp /opt/app/
第三步:配置系统服务实现持久化运行
如果仅仅在终端中通过java -jar app.jar启动应用,一旦关闭SSH会话,程序就会终止,我们需要将其配置为系统服务,实现开机自启和故障重启。
创建Systemd服务单元文件: Systemd是现代CentOS系统的初始化系统和服务管理器,我们为其创建一个服务配置文件。
sudo vi /etc/systemd/system/myapp.service
编辑服务配置文件: 在文件中填入以下内容,请根据您的实际路径和需求进行调整:
[Unit] Description=My Java Application After=syslog.target network.target [Service] Type=simple User=myapp Group=myapp # 设置JAVA_HOME,如果已在全局设置则可省略 Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk # 程序的工作目录 WorkingDirectory=/opt/app # 启动命令,这里以JAR包为例 ExecStart=/usr/bin/java -Xmx512m -jar /opt/app/myapp.jar # 指定日志输出方式 StandardOutput=journal StandardError=journal # 配置应用在失败时自动重启 Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target
Description:服务的描述信息。User和Group:指定运行服务的用户和组,增强安全性。ExecStart:启动命令。-Xmx512m是JVM参数,用于设置最大堆内存,请根据应用需求调整。Restart:配置自动重启策略,确保服务高可用。
启动并启用服务: 重新加载systemd配置,然后启动服务并设置为开机自启。
sudo systemctl daemon-reload sudo systemctl start myapp.service sudo systemctl enable myapp.service
检查服务状态: 使用以下命令查看服务是否正常运行:
sudo systemctl status myapp.service
如果状态显示为
active (running),并且日志没有报错,说明您的Java程序已经成功部署并作为服务运行了。
第四步:日志管理与故障排查
程序运行后,查看日志是排查问题的关键。
使用journalctl查看日志: 由于我们在服务配置中使用了
StandardOutput=journal,日志由systemd的journal管理,查看服务的最新日志可以使用:sudo journalctl -u myapp.service -f
参数
-f表示实时跟踪日志输出。配置独立的日志文件: 如果希望将日志输出到文件,可以修改服务文件中的
ExecStart行,或使用日志框架(如Logback、Log4j2)的配置文件来指定日志路径。
安全与优化建议
- 防火墙配置:如果您的应用需要对外提供网络服务(如HTTP端口8080),请确保CentOS的防火墙已开放相应端口,可以使用
firewall-cmd命令进行管理。 - 使用非root用户:再次强调,使用非特权用户运行应用是至关重要的安全措施。
- JVM参数调优:根据服务器的硬件资源和应用特点,合理设置JVM的内存参数(如
-Xms,-Xmx)和垃圾回收器,可以显著提升应用性能和稳定性。
通过以上步骤,一个健壮、可维护的Java应用运行环境就已经在您的CentOS服务器上搭建完成,整个过程体现了系统管理的规范性和对应用生命周期的有效控制,是每一位运维人员和开发者都应掌握的核心技能,根据具体应用的特殊需求,可能还需要配置数据库连接、反向代理等,但本文所述构成了最基础且关键的部署骨架。
