由于平时工作中需要经常和服务器打交道,每次需要在新服务器上部署项目时安装jdk是必不可少的。每次都是重复的操作相当麻烦费时间,于是编写了一个简单的shell实现自动安装jdk,自动配置环境变量。
脚本主要分为主要分为4步
1、获取rpm安装包
2、检查卸载已安装的jdk
3、安装rpm包
4、写入环境变量
脚本基本实现了自动化安装,遗憾的是wget获取oracle官网的rpm包时需要认证,且认证后过一段时间会失效无法再次获取,暂时还没找到可以解决的办法。因此脚本中的wget获取rpm包那一行被我注释掉了。
可以在官网下载好rpm包后,rz上传到服务器和脚本同一个目录运行脚本即可安装。
没有安装rz命令
#安装rz、sz命令非常好用,rz上传文件到服务器,sz下载文件到本地
yum -y install lrzsz
也可以在网上找一个不用认证的链接wget获取,我当时是在官网认证后立即复制链接。
需要注意的是执行脚本时,脚本和rpm包需要处在同一个目录中
#!/bin/bash
#wget获取rpm包
#wget https://download.oracle.com/otn/java/jdk/8u291-b10/d7fc238d0cbf4b0dac67be84580cfb4b/jdk-8u291-linux-x64.rpm?AuthParam=1622368722_9411cea1391e8919921490e5e6f01625
packagePath="jdk*"
echo "正在检测是否存在java相关文件..."
#检查是否已经安装java相关包,和jdk
uninstallJava=$(rpm -qa | grep java)
uninstallJdk=$(rpm -qa | grep jdk)
#检查是否安装,安装了就强制卸载掉
if [[ "$uninstallJava" != "" || "$uninstallJdk" != "" ]];then
echo -e "检测到文件 $uninstallJava $uninstallJdk \n 卸载中..."
rpm -e --nodeps $uninstall $uninstallJdk
echo "卸载完成!"
else
echo "未检测到相关文件..."
fi
#开始安装检查到的rpm包 packagePath="jdk*"
echo "开始安装..."
rpm -ivh $packagePath
#rpm包安装后会自动在/usr/目录中生成一个java/jdkxxxx的目录,检查这个目录是否存在
sunJava=$(ls /usr/java | grep jdk)
if [ "$sunJava" != "" ];then
echo "正在写环境变量..."
#在profile.写入jdk环境变量需要注意的是如果文件不存在会自动创建一个文件并写入内容
#如果文件存在且文件有内容,内容会被覆盖掉
cat >/etc/profile.d/java.sh<<EOF
JAVA_HOME=/usr/java/$sunJava
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export CLASSPATH
export PATH
EOF
echo "写入成功!"
chown root.root /etc/profile.d/java.sh
echo "安装成功!"
java -version
else
echo "未检测到java目录..."
fi
tar包安装我的思路是,解压时自动mkdir一个java目录并将解压后的文件放到里面,在根据路径配置环境变量详细请看脚本
#!/bin/bash
#wget https://download.oracle.com/otn/java/jdk/8u291-b10/d7fc238d0cbf4b0dac67be84580cfb4b/jdk-8u291-linux-x64.tar.gz?AuthParam=1622622010_f516c40e832665045d1db3e681f9b8a0
packageName=$(ls | grep tar.gz)
echo "正在检测是否存在java相关文件..."
uninstallJava=$(rpm -qa | grep java)
uninstallJdk=$(rpm -qa | grep jdk)
if [[ "$uninstallJava" != "" || "$uninstallJdk" != "" ]];then
echo -e "检测到文件 $uninstallJava $uninstallJdk \n 卸载中..."
rpm -e --nodeps $uninstall $uninstallJdk
echo "卸载完成!"
else
echo "未检测到相关文件..."
fi
echo "开始安装..."
mkjava=$(ls | grep java)
if [ "$mkjava" == "" ];then
mkdir java
tar -xvf $packageName -C java
echo "解压成功!"
#解压目录名称
jdkPath=$(ls java | grep jdk)
#当前绝对路径
path="$(pwd)/java/"
#检测目录中是否存在jdk
if [ "$jdkPath" != "" ];then
echo "正在写环境变量..."
#写入环境变量
cat >/etc/profile.d/java.sh<<EOF
JAVA_HOME=$path$jdkPath
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
EOF
echo "写入成功!"
chown root.root /etc/profile.d/java.sh
echo "查看jdk版本"
source /etc/profile
java -version
fi
else
echo "存在java目录..."
fi
使用脚本的时候一定要将脚本和安装包放到同一个目录,否则会出现因找不到文件而无法正常安装的情况。尽量避免在同一个目录存在类似的安装包,这样也有可能会出现找不到包的情况。两个脚本基本一样tar的脚本是在rpm脚本上调整的到的,tar安装记得一定要source一下profile文件不然安装后文件没有刷新,一直提示没有java这个命令