1.
说明香港高防服务器下载中心常见用途(镜像分发、补丁分发、客户专属包等),并给出目录约定示例:/var/www/downloads/(主目录),/var/www/downloads/releases/(正式版),/var/www/downloads/beta/(测试版),/var/www/downloads/legacy/(旧版本)。
关键点:默认用 nginx 做静态分发,配合防火墙和高防服务;目录权限通常为 www-data:www-data,权限 750 或 755。
2.
操作命令(SSH 登录香港高防服务器): 1) ssh user@hk-server 2) sudo -i 3) cd /var/www/downloads 4) ls -la
说明如何识别 release、beta、legacy 目录及符号链接(例如 current -> releases/v2.3.1)。若找不到,先用 find /var/www/downloads -maxdepth 3 -type d 来定位。
3.
推荐方法:SFTP(安全且可断点续传)。 1) 打开终端:sftp user@hk-server 2) cd /var/www/downloads/releases 3) put local-package.tar.gz 或使用 scp:scp local-package.tar.gz user@hk-server:/var/www/downloads/releases/
上传后检查文件完整性:ssh 到服务器后执行 sha256sum local-package.tar.gz > local-package.tar.gz.sha256,并把 sha 文件一并放在目录。
4.
在 releases 目录建立版本文件夹,例如 mkdir v2.4.0 && mv local-package.tar.gz v2.4.0/ 。创建或更新 current 符号链接: sudo ln -sfn /var/www/downloads/releases/v2.4.0 /var/www/downloads/current
说明:-sfn 参数确保原有链接被原子替换,避免短暂不可用。为回滚保留旧链接,例如 previous -> releases/v2.3.1。
5.
设置基本权限: sudo chown -R www-data:www-data /var/www/downloads/releases/v2.4.0 sudo chmod -R 750 /var/www/downloads/releases/v2.4.0
如服务器启用 SELinux(less 常见于 Ubuntu),执行:sudo restorecon -Rv /var/www/downloads;若使用 ACL 做精细控制:sudo setfacl -R -m u:www-data:rX /var/www/downloads。
6.
在 /etc/nginx/sites-available/downloads.conf 添加 location: server { listen 80; server_name downloads.example.hk; root /var/www/downloads; location / { autoindex on; sendfile on; tcp_nopush on; } }
启用并重载 nginx:sudo ln -s /etc/nginx/sites-available/downloads.conf /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl reload nginx。
7.
建议每个发行包同时提供 sha256 和 GPG 签名: 1) 生成校验:sha256sum package.tar.gz > package.tar.gz.sha256 2) 使用 GPG 签名:gpg --armor --detach-sign package.tar.gz 3) 把 .sig 和 .sha256 上传到相同目录 客户下载后通过 sha256sum -c package.tar.gz.sha256 或 gpg --verify package.tar.gz.asc package.tar.gz 来验证。
8.
建立一个兼容性矩阵文件(例如 compatibility.md)放在 /var/www/downloads/,示例内容: - v2.4.0: 支持 API v3,数据库 schema 2024-06,兼容旧客户端 v2.x(需降级兼容层) - v2.3.1: 支持 API v2,数据库 schema 2023-11
实际检查步骤:查看发布说明、数据库迁移脚本(/migrations),并用测试环境按顺序执行升级脚本:./migrate.sh up v2.4.0。
9.
回滚前检查回滚点存在且数据库回滚脚本可用: 1) sudo ln -sfn /var/www/downloads/releases/v2.3.1 /var/www/downloads/current 2) 重启服务(若需):sudo systemctl restart app-service 3) 在回滚后立即验证 checksum 与服务健康 /health 接口
注意:回滚数据库比回滚静态文件更危险,须确保有数据库备份(mysqldump 或 pg_dump),并测试备份恢复。
10.
在香港高防环境中,常见做法是本地保存主镜像并通过 CDN 分发: 1) 将 /var/www/downloads/current 链接到 CDN 源地址 2) 在 CDN 控制台配置回源为 downloads.example.hk,开启缓存策略及鉴权 3) 使用 cache-control header:add_header Cache-Control "public, max-age=86400";
测试:使用 curl -I https://cdn.example.hk/releases/v2.4.0/package.tar.gz 检查响应头和缓存命中率。
11.
若下载 403/404: 1) 检查 nginx error.log(/var/log/nginx/error.log) 2) 检查文件权限与 SELinux 3) 确认符号链接指向正确路径 若校验失败:重新计算 sha256 并比较原文件;确认上传过程未损坏(使用 rsync 可校验传输)。
若速度慢:检查带宽、并发连接数,以及 CDN/高防策略是否限速。
12.
问:如何保证下载的文件未被篡改?
答:通过同时发布 sha256 校验和 GPG 签名文件,并在服务器端对上传文件生成校验值;客户下载后使用 sha256sum -c 或 gpg --verify 验证签名,此外启用 HTTPS 和强制 HSTS、使用 CDN 回源验证可进一步降低中间人篡改风险。
13.
问:上线新版本前如何快速判断兼容性?
答:建立兼容性矩阵(compatibility.md),包含 API 版本、数据库 schema、第三方依赖版本;在测试环境按升级路径执行 migrate 脚本并运行回归测试;核对变更日志中破坏性变更项并准备回滚脚本与备份。
14.
问:在高防服务器上传大包时,有什么建议?
答:使用 rsync 或 SFTP 分片上传以保证可断点续传,上传完成后计算并发布 sha256;设置合适的 nginx sendfile 与 tcp_nopush 参数以优化性能;通过 CDN 缓存降低源站带宽压力;并限制上传权限与开启访问日志审计。