在新购服务器上搭建 Java 环境是云原生开发中最基础也最关键的一步。作为在云计算和运维领域深耕多年的从业者,我将结合主流 Linux 发行版(如 CentOS 7/8、Ubuntu 20.04/22.04)和国内云厂商(阿里云、腾讯云等)的常见环境,为你提供一套标准化、可复现的操作指南。
核心原则
- 版本选择:生产环境建议优先使用 LTS(长期支持版),目前推荐 JDK 17 或 JDK 21;开发测试可用 JDK 8 或 11。
- 包管理:尽量使用系统自带的包管理器(yum/apt)安装,避免手动下载二进制包导致路径混乱。
- 环境变量:必须配置
JAVA_HOME和PATH,否则许多中间件无法识别。
第一步:检查服务器状态与网络
在操作前,确保你的云服务器已绑定安全组规则(开放 SSH 端口 22),且系统时间同步正常。
- 国内云厂商提示:阿里云 ECS 和腾讯云 CVM 默认镜像通常预装了基础工具,但部分精简版镜像可能缺少
vim或wget,需先通过yum install -y vim wget补全。
第二步:安装 JDK(以 Ubuntu 和 CentOS 为例)
场景 A:Ubuntu / Debian 系(推荐)
国内云厂商的 Ubuntu 镜像通常源更新较快。
- 更新软件源:
sudo apt update - 安装 OpenJDK(以 JDK 17 为例):
# 搜索可用版本 apt search openjdk-17-jdk # 安装 sudo apt install openjdk-17-jdk -y注:若需 JDK 8,则安装
openjdk-8-jdk。
场景 B:CentOS / Rocky / AlmaLinux 系
这是国内很多老项目常用的系统。
- 启用 EPEL 源(可选,视具体需求):
sudo yum install epel-release -y - 安装 JDK:
# 直接安装 OpenJDK 17 sudo yum install java-17-openjdk-devel -y注意:
devel后缀包含编译头文件,如果是纯运行环境可省略,但新手建议带上以防后续需要编译本地库。
场景 C:官方 Oracle JDK 或 阿里 Dragonwell(进阶)
如果你需要 Oracle 的商业特性,或者追求国内云厂商优化的龙蜥(Dragonwell)运行时:
- 前往官网下载对应版本的
.tar.gz或.rpm/.deb包。 - 解压至
/usr/lib/jvm/目录。 - 手动配置软链接指向最新版本。
第三步:验证安装与环境变量配置
安装完成后,不要立即关闭终端,按以下步骤验证:
-
查看版本:
java -version javac -version输出应显示类似
java version "17.0.x",且无报错。 -
配置环境变量(关键步骤):
大多数 Linux 发行版会自动处理,但为了保险起见,建议显式配置。编辑全局配置文件:
sudo vi /etc/profile.d/java.sh(如果不懂 vi 操作,可使用
sudo nano /etc/profile.d/java.sh)写入以下内容(根据实际安装路径调整,
echo $JAVA_HOME可辅助确认):export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH保存后,让配置生效:
source /etc/profile -
再次验证:
echo $JAVA_HOME java -version确保
$JAVA_HOME指向正确,且版本信息无误。
第四步:部署测试应用(Hello World)
环境搭好后,立刻部署一个最小化应用来验证 JVM 是否真正可用。
- 创建简单工程目录:
mkdir -p /opt/test-java && cd /opt/test-java - 编写代码 (
Main.java):public class Main { public static void main(String[] args) { System.out.println("Java Environment OK!"); System.out.println("OS: " + System.getProperty("os.name")); System.out.println("Memory Max: " + Runtime.getRuntime().maxMemory() / (1024 * 1024) + " MB"); } } - 编译与运行:
javac Main.java java Main如果看到内存信息和"OK"字样,说明环境完全正常。
第五步:生产环境优化建议
对于新购服务器,除了跑通 Hello World,还需注意以下几点:
- 内存限制:
云服务器通常内存较小(如 1C2G)。启动 Java 应用时,务必设置-Xms和-Xmx,防止 OOM(内存溢出)导致服务崩溃。java -Xms512m -Xmx512m -jar your-app.jar - 日志规范:
不要将日志打印到控制台,应配置 Logback 或 Log4j2 输出到/var/log/app/目录,并配合logrotate进行轮转切割。 - 防火墙与安全组:
确保云控制台的“安全组”只放行了必要的端口(如 80, 443, 8080),严禁将 SSH 端口(22)对全网开放,建议仅允许特定 IP 访问。 - 自动重启:
建议使用systemd编写服务单元文件(.service),实现应用挂掉后自动重启,而非依赖简单的 shell 脚本。
常见问题排查
- 问题:
command not found: java- 解决:检查是否执行了
source /etc/profile,或者环境变量配置路径错误。使用which java查看实际路径。
- 解决:检查是否执行了
- 问题:中文乱码
- 解决:在
profile中补充export LANG=zh_CN.UTF-8和export LC_ALL=zh_CN.UTF-8。
- 解决:在
- 问题:高并发下 CPU 飙升
- 解决:检查 GC 策略,尝试使用 G1 收集器(
-XX:+UseG1GC)或调整堆大小。
- 解决:检查 GC 策略,尝试使用 G1 收集器(
按照上述步骤操作,你可以在 10 分钟内完成从裸机到可运行 Java 应用的完整闭环。如果在具体操作中遇到特定的报错信息,欢迎随时提供细节,我们可以针对性地深入分析。
CLOUD云枢