在 Linux 服务器上正确安装和配置 Java 运行环境(JRE/JDK)是部署 Java 应用的基础。以下是标准、安全的操作流程,适用于主流发行版(如 Ubuntu/Debian、CentOS/RHEL),并包含关键注意事项:
✅ 一、选择 Java 版本
- 生产环境推荐:LTS 版本(如 JDK 17、21)
- 避免使用 Oracle JDK 8 作为新默认(已停止公共更新),优先选用 OpenJDK 或经过验证的商业发行版(如 Amazon Corretto、Eclipse Temurin)
✅ 二、安装方式对比
| 场景 | 推荐方式 | 优点 |
|---|---|---|
| 快速部署 / 云主机 | apt / yum 包管理器 |
自动处理依赖、安全更新 |
| 自定义版本 / 多版本共存 | 手动下载 .tar.gz + 环境变量配置 |
灵活控制路径、版本隔离 |
| 容器化 / CI/CD | Docker 镜像内置 | 可复现、轻量 |
🔧 方案 A:使用系统包管理器(推荐新手)
▶ Ubuntu/Debian
# 更新软件源
sudo apt update
# 安装 OpenJDK 17(LTS)
sudo apt install openjdk-17-jdk -y
# 验证安装
java -version
javac -version
# 查看默认 java 路径
update-alternatives --config java
💡 若需特定版本(如 JDK 21):
sudo apt install openjdk-21-jdk -y
▶ CentOS/RHEL/Fedora
# 启用 EPEL(如需额外包)
sudo dnf install epel-release -y # RHEL/CentOS 8+;CentOS 7 用 yum install epel-release
# 安装 OpenJDK 17
sudo dnf install java-17-openjdk-devel -y
# 验证
java -version
⚠️ 注意:RHEL/CentOS 中
java-17-openjdk-devel包含编译工具链;仅运行时可用java-17-openjdk。
🛠️ 方案 B:手动安装(适合多版本/定制需求)
步骤 1:下载 JDK
访问 Adoptium (Eclipse Temurin) 或 Amazon Corretto 下载对应版本的 .tar.gz(免注册):
# 示例:下载 JDK 21 LTS x64 tarball
cd /tmp
wget https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jdk_x64_linux_hotspot_21.0.5_11.tar.gz
步骤 2:解压到指定目录
sudo mkdir -p /opt/java
sudo tar -xzf OpenJDK21U-jdk_x64_linux_hotspot_21.0.5_11.tar.gz -C /opt/java/
# 假设解压后目录为 jdk-21.0.5+11
sudo mv /opt/java/jdk-21.0.5+11 /opt/java/jdk-21
步骤 3:配置环境变量
编辑 /etc/profile.d/java.sh(全局生效)或用户级 ~/.bashrc:
cat <<EOF | sudo tee /etc/profile.d/java.sh
export JAVA_HOME=/opt/java/jdk-21
export PATH=$JAVA_HOME/bin:$PATH
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
EOF
# 使配置立即生效(当前终端)
source /etc/profile.d/java.sh
步骤 4:验证
echo $JAVA_HOME
java -version
javac -version
which java # 应指向 /opt/java/jdk-21/bin/java
🔐 三、安全与最佳实践
-
非 root 用户运行
创建专用用户运行 Java 服务:sudo useradd -r -s /bin/false -d /opt/myapp myapp sudo chown -R myapp:myapp /opt/myapp -
限制 JVM 权限
启动时添加参数防止高危操作:java -Djava.security.manager -Djava.security.policy==/path/to/app.policy -jar app.jar -
定期更新
# 包管理器方式 sudo apt upgrade openjdk-17-jdk # Debian/Ubuntu sudo dnf update java-17-openjdk # RHEL/CentOS # 手动安装:监控 CVE,及时替换新版本 tarball -
多版本管理(进阶)
使用update-alternatives(Debian/Ubuntu)或alternatives(RHEL)切换默认版本:sudo update-alternatives --install /usr/bin/java java /opt/java/jdk-17/bin/java 170 sudo update-alternatives --install /usr/bin/java java /opt/java/jdk-21/bin/java 210 sudo update-alternatives --config java
🧪 四、常见问题排查
| 问题 | 解决方案 |
|---|---|
command not found: java |
检查 PATH 是否包含 $JAVA_HOME/bin;确认 .bashrc 已 source |
Could not find the main class |
检查 -cp 或 -jar 路径是否正确;确保类文件存在且无字节码损坏 |
OutOfMemoryError |
调整 -Xms/-Xmx 参数;检查内存泄漏(用 VisualVM/Mat) |
| 中文乱码 | 设置 LANG=en_US.UTF-8 或 LC_ALL=C.UTF-8;JVM 启动加 -Dfile.encoding=UTF-8 |
需要我根据你的具体场景(如:Kubernetes 部署、Tomcat/Nginx 集成、微服务架构)提供定制化配置脚本吗?
云小栈