#!/bin/bash set -e CDN_DOMAIN=${CDN_DOMAIN:-"https://cdn.novalon.cn"} COS_BUCKET=${COS_BUCKET:-"novalon-cdn-1250000000"} COS_REGION=${COS_REGION:-"ap-chengdu"} DIST_DIR=${DIST_DIR:-"dist/static"} STANDALONE_DIR=${STANDALONE_DIR:-"dist/standalone"} echo "=========================================" echo "CDN静态资源部署脚本" echo "=========================================" echo "CDN域名: $CDN_DOMAIN" echo "COS存储桶: $COS_BUCKET" echo "COS区域: $COS_REGION" echo "静态资源目录: $DIST_DIR" echo "=========================================" if [ ! -d "$DIST_DIR" ]; then echo "错误: 静态资源目录不存在: $DIST_DIR" echo "请先运行 npm run build 构建项目" exit 1 fi echo "" echo "步骤1: 检查coscmd工具..." if ! command -v coscmd &> /dev/null; then echo "安装coscmd工具..." pip install coscmd fi echo "" echo "步骤2: 配置coscmd..." if [ -z "$COS_SECRET_ID" ] || [ -z "$COS_SECRET_KEY" ]; then echo "错误: 请设置环境变量 COS_SECRET_ID 和 COS_SECRET_KEY" echo "可以在腾讯云控制台 > 访问管理 > API密钥管理中获取" exit 1 fi coscmd config -a "$COS_SECRET_ID" -s "$COS_SECRET_KEY" -b "$COS_BUCKET" -r "$COS_REGION" echo "" echo "步骤3: 上传静态资源到COS..." echo "上传 _next/static/ 目录..." coscmd upload -r "$DIST_DIR" /_next/static/ --sync --delete echo "" echo "步骤4: 上传public目录中的静态资源..." if [ -d "public" ]; then echo "上传 public/ 目录..." coscmd upload -r public/ / --sync fi echo "" echo "步骤5: 设置COS对象缓存策略..." echo "为静态资源设置长期缓存 (1年)..." coscmd set-meta "_next/static/*" "Cache-Control: public, max-age=31536000, immutable" -r echo "" echo "步骤6: 刷新CDN缓存..." if [ -n "$CDN_DOMAIN" ]; then CDN_DOMAIN_CLEAN=$(echo "$CDN_DOMAIN" | sed 's|https://||' | sed 's|http://||') echo "刷新CDN域名: $CDN_DOMAIN_CLEAN" if command -v tccli &> /dev/null; then tccli cdn PurgePathsCache --Paths '["https://'"$CDN_DOMAIN_CLEAN"'/_next/static/"]' --FlushType flush echo "CDN缓存刷新请求已提交" else echo "提示: 未安装tccli工具,请手动在腾讯云控制台刷新CDN缓存" echo "刷新路径: https://$CDN_DOMAIN_CLEAN/_next/static/" fi fi echo "" echo "=========================================" echo "部署完成!" echo "=========================================" echo "静态资源已上传到: https://$COS_BUCKET.cos.$COS_REGION.myqcloud.com" echo "CDN加速域名: $CDN_DOMAIN" echo "" echo "后续步骤:" echo "1. 在腾讯云CDN控制台配置加速域名: cdn.novalon.cn" echo "2. 设置源站为COS存储桶: $COS_BUCKET.cos.$COS_REGION.myqcloud.com" echo "3. 配置HTTPS证书" echo "4. 测试CDN加速效果" echo "========================================="