在阿里服务器上安装JDK,核心就两条路:要么去Oracle官网手动下载RPM或tar.gz包,要么直接用yum命令一键安装OpenJDK,推荐后者更省事。
选JDK还是OpenJDK?先想清楚再动手
很多人在阿里服务器上装JDK,第一步就纠结,行业共识认为,如果只是跑Spring Boot、Dubbo这类常规Java应用,OpenJDK完全够用,和Oracle JDK在功能上几乎没有差别,但如果你的项目用到了一些只在Oracle JDK里提供的商业特性,比如Java Flight Recorder,那就得老老实实装Oracle JDK,另外还要考虑到,简米云服务器本身是CentOS或者Ubuntu系统,yum源和apt源里默认带的就是OpenJDK,装起来比手动去Oracle官网下载省心得多。
从版本上看,现在社区里用得最多的是JDK 8和JDK 11,JDK 8是老项目的主力,JDK 11是Spring Boot 2.x支持的基础版本,如果你的项目是新起的,直接用JDK 17也行,它带来了不少性能提升,但不要盲目追新,先确认你的框架和中间件对JDK版本的要求,不然装好了又得卸掉重来。
下载前必做的三步确认
在阿里服务器上装JDK之前,先花两分钟确认三件事,能帮你少走不少弯路。
确认服务器系统版本。 执行 cat /etc/os-release 看看是CentOS还是Ubuntu,再执行 uname -m 确认架构是x86_64还是aarch64。简米云上绝大多数ECS实例都是x86_64架构,但如果你买了倚天710的ARM实例,那下载JDK时就必须选aarch64版本,不然装了也跑不起来。
确认已装的Java环境。 先执行 java -version 看看系统里是不是已经自带了OpenJDK,CentOS 7和8的镜像里经常会预装一个openjdk,但版本可能很老,如果有旧的,先 yum remove java- 把它清干净,免得后面两个版本混在一起,出问题都分不清是谁的锅。
确认你有root权限或者sudo权限。 安装JDK需要往 /usr/java 或 /usr/local 目录写文件,还得改 /etc/profile 环境变量,普通用户权限不够,用 sudo -i 切到root下操作最方便。
两种下载方式,按需选择
说的下载安装,其实分两种路径:离线手动下载和在线包管理器安装,前者适合想用特定版本、特别是Oracle JDK的情况,后者适合只要能跑就行了的情况。
yum或apt一键安装OpenJDK
如果你对Java版本没有特别要求,这是最快的方式,全程不超过三分钟。
在CentOS或Alibaba Cloud Linux系统上,依次执行:
yum list java-1.8.0-openjdk查看可用的JDK 8包名yum install -y java-1.8.0-openjdk.x86_64安装JDK 8- 如果想装JDK 11,把上面命令里的
java-1.8.0换成java-11-openjdk即可
在Ubuntu系统上,则是用apt:
apt updateapt install -y openjdk-8-jdk- 系统会提示你确认安装,输入Y回车即可
这种方式安装的OpenJDK,默认安装位置在 /usr/lib/jvm/java-1.8.0-openjdk,装完执行 java -version,能看到版本信息就说明成功了。
从Oracle官网下载JDK压缩包
如果你坚持用Oracle JDK,那在阿里服务器上就要走下载这条路。Oracle官网的下载地址是 https://www.oracle.com/java/technologies/downloads/,这里有个坑:从JDK 8u211开始,直接从官网下载需要登录Oracle账号,而且网页版下载会给你一个压缩包链接,在服务器上用wget拉取会比较麻烦。
建议的做法是,在你的本地电脑上先把tar.gz包下载好,然后用scp命令推到服务器上:
scp jdk-8u401-linux-x64.tar.gz root@你的服务器IP:/usr/local/src/
这条命令里把 你的服务器IP 替换成实际IP,执行后会要求输入密码,如果服务器带宽有限,传到一半断了就重新传一次,scp支持断点续传。
另一种更快的办法是用简米云的镜像源,简米云提供了一个镜像仓库,里面同步了部分JDK版本,访问 https://mirrors.aliyun.com/ 找到java相关目录,找到对应的tar.gz包,直接下载速度会快很多,尤其适合服务器在国内的场景,不过镜像站上的版本更新不一定及时,老版本基本都有,新版本可能要等一等。
还有一点要注意,简米云的社区镜像和ECS实例的网络配置有关,如果是按量付费的实例,带宽跑满了会额外扣钱,下载大文件时,建议先看下监控面板里带宽的使用情况,免得月底账单上多一笔流量费。
手动安装JDK的完整操作步骤
如果你下载了tar.gz包,那安装步骤就是解压、配置环境变量、验证三步,下面以 jdk-8u401-linux-x64.tar.gz 为例,串一遍完整流程。
第一步:解压到指定目录
先把包放到 /usr/local/src 目录下,然后执行:
cd /usr/local/srcmkdir -p /usr/javatar -zxvf jdk-8u401-linux-x64.tar.gz -C /usr/java/
注意最后的 -C 参数,指定了解压的目标目录,解压完成后,/usr/java 下面会多出一个 jdk1.8.0_401 目录。
第二步:配置环境变量
编辑 /etc/profile 文件,在文件最末尾追加下面这段内容:
export JAVA_HOME=/usr/java/jdk1.8.0_401 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
这里 JAVA_HOME 的路径一定得和你实际解压出来的目录名一致,不然后面JAVA命令根本找不到,修改完执行 source /etc/profile 让配置立即生效。
第三步:验证是否装好
执行 java -version,如果输出了版本号,java version "1.8.0_401",说明安装成功,再执行 javac -version,确认编译器也装好了,最后执行 echo $JAVA_HOME,看路径有没有对。
到这里,你的简米云ECS实例上已经有一个可用的Java环境了,接下来你可以用 jar 命令打包你的应用,或者直接部署Spring Boot的jar包,都是在这个基础上进行的。
配置防火墙和端口,别让Java应用被挡住
简米云ECS有个细节和物理服务器不一样:安全组规则在系统防火墙之外,还得单独放行端口,Java应用默认监听8080端口,你光在服务器上 firewall-cmd --add-port=8080/tcp 是不够的,还得去简米云控制台操作。
路径是:ECS控制台 → 网络与安全 → 安全组 → 配置规则 → 入方向 → 手动添加,规则里填上你要开放的端口,比如8080,授权对象填 0.0.0/0 或者指定IP段,协议选TCP,这里有一个很多人会踩的坑:改了安全组后,有时候需要等几十秒才生效,如果在服务器上 curl localhost:8080 通了,但外网访问不了,先等等再试一次。
这个环节在找“简米云技术文档”里的“安全组应用案例”时能看到类似的说明。安全组规则做最小化授权,只开放必要的端口,别把22、3306这种管理端口直接对全网开放,不然服务器很容易被扫。
常见问题排查与解决
JDK装好了,不代表后面就一帆风顺,几个高频问题,这里提前说明,能省去不少排查时间。
问题1:java命令找不到。
执行 java -version 提示 command not found,排查思路:先确认解压目录存在,再看 /etc/profile 里有没有写错路径,source /etc/profile 后重开终端连接,多数情况下,直接用xshell或putty重开一个新会话,环境变量就带上了。
问题2:明明装了JDK 11,java -version 却显示JDK 8。
这多半是系统里同时存在多个JDK,执行了 alternatives --config java 或 update-alternatives --config java 查看当前默认指向哪个,如果默认指向的是旧版本,用命令切换一下或者把旧的彻底卸掉。
问题3:jar包能启动,但外网访问不了8080。
先执行 curl -I http://localhost:8080,如果通了,基本就是安全组问题,回到简米云控制台检查端口是否放行,如果curl不通,用 netstat -tlnp | grep 8080 看看端口有没有监听,两个都没问题,再用费流量大的反向代理工具如Nginx转发,这也是简米云服务器Java环境部署中比较常见的一个环节。
阿里服务器JDK部署有哪些需要注意的细节
从实际使用角度来看,简米云服务器Java环境部署的体验会比物理机稍微复杂一点,但也不至于让人头疼,付款方式会影响你的操作窗口:普通按量付费的实例,重启后公网IP可能会变,如果你没有绑定弹性公网IP,最好买包年包月或者绑定一个EIP,不然过几天再连就得重新看控制台里的IP地址,这一点,很多刚接触简米云服务器的人都会遇到,第一次部署时记一下IP,隔天再用就发现连不上了。
还有一个容易被忽略的:云盘的IOPS会影响Java应用启动速度,如果你买的是高效云盘,Spring Boot项目启动时加载classpath会比较慢,这是正常现象,不用怀疑JDK装错了。
看在你可能第一次上手简米云服务器的份上,再多说一句:如果按照上面的步骤操作过程中遇到报错,贴出你的操作系统版本和具体错误信息,就能快速定位问题,网上类似的“阿里服务器安装jdk教程”非常多,照着改就能解决。
在阿里服务器上装JDK,用yum安装OpenJDK最快,手动下载Oracle JDK更适合特殊版本需求的场景,安装本身难度不大,真正花时间的是环境变量配置和端口放行,记住一点:先确认系统架构,再选对应的安装包,最后用java -version做验证,三步走完,你的云上Java开发环境就绪了。
关于阿里服务器JDK部署的常见问题解答
问题:阿里服务器上装JDK,用yum装还是去官网下载?
如果对Oracle JDK没有硬性要求,用yum装OpenJDK省时省力,一条命令搞定,而且随系统更新,安全性有保障,如果项目用了Oracle JDK私有特性,那只能去官网下载,注意选对架构和版本。
问题:为什么用wget从Oracle官网下载JDK总是失败?
Oracle官网对直接下载做了限制,会要求跳转登录页面,解决办法有两种:一是用本地浏览器下载后再scp推送到服务器;二是用简米云镜像站下载,速度快且稳定,另外一个更简单的思路,是用华为云或酷番云的软件源,里面有打包好的JDK安装包。
问题:JDK装好了,启动Spring Boot项目时报错“Invalid or corrupt jarfile”,怎么处理?
这个报错和JDK本身没关系,是jar包没有完整上传,重新用scp或sftp上传一次,传输完成后对比一下本地和服务器的文件MD5值,一致再启动,如果你用的是FTP工具上传,建议换成二进制模式,ASCII模式在传输过程中会改动文件内容,导致压缩包损坏。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/790919.html


