说明
本脚本为openGauss管理工具DataKit的自动化安装脚本,使用脚本前,请先前往Gitee中DataKit的代码仓https://gitee.com/opengauss/openGauss-workbench
详细阅读官方安装教程后,再尝试使用此脚本。
脚本使用
使用前请详细阅读脚本头部说明部分,复制脚本内容到自定义的xxx.sh
文件中,修改自定义变量部分,保存退出。使用sh ./xxx.sh
命令即可成功执行脚本,完成DataKit自动下载安装。
脚本内容
#!/bin/bash
# ####################################
# 说明:
# 1-此脚本为datakit服务自动化安装脚本,支持6.0.0版本。
# 2-使用此脚本只需修改“自定义变量”中内容即可,执行脚本会自动下载datakit安装包并完成安装。
# 3-当配置的openGauss数据库为datakit服务已使用过的历史数据库时,脚本运行最后会提示“初始密码访问服务失败。”,此提示不代表服务未正常运行,且不影响服务的正常运行。
# 4-实际服务运行状态可根据脚本执行日志信息中的PID,或查询datakit安装目录下datakit服务的日志信息查询。
# 5-一旦脚本执行至“启动服务”步骤时,不论后续报出任何错误,datakit的安装步骤均已完成,只需到安装目录下正常管理服务即可。
# ####################################
# ####################################
# 自定义变量
# ####################################
# datakit版本
version="6.0.0"
# 安装包保存路径(需为已有空目录,下同)
package_path="/{DATAKIT_PATH}/pkg"
# 服务安装路径
install_path="/{DATAKIT_PATH}/server"
# 端口(请确保配置的端口未被占用,否则会导致启动服务失败)
port="9494"
# openGauss连接信息(openGauss请完成前置配置,参考https://gitee.com/opengauss/openGauss-workbench)
# 示例:openGauss_ip=ip:port/database
openGauss_ip="127.0.0.1:5432/db_datakit"
openGauss_username="opengauss_test"
openGauss_password="Sample@123"
# ####################################
# 因变量
# #####################################
# 安装包名
package_name="Datakit-${version}.tar.gz"
# jar包名
jar_name="openGauss-datakit-${version}.jar"
# 下载链接
download_url="https://opengauss.obs.cn-south-1.myhuaweicloud.com/latest/tools/Datakit/${package_name}"
# ####################################
# 安装步骤
# ####################################
# 下载安装包
echo "开始下载安装包"
wget -P "${package_path}" "${download_url}"
# 检查下载是否成功
if [ $? -eq 0 ]; then
echo "下载成功!"
else
echo "下载失败,请检查下载链接或网络连接。"
exit 1
fi
# 解压安装包
echo "解压安装包"
tar -zxvf "${package_path}/${package_name}" -C "${install_path}"
# 检查解压是否成功
if [ $? -eq 0 ]; then
echo "解压成功!"
else
echo "解压失败!"
exit 1
fi
# 查看解压目录
echo "查看目录结构"
cd ${install_path} && ls -l
# 创建新目录
echo "创建新目录"
mkdir config files ssl logs
# 更改配置文件
# 端口占用情况,在普通用户下无法查询
echo "更改配置文件"
mv application-temp.yml config
old_path="/ops"
file_path="${install_path}/config/application-temp.yml"
old_port="9494"
openGauss_old_ip="ip:port/database"
openGauss_old_username="dbuser"
openGauss_old_password="dbpassword"
if [ -f "${file_path}" ]; then
# 使用sed命令替换文件中的内容
sed -i "s#${old_path}#${install_path}#g;
s#${old_port}#${port}#g;
s#${openGauss_old_ip}#${openGauss_ip}#g;
s#${openGauss_old_username}#${openGauss_username}#g;
s#${openGauss_old_password}#${openGauss_password}#g" "${file_path}"
echo "文件中的内容已经被修改。"
else
echo "文件不存在或路径错误。"
fi
# 生成密钥信息
echo "生成密钥信息"
keytool -genkey -noprompt -dname "CN=opengauss, OU=opengauss, O=opengauss, L=Beijing, S=Beijing, C=CN" -alias opengauss -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore ${install_path}/ssl/keystore.p12 -validity 3650 -storepass 123456
# 启动服务
echo "启动服务"
if [ ${version} \< "6.0.0" ]; then
nohup java -Xms2048m -Xmx4096m -jar ${jar_name} --spring.profiles.active=temp > logs/visualtool-main.out 2>&1 &
PID=$!
echo "Datakit is already running with PID: $PID"
else
sh ./run.sh start
# 查看服务状态
echo "查看服务状态"
sh ./run.sh status
fi
echo "请稍作等待……"
sleep 30
# 初始密码访问服务
echo "初始密码访问服务"
result=`curl -X POST -H "Content-Type: application/json" --insecure -d '{"username":"admin", "password":"t4/zcUwMZCyriA5oGJ8wQHBiYrAJIbf5krA83wiid44ChSHLTBhfG6UNRnQNTnNxeVBCQbbHKcTL6XY6kQoPox25g13f7s2vV58k6UYP55GgaTC3wWHtL0U/9H2XqXLRxgqDBsnt9dPtUcBrNd/0LEb7ayPiwWLwVJ3rOqmTW+E="}' "https://localhost:${port}/login"`
echo ${result}
check_str=(
"success"
"200"
"token"
)
for i in "${check_str[@]}"
do
if [[ $result =~ $i ]]; then
echo "Find '$i' in request"
if [ $i == "token" ]; then
echo "初始密码访问服务成功。"
fi
else
echo "初始密码访问服务失败。"
exit 1
fi
done
echo "脚本执行完毕"