前几天逛知乎,有个问题是如何成为一个优秀的运维工程师,有个回答是让自己搞清楚如下几件事情。
首先,搭4台Linux的服务器。然后完成如下操作
- 批量安装最新版OpenJDK
- 安装部署elastic search集群
- 安装部署mysql9.0,实现一主三备。
- 安装redis server,实现两主两从。
- 安装监控prometheus,把以上服务的运行状态全都监控起来。
最后,让以上操作在命令下自动执行。
所以我们今天就来实践第一步。当然了,4台服务器的搭建过程略。
OpenJDK是一个java环境的开源安装包,比较小,安装比较简单。很适合用来做自动化运维的安装测试。以下用手动安装和脚本安装两种方式来进行介绍。
下载安装文件
-
手动下载
下载地址:https://jdk.java.net/22/
我下载到的文件名是:openjdk-22.0.2_linux-x64_bin.tar.gz
通过ftp工具上传到服务器指定目录,略。
-
通过wget下载
需要安装wget工具
# 检查是否安装了wget rpm qa|grep wget # 如果有会显示版本,否则使用yum命令安装。默认rpm源可能略慢,建议使用阿里云的repo
设置阿里云yum源(可选)
# 测试是否能ping通阿里云 ping mirrors.aliyun.com # 删除原yum仓库 rm -rf /etc/yum.repos.d/* # 下载阿里云的repo # curl命令下载: curl [options] [url] curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 清除yum缓存 yum clean all # 缓存阿里云镜像 yum makecache
确认yum源
[root@69af1d3b05c2 yum.repos.d]# yum repolist Loaded plugins: fastestmirror, ovl Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com repo id repo name status base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10072 extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 526 updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 5802 repolist: 16400
yum安装wget
yum install -y wget
然后使用如下命令进行下载,假设下载到/opt/
wget /opt/ https://download.java.net/java/GA/jdk22.0.2/c9ecb94cd31b495da20a27d4581645e8/9/GPL/openjdk-22.0.2_linux-x64_bin.tar.gz
如果下载途中出现卡住的问题
首先使用ctrl+z 暂停任务 然后使用下述命令继续下载 wget -c https://download.java.net/java/GA/jdk22.0.2/c9ecb94cd31b495da20a27d4581645e8/9/GPL/openjdk-22.0.2_linux-x64_bin.tar.gz
解压进行安装
解压命令
# 先创建文件夹
# mkdir /opt/jdk/
# tar -zxf /opt/openjdk-22.0.2_linux-x64_bin.tar.gz -C /opt/jdk/
配置环境变量
vim /etc/profile
# 在最后添加如下语句,然后保存
export JAVA_HOME=/opt/jdk/jdk-22.0.2
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 使配置文件生效
source /etc/profile
# 然后可以使用下述命令检查是否成功
java --version
脚本安装
熟悉了手动安装的步骤,接下来我们来进行脚本一键安装。首先,脚本内容如下:
#!/bin/sh
# 安装OpenJDK的脚本
live=1
#判断自带JDK
rpm -qa|grep java
#创建jdk安装路径
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo 创建jdk安装路径/opt/jdk
mkdir -p /opt/jdk
tar -zxf /opt/openjdk-22.0.2_linux-x64_bin.tar.gz -C /opt/jdk/
if [ $? == 0 ]
then
echo '解压成功'
else
echo '解压失败'
live=0
exit 0
fi
#配置环境变量
function setJdk(){
if [ live == 0 ];then
exit 0
else
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo 配置环境变量
echo '#设置环境变量' >> /etc/profile
echo 'export JAVA_HOME=/opt/jdk/jdk-22.0.2' >> /etc/profile
echo 'export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/:$JAVA_HOME/jre/lib' >> /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR' >> /etc/profile
fi
}
setJdk
#重新加载配置文件
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo 重新加载配置文件
source /etc/profile
echo JAVA_HOME=$JAVA_HOME
echo CLASSPATH=$CLASSPATH
#查询java安装信息
echo '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
echo 查询java安装信息
java -version
假设我们把脚本放在/opt/install_jdk.sh,我们需要授予它运行的权限
chmod 777 /opt/install_jdk.sh
然后运行脚本
# 注意这里是用sh运行的
sh /opt/install_jdk.sh
此时,当前连接的bash界面还没刷新,还无法使用java命令。这是因为:执行脚本时,脚本中的命令是在子shell中执行,子shell只能继承父shell的环境变量,而无法修改父shell的环境变量,所做的修改仅对当前子shell有效。所以,当脚本执行完成,回到shell命令行,原子shell脚本中执行的source命令也就不生效。
所以,建议使用source或.运行脚本
source /opt/install_jdk.sh
或者
. /opt/install_jdk.sh