# 搬家 / 换域名 操作清单 —— bt.kajiejie.com 自持镜像 (2026-09-27 事故后整理:当天给本站搬家时 extension 配置丢失, 客户端面板装插件报 JSONDecodeError,详见 index.php 第七节第 5 条) ## 一、换服务器(搬家,域名不变)—— 客户端完全无感 镜像站是自包含的:PHP 全用 __DIR__ 取路径、无数据库、无外部依赖。 1. 打包带走整个站点目录 tar czf as-mirror-$(date +%F).tar.gz -C /vol2/1000/ydp bt.kajiejie.com (或 rsync -a 整个目录) 2. 新服务器宝塔建站 - 域名 bt.kajiejie.com,PHP 需能解析(index.php / plugin_dl.php 是 PHP) - 一键申请证书 3. 还原内部路由(★ 最容易漏,宝塔建站不会带这个文件) mkdir -p /www/server/panel/vhost/nginx/extension/bt.kajiejie.com cp /root/as-mirror-config-backup/mirror_api.conf.bt.kajiejie.com \ /www/server/panel/vhost/nginx/extension/bt.kajiejie.com/ (备份在本机 /root/as-mirror-config-backup/;若也丢了,照 index.php 第八节 说明重建那三个 location) 4. 语法检查 + 平滑生效 /www/server/nginx/sbin/nginx -t && /www/server/nginx/sbin/nginx -s reload 5. 三接口自检(全过再切 DNS) curl -sS -o /dev/null -w '%{http_code}\n' -X POST https://bt.kajiejie.com/down/download_plugin -d 'name=monitor&version=4&os=Linux' # 期望 200 curl -sS https://bt.kajiejie.com/api/panel/get_panel_version_v3 # 期望 JSON ls /www/server/panel/vhost/nginx/extension/bt.kajiejie.com/ # 期望有 mirror_api.conf 6. DNS 切到新机(旧机保留一两天再关) ## 二、换域名 ### 2.1 镜像站内部要改的地方(客户端流程直接用到,必改) install/install.sh 第 6 行 Btapi_Url、第 1671 行 isCN 检查 install/update6.sh 第 6 行 Btapi_Url(注释里也有) install/public.sh 176 / 178 行 tools/bt_selfhost_patch.sh 第 33 行 MIRROR 默认值 tools/install_plugin.sh 第 20 行 MIRROR 默认值 install/plugin/*/install.sh 约 80 个文件、上百处(插件安装时拉公共依赖) extension 里的 mirror_api.conf JSON 中的 downUrl 批量替换(执行前确认 grep 只命中域名本身): cd /vol2/1000/ydp/bt.kajiejie.com grep -rl 'as\.kajiejie\.com' --include='*.sh' --include='*.php' . \ | xargs sed -i 's|as\.kajiejie\.com|新域名|g' 文档顺带改:index.php、tools/install-notes.txt、tools/remysql_slave.sh ### 2.2 已分发出去的客户端 —— 真正的难点 那些机器的面板源码里已写死旧域名(class/panelPlugin.py、class/system.py、 class/PluginLoader.py、script/upgrade_panel_optimized.py、install/public.sh), 无法远程修改。 推荐做法:旧域名永不退役 —— * 新站 vhost 的 server_name 并列写两个域名,同一份站点同时服务 * 客户端继续走旧域名,新装机文档用新域名 * 绝不能把旧域名 301 到新域名:插件下载是 POST,301 会把 POST 变 GET 丢参数 若旧域名必须退役:写一个"改指"脚本(sed 把客户端上述 4 个 py + install/public.sh 里的旧域名换成新域名),到每台客户端上手动跑一次。 ### 2.3 换域名后别忘了 * 给新域名签证书 * 更新本清单与 index.php 里的示例命令 * 三接口自检(同 1.5) ## 三、日常:每次在宝塔里动过这个站(删站 / 搬家 / 重签证书)之后 跑一遍 1.5 的三接口自检 —— 2026-09-27 就是漏了这一步,客户端装插件全挂。