#!/bin/bash set -o errexit download(){ # wget安装 if [[ ! `which wget` ]]; then if check_sys sysRelease ubuntu;then apt-get install -y wget elif check_sys sysRelease centos;then yum install -y wget fi fi local url1=$1 local url2=$2 local filename=$3 speed1=`curl -m 5 -L -s -w '%{speed_download}' "$url1" -o /dev/null || true` speed1=${speed1%%.*} speed2=`curl -m 5 -L -s -w '%{speed_download}' "$url2" -o /dev/null || true` speed2=${speed2%%.*} echo "speed1:"$speed1 echo "speed2:"$speed2 url=$url1 if [[ $speed2 -gt $speed1 ]]; then url=$url2 fi echo "using url:"$url wget "$url" -O $filename } #判断系统版本 check_sys(){ local checkType=$1 local value=$2 local release='' local systemPackage='' local packageSupport='' if [[ "$release" == "" ]] || [[ "$systemPackage" == "" ]] || [[ "$packageSupport" == "" ]];then if [[ -f /etc/redhat-release ]];then release="centos" systemPackage="yum" packageSupport=true elif cat /etc/issue | grep -q -E -i "debian";then release="debian" systemPackage="apt" packageSupport=true elif cat /etc/issue | grep -q -E -i "ubuntu";then release="ubuntu" systemPackage="apt" packageSupport=true elif cat /etc/issue | grep -q -E -i "centos|red hat|redhat";then release="centos" systemPackage="yum" packageSupport=true elif cat /proc/version | grep -q -E -i "debian";then release="debian" systemPackage="apt" packageSupport=true elif cat /proc/version | grep -q -E -i "ubuntu";then release="ubuntu" systemPackage="apt" packageSupport=true elif cat /proc/version | grep -q -E -i "centos|red hat|redhat";then release="centos" systemPackage="yum" packageSupport=true else release="other" systemPackage="other" packageSupport=false fi fi echo -e "release=$release\nsystemPackage=$systemPackage\npackageSupport=$packageSupport\n" > /tmp/ezhttp_sys_check_result if [[ $checkType == "sysRelease" ]]; then if [ "$value" == "$release" ];then return 0 else return 1 fi elif [[ $checkType == "packageManager" ]]; then if [ "$value" == "$systemPackage" ];then return 0 else return 1 fi elif [[ $checkType == "packageSupport" ]]; then if $packageSupport;then return 0 else return 1 fi fi } get_sys_ver() { cat > /tmp/sys_ver.py <",sys_ver) if sys_ver.startswith("centos-7"): sys_ver = "centos-7" if sys_ver.startswith("centos-6"): sys_ver = "centos-6" print sys_ver EOF echo `python /tmp/sys_ver.py` } upgrade_db() { echo # 更新panel或conf flist='' for f in `echo $flist`;do \cp -a /opt/$dir_name/$f /opt/cdnfly/$f done } update_file() { cd /opt/$dir_name/master/ for i in `find ./ | grep -vE "^./$|^./agent$|^./conf$|conf/config.py|conf/nginx_global.tpl|conf/supervisor_master.conf|conf/nginx_http_default.tpl|conf/nginx_http_vhost.tpl|conf/nginx_stream_vhost.tpl|conf/ssl.cert|conf/ssl.key|^./panel"`;do \cp -aT $i /opt/cdnfly/master/$i done } # 定义版本 version_name="v5.1.13" version_num="50113" dir_name="cdnfly-master-$version_name" tar_gz_name="$dir_name-$(get_sys_ver).tar.gz" # 下载安装包 cd /opt echo "开始下载$tar_gz_name..." download "https://github.com/LoveesYe/cdnflydadao/raw/main/cdnfly/v5.1.13/master/$tar_gz_name" "https://github.com/LoveesYe/cdnflydadao/raw/main/cdnfly/v5.1.13/master/$tar_gz_name" "$tar_gz_name" echo "下载完成" echo "开始解压..." rm -rf $dir_name tar xf $tar_gz_name echo "解压完成" cd /opt echo "准备升级数据库..." upgrade_db echo "升级数据库完成" echo "更新文件..." update_file echo "更新文件完成." echo "修改config.py版本..." sed -i "s/VERSION_NAME=.*/VERSION_NAME=\"$version_name\"/" /opt/cdnfly/master/conf/config.py sed -i "s/VERSION_NUM=.*/VERSION_NUM=\"$version_num\"/" /opt/cdnfly/master/conf/config.py echo "修改完成" echo "开始重启主控..." supervisorctl restart all #supervisorctl reload echo "重启完成" echo "清理文件" rm -rf /opt/$dir_name rm -f /opt/$tar_gz_name echo "清理完成" echo "完成$version_name版本升级"