引言
最近在搭建 Kubernetes 1.14 版本,过程中涉及各种组件的安装配置,所以打算通过脚本自动化的部署配置这些组件,本文主要描述在 CentOS 7上通过脚本自动化部署配置 JDK 8。
自动化脚本导航
环境搭建-CentOS 7上通过脚本自动化部署JDK 8
环境搭建-CentOS 7上通过Shell脚本自动化修改机器名并配置静态IP
环境搭建-CentOS 7上通过Shell脚本自动化配置免密登录
环境搭建-CentOS 7上通过Shell脚本自动化安装Harbor
搭建步骤分析
- 卸载 OpenJDK;
- 从 Oracle 官方下载页面下载对应版本的 JDK:
下载链接为:https://download.oracle.com/otn/java/jdk/8u211-b12/478a62b7d4e34b78b671c754eaaf38ab/jdk-8u211-linux-x64.tar.gz,这个地址写脚本的时候会用到;
- 解压压缩包;
- 配置环境变量。
自动化脚本
结合以上的步骤我们本来可以写一个带自动下载 JDK 的脚本,但是现在 Oracle 网站下载 JDK 需要登录,笔者 Oracle 账号已多年未用,加上 Oracle 网站找回密码那访问速度,果断放弃,手动上传了以前使用的 jdk-8u77-linux-x64.tar.gz,修改脚本文件为:
#!/bin/bash
basedir="/usr/local"
echo "Begin to uninstall OpenJDK"
for line in `rpm -qa | grep java`
do
echo $line
if [[ $line != *.noarch ]];
then
rpm -e --nodeps $line
fi
done
echo "Download completed, begin to decompress package."
tar zxvf jdk-8u77-linux-x64.tar.gz -C $basedir
echo "Decompress completed, package : jdk-8u77-linux-x64.tar.gz"
echo "Delete package: jdk-8u77-linux-x64.tar.gz"
rm -rf jdk-8u77-linux-x64.tar.gz
echo "Set system environment variable"
if [[ "$(cat /etc/profile | grep JAVA_HOME)"x = x ]]
then
echo '# set java
export JAVA_HOME=/usr/local/jdk1.8.0_77
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profile
fi
echo "Setting completed."
完成后还需要运行如下命令使配置生效:
source /etc/profile
为什么该命令不写在脚本里面,这个问题可以自行百度,source 命令在脚本里面是作用于脚本那个 shell,对外层没有影响,即退出脚本后没有作用。
【注意】如果运行脚本出现如下错误:
-bash: ./install_JDK8.sh: /bin/bash^M: bad interpreter: No such file or directory
这是由于文件编码格式为 dos 的问题,通过 vim 命令编辑,进入后运行命令【:set ff】查看文件编码格式,会在最下方出现【fileformat=dos】,通过运行如下命令修改即可:
:set ff=unix
:wq