123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- #!/bin/bash
- # 本脚本用于修改mysql安装配置文件信息
- # 获取脚本运行所在路径
- SCRIPT_DIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd)
- echo -e "\033[33m
- ---------------
- -----SZHFY-----
- ----GB28181----
- ---------------
- \033[0m";
- echo -e "\033[33m 欢迎使用深圳合方圆科技一键部署国标平台安装程序 \033[0m";
- # 读取配置文件
- source ./config.cfg
- # 检查必要启动参数是否存在
- #sql_host="0.0.0.0"
- #sql_port=3306
- #sql_user="hfygb"
- #sql_passwd="hfygb28181"
- #sql_db="gb_db"
- #sql_path="sqlRuning"
- #redis_host="0.0.0.0"
- #redis_port=7654
- #redis_db=6
- #redis_passwd="hfyredis28181"
- echo "检查基础参数中,,,,,,"
- if [ ! -n "$sql_host" ]; then
- echo "sql_host 未设置"
- exit 1
- fi
- if [ ! -n "$sql_user" ]; then
- echo "sql_user 未设置"
- exit 1
- fi
- if [ ! -n "$sql_passwd" ]; then
- echo "sql_passwd 未设置"
- exit 1
- fi
- if [ ! -n "$sql_db" ]; then
- echo "sql_db 未设置"
- exit 1
- fi
- echo "开始启动mysql"
- #检查是否启用docker安装 enable_sql 为1时启用 为0时不启用
- if [ "$enable_sql" == "1" ];then
- # 判断是否存在mysql目录,没有则创建
- if [ ! -d "$SCRIPT_DIR/sql" ]; then
- mkdir -p /data/mysql
- fi
- # 导入mysql镜像
- docker load -i ./hfysql.tar
- # 检查容器是否已经启动,如果已经启动则尝试导出数据库
- docker ps -a | grep hfysql
- if [ $? -eq 0 ]; then
- # 导出数据库
- docker exec -it hfysql mysqldump -uroot -p"$sql_root_passwd" --all-databases > /data/mysql/hfysqlSave.sql
- # 停止容器
- docker stop hfysql
- # 删除容器
- docker rm hfysql
- # 移除容器占用的mysql目录
- echo "移除容器占用的mysql目录"
- rm -rf ./mysql/*
- fi
- # 修改mysql配置文件
- sed -i \
- -e "s/^port=.*/port=$sql_port/g" \
- "$SCRIPT_DIR/mysqlConf/my.cnf";
- # sed -i 's/^port=.* /port=1234/g' ./mysqlConf/my.cnf
- # 启动mysql容器,使用三目语句判断sql_enable_host为1时设置网络模式为host
- if [ "$sql_enable_host" == "1" ];then
- docker run -d --name hfysql \
- --net=host \
- -v "$SCRIPT_DIR/mysql":/var/lib/mysql \
- -v "$SCRIPT_DIR/sqlBack":/data/sqlBack \
- --mount type=bind,src="$SCRIPT_DIR/mysqlConf/my.cnf",dst=/etc/mysql/my.cnf \
- -e MYSQL_ROOT_PASSWORD="$sql_root_passwd"\
- hfysql:latest
- else
- docker run -d --name hfysql \
- -p "$sql_port":3306 \
- -v "$SCRIPT_DIR/mysql":/var/lib/mysql \
- -v "$SCRIPT_DIR/sqlBack":/data/sqlBack \
- -e MYSQL_ROOT_PASSWORD="$sql_root_passwd" \
- hfysql:latest
- fi
- if [ $? -ne 0 ]; then
- echo "run mysql docker failed";
- fi
- # 等待mysql启动
- sleep 5
- fi
- echo "开始启动redis"
- sleep 2
- # 检查是否启用redis安装 enable_redis 为1时启用 为0时不启用
- if [ "$enable_redis" == "1" ];then
- #
- # 修改配置redis配置文件
- sed -i \
- -e "s/^port.*$/port $redis_port/g" \
- -e "s/^requirepass.*$/requirepass $redis_passwd/g" \
- "$SCRIPT_DIR/redis/redis.conf";
- # 导入redis镜像
- docker load -i ./hfyredis.tar
- # 检查容器是否已经启动,如果已经启动则关闭并且删除容器
- docker ps -a | grep hfy_redis
- if [ $? -eq 0 ]; then
- # 停止容器
- docker stop hfy_redis
- # 删除容器
- docker rm hfy_redis
- fi
- # 启动redis容器 host 模式启动,端口映射到宿主机
- docker run -it -p "$redis_port":"$redis_port" \
- --net=host \
- -v /data/redis:/data/redis \
- -v /data/redis/logs:/data/redis/logs \
- -v "$SCRIPT_DIR/redis/redis.conf":/etc/redis/redis.conf \
- --name hfy_redis -itd hfyredis:latest
- fi
- echo "检查是否需要配置sql"
- sleep 2
- if [ "$enable_sql" == "1" ];then
- echo "等待尝试修改数据库参数"
- isTrue=1
- reConnect=0
- while [[ $isTrue == 1 ]]
- do
- # 尝试连接数据库
- docker exec -it hfysql mysql \
- -uroot -p"$sql_root_passwd" \
- -e "show databases;"
- if [ $? -eq 0 ]; then
- isTrue=0
- else
- echo "数据库连接失败,等待3秒后重试"
- reConnect=$(($reConnect+1))
- if(($reConnect>150));then
- echo "数据库连接失败失败次数$reConnect,退出程序"
- exit 1
- fi
- sleep 3
- fi
- done
- docker ps -a | grep hfysql
- if [ $? -eq 0 ]; then
- # 导出数据库
- echo "mysql 数据库已经启动"
- else
- echo "mysql 数据库启动失败"
- docker logs hfysql
- exit 1
- fi
- # 修改数据库名,无法修改数据库名,拒绝操作
- # docker exec -it hfysql mysql \
- # -uroot -p"hfy$sql_passwd" \
- # -e "ALTER DATABASE gb_db TO $sql_db;"
- # 创建单独用户
- docker exec -it hfysql mysql \
- -uroot -p"$sql_root_passwd" \
- -e "CREATE USER '$sql_user'@'%' IDENTIFIED BY '$sql_passwd';"
- # 不限制ip访问
- docker exec -it hfysql mysql \
- -uroot -p"$sql_root_passwd" \
- -e "GRANT ALL PRIVILEGES ON $sql_db.* TO '$sql_user'@'%';"
- # 刷新权限
- docker exec -it hfysql mysql \
- -uroot -p"$sql_root_passwd" \
- -e "FLUSH PRIVILEGES;"
- echo "等待sql重启,等待15秒"
- sleep 15
- reConnect=0
- isTrue=1
- while [[ $isTrue == 1 ]]
- do
- # 尝试连接数据库
- docker exec -it hfysql mysql \
- -uroot -p"$sql_root_passwd" \
- -e "show databases;"
- if [ $? -eq 0 ]; then
- isTrue=0
- else
- echo "数据库连接失败,等待3秒后重试"
- reConnect=$(($reConnect+1))
- if(($reConnect>150));then
- echo "数据库连接失败失败次数$reConnect,退出程序"
- exit 1
- fi
- sleep 3
- fi
- done
- sleep 10
- if [ $? -ne 0 ]; then
- echo "run gb docker failed";
- fi
- fi
- echo "开始启动国标平台"
- # 根据参数生成国标平台配置文件
- gb_certName=""
- gb_keyName=""
- # 判断是否有证书地址 gb_certPath 与 gb_keyPath
- if [ "$gb_certPath" != "" ] && [ "$gb_keyPath" != "" ];then
- # 判断证书是否存在
- if [ ! -f "$gb_certPath" ];then
- echo "证书文件不存在,请检查证书路径是否正确"
- exit 1
- fi
- if [ ! -f "$gb_keyPath" ];then
- echo "证书文件不存在,请检查证书路径是否正确"
- exit 1
- fi
- # 获取证书文件名
- gb_certName=$(basename "$gb_certPath")
- gb_keyName=$(basename "$gb_keyPath")
- # 拷贝证书到容器中
- cp "$gb_certPath" "$SCRIPT_DIR/gbRunning/keys"
- cp "$gb_keyPath" "$SCRIPT_DIR/gbRunning/keys"
- fi
- source ./gbRunning/createConfig.sh
- echo "$gb_WebPort"
- echo "$gb_sipPort"
- # 导入国标平台镜像
- docker load -i ./hfygb.tar
- # 检查容器是否已经启动,如果已经启动则关闭并且删除容器 hfy_gb
- docker ps -a | grep hfy_gp
- if [ $? -eq 0 ]; then
- # 停止容器
- docker stop hfy_gp
- # 删除容器
- docker rm hfy_gp
- fi
- echo -e "\033[33m自动按照sql与redis配置已经自动关闭\033[0m"
- sudo docker run -it --net=host \
- -v /data/gb:/data/gb -e LANG=C.UTF-8 \
- -v $SCRIPT_DIR"/gbRunning/logs":/data/hfygb/logs \
- -v $SCRIPT_DIR"/gbRunning/mFile":/data/hfygb/mFile \
- -v $SCRIPT_DIR"/gbRunning/libImages":/data/hfygb/libImages \
- -v $SCRIPT_DIR"/gbRunning/keys":/data/hfygb/keys \
- -v $SCRIPT_DIR"/gbRunning/application_product.yml":/data/hfygb/config/application_product.yml --name hfy_gp -it hfygb:latest
- if [ $? -ne 0 ]; then
- echo "run gb docker failed";
- fi
- # 修改国标平台配置文件,将 enable_redis 与 enable_sql 修改为 0 防止sql数据异常
- sed -i "s/enable_redis=1/enable_redis=0/g" "$SCRIPT_DIR/config.cfg"
- sed -i "s/enable_sql=1/enable_sql=0/g" "$SCRIPT_DIR/config.cfg"
- echo -e "\033[33m国标平台以全部启动,请使用浏览器访问 http://$gb_host:$gb_WebPort\033[0m";
|