在服务器上运行 Java 程序,需要进行以下几方面的配置和准备。以下是详细说明:
一、基础环境配置
1. 安装 Java 运行环境(JRE 或 JDK)
- JRE(Java Runtime Environment):仅用于运行已编译的
.class文件或.jar包。 - JDK(Java Development Kit):包含 JRE 和开发工具(如
javac),推荐安装 JDK,便于调试和后续扩展。
✅ 推荐版本选择:
- 生产环境建议使用长期支持(LTS)版本,例如:
- Java 8(仍广泛使用)
- Java 11(LTS)
- Java 17(LTS)
- Java 21(最新 LTS)
✅ 安装方式示例(Linux):
# Ubuntu/Debian 安装 OpenJDK 17
sudo apt update
sudo apt install openjdk-17-jdk
# CentOS/RHEL
sudo yum install java-17-openjdk-devel
✅ 验证安装:
java -version
javac -version # 如果安装了 JDK
2. 设置 JAVA_HOME 环境变量
许多 Java 应用和中间件依赖 JAVA_HOME。
编辑配置文件(如 ~/.bashrc 或 /etc/environment):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 # 根据实际路径修改
export PATH=$JAVA_HOME/bin:$PATH
加载配置:
source ~/.bashrc
验证:
echo $JAVA_HOME
二、部署 Java 程序
1. 打包格式
常见的 Java 程序打包格式:
.jar文件(可执行 JAR).war文件(用于 Web 应用,部署到 Tomcat 等容器)- Spring Boot 应用通常为 fat jar(内嵌 Tomcat)
2. 运行 Java 程序
java -jar your-app.jar
3. 常用 JVM 参数优化(生产环境建议)
java -Xms512m -Xmx2g -XX:+UseG1GC -jar your-app.jar
-Xms:初始堆内存-Xmx:最大堆内存-XX:+UseG1GC:使用 G1 垃圾回收器(适合大内存)- 可添加日志、监控参数等
三、系统与安全配置
1. 用户权限
- 不建议以
root用户运行 Java 程序。 - 创建专用用户运行服务:
sudo adduser javaapp sudo su - javaapp
2. 防火墙配置
开放必要的端口(如 8080、8443):
sudo ufw allow 8080/tcp
# 或使用 iptables/firewalld
3. 后台运行与进程管理
使用以下方式保持程序在后台运行:
✅ nohup 方式:
nohup java -jar your-app.jar > app.log 2>&1 &
✅ systemd 服务(推荐,更稳定)
创建服务文件 /etc/systemd/system/myapp.service:
[Unit]
Description=My Java Application
After=network.target
[Service]
Type=simple
User=javaapp
ExecStart=/usr/bin/java -jar /opt/myapp/your-app.jar
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
查看日志:
sudo journalctl -u myapp -f
四、可选但推荐的配置
| 功能 | 工具/建议 |
|---|---|
| 监控 | 使用 Prometheus + Grafana,或集成 Micrometer |
| 日志管理 | 使用 Logback/Log4j2,配合 ELK 或 Loki 收集 |
| 反向X_X | Nginx/Apache X_X前端请求,隐藏 Java 服务端口 |
| HTTPS | 使用 Nginx 配置 SSL 证书(Let's Encrypt) |
| 自动部署 | Jenkins、GitLab CI、Docker 镜像部署 |
五、使用 Docker(现代化部署推荐)
将 Java 应用打包成 Docker 镜像,便于部署和迁移。
示例 Dockerfile:
FROM openjdk:17-jre-slim
COPY your-app.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
构建并运行:
docker build -t my-java-app .
docker run -d -p 8080:8080 my-java-app
总结:最小必要配置清单
| 项目 | 是否必需 |
|---|---|
| 安装 JDK/JRE | ✅ 必需 |
| 设置 JAVA_HOME | ✅ 推荐 |
| 防火墙开放端口 | ✅ 必需(若提供网络服务) |
| 后台运行(nohup 或 systemd) | ✅ 必需 |
| JVM 内存设置 | ✅ 推荐 |
| 普通用户运行 | ✅ 安全最佳实践 |
| 日志输出 | ✅ 推荐 |
如有具体应用类型(如 Spring Boot、Tomcat、微服务等),可进一步细化配置。欢迎补充你的使用场景!
CLOUD云计算