加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

发布程序时候的CDN自动部署

发布时间:2020-12-15 07:13:41 所属栏目:安全 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #该函数对CDN目录进行处理 DEAL_CDN() { cdnChangeLog=$fabuLog/changeLog.cdn apacheNeedYuiFileList=$fabuLog/apacheNeedYuiFileList.cdn cdnNeedYu

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#该函数对CDN目录进行处理 
DEAL_CDN() { 
    cdnChangeLog=$fabuLog/changeLog.cdn 
    apacheNeedYuiFileList=$fabuLog/apacheNeedYuiFileList.cdn 
    cdnNeedYuiFileList=$fabuLog/cdnNeedYuiFileList.cdn 
    if [ ! -d $cdnSrc ] || [ `ls -A $cdnSrc | wc -l` -eq 0 ]; then { 
        IS_DIR $cdnSrc 
        cd $webSrc 
        find . -type f -name "*.js" -o -name "*.css" > $cdnChangeLog 
        cd - 
        excludefile=$fabuConf/exclude.cdn 
    } else { 
                #$webSrc为svn更新的包含图片、js、css等文件类型的目录 
                cd $webSrc 
                find . -type f -name "*.js" -o -name "*.css" | xargs stat -c '%n %Y' | sort -k1,1 > $apacheNeedYuiFileList 
                #$cdnSrc为最后使用rsync命令发布到CDN上去的目录,该目录和在线CDN目录除了排除文件以外是一致的 
                cd $cdnSrc 
                find . -type f -name "*.js" -o -name "*.css" | xargs stat -c '%n %Y' | sort -k1,1 > $cdnNeedYuiFileList 
                #处理修改,apacheNeedYuiFileList中时间戳大于cdnNeedYuiFileList时间戳的为需要处理修改的 
                join $apacheNeedYuiFileList $cdnNeedYuiFileList | awk '{if($2>$3)print $1}' > $cdnChangeLog 
                #处理增加,在apacheNeedYuiFileList中有的,但是在cdnNeedYuiFileList中没有的,为增加 
                while read line; 
                do 
                        namename=$(echo $line | awk '{print $1}') 
                        grep -q  $namename $cdnNeedYuiFileList 
                        if [ $? != 0 ];then 
                                echo $namename >> $cdnChangeLog 
                        fi 
                done < $apacheNeedYuiFileList 
                #处理删除,在cdnNeedYuiFileList中有的,但是在apacheNeedYuiFileList中没有的,为删除 
                cd $cdnSrc 
                while read line; 
                do 
                        namename=$(echo $line | awk '{print $1}') 
                        grep -q $namename $apacheNeedYuiFileList 
                        if [ $? != 0 ];then 
                                rm -f $namename 
                        fi 
                done < $cdnNeedYuiFileList 
        excludefile=$fabuConf/exclude.cdn 
    } 
    fi
    #$excludefile中会排除掉js、css文件
    rsync -av --del --exclude-from="$excludefile" $webSrc/ $cdnSrc > $fabuLog/getOringal.cdn
    for file in `cat $cdnChangeLog`; do
        dir=`dirname $file`
        IS_DIR $cdnSrc/$dir
        #使用enca为需要压缩的文件确定文件编码,对于不确定的编码类型不压缩
        lang_result=$(/usr/local/bin/enca -L zh $webSrc/$file)
        echo "$lang_result" | grep -Eq 'UTF-8|ASCII' && charset=UTF-8
        echo "$lang_result" | grep -Eq 'GB2312' && charset=GB2312
        charset=${charset:-unknown}
        if [ "$charset" == "unknown" ];then
                rsync -av $webSrc/$file $cdnSrc/$file
                continue
        fi
        $JAVA_HOME/bin/java 

        -jar $YUI_HOME/yuicompressor-2.4.7.jar 

        $webSrc/$file -o $cdnSrc/$file 

        --charset $charset
        unset charset
    done
}


处理完成后,使用rsync命令可以将$cdnSrc推到在线CDN

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读