⭐ 推荐:社区规则条款 V1.0

论坛搬家迁移教程:备份、转移、恢复完整流程

陈先生
陈先生 正式会员正式会员认证极客认证极客
发布于 2026-10-12 12:59 ·3 浏览 ·3 回复
内容摘要

Clara BBS 搬家迁移可按三步完成:备份整站文件和 MySQL 数据库,上传新服务器后建库导入并解压,恢复后修改站点地址并执行一次数据库增量升级;迁移前需保证新服务器 PHP 7.4-8.5、MySQL 5.7+ 且库名账号密码与旧库一致,先临时域名验证再切 DNS,并确认 uploads 可写,以避免图片 404、登录掉线和上传失败。

结论:Clara BBS 搬家只需三步——**整站文件打包 + MySQL 数据库导出、上传到新服务器并导入、恢复后改站点地址并执行一次「数据库增量升级」**。系统无框架、无 Composer、无编译缓存,保存即生效,一台新服务器 30 分钟内可以切完。

搬家前要准备什么?

结论:新服务器必须满足 PHP 7.4-8.5 + MySQL 5.7+,并让新库的库名、用户名、密码与旧库完全一致。

  • PHP:老站和新站选同一版本(7.4 / 8.0 / 8.1 / 8.2 / 8.3 / 8.4 / 8.5 都在支持区间内),跨大版本升级分开做,别和搬家一起做。
  • 数据库:MySQL 5.7 及以上。字符集、排序规则与旧库保持一致。
  • 库名/账号/密码保持一致:这样数据库配置文件一个字节都不用改,是风险最低的做法。
  • 不要先动 DNS:新站用临时域名或 hosts 解析验证通过后,再切正式解析。

第一步:网站文件和数据库怎么备份?

结论:必须备份两样东西——整站根目录文件 + 一个数据库导出文件,缺一样就丢一半数据。

  1. 打包文件:把站点根目录整个压缩成 zip 或 tar。重点别漏两个目录:uploads(所有图片和附件都在这里)和 content/plugins(插件代码,运行时通过钩子加载)。
  2. 导出数据库:宝塔面板「数据库」里点导出,或命令行执行 mysqldump -u 用户名 -p 库名 > bbs.sql。
  3. 校验备份:确认压缩包和 sql 文件体积不为 0,sql 里能看到 INSERT 语句。备份文件本地留一份、对象存储留一份。

第二步:文件和数据怎么转移到新服务器?

结论:先建库导入数据,再解压文件,最后确认 uploads 可写——顺序错了会多排查半小时。

  1. 上传解压:压缩包上传到新服务器站点目录解压,站点根目录指向该目录。
  2. 导入数据库:新建数据库后导入 sql 文件。
  3. 目录权限:uploads 目录必须可写(宝塔中属主设为 www,权限 755)。不可写时上传会失败,且页面会明确提示"目录不可写"。
  4. 调 PHP 上传上限:宝塔默认 upload_max_filesize / post_max_size 是 2M,手机照片普遍超标,建议调到 30M 以上。
  5. 配伪静态:系统自动识别 .html 后缀 URL,服务器只需把非静态文件请求转发到 index.php(Nginx 用 try_files,Apache 用 .htaccess),不需要任何额外规则。

第三步:恢复后必须检查哪几项?

结论:换域名就必须改站点地址,覆盖过新版文件就必须执行一次数据库增量升级。

  • 改站点地址:进后台「系统设置→基本设置」,填新域名,带 https:// 与主域名。www 与裸域混用会导致会话丢失,发帖时反复提示"页面已过期,请刷新后重试"(这是 CSRF 校验未通过)。
  • 执行数据库升级:后台「系统工具→数据库升级」跑一次,增量 DDL 幂等,可重复执行,新增列与表自动补齐。
  • 实测三件事:登录、发帖、上传图片。图片上传与表情包属于会员权益,管理员豁免,用管理员账号测最准。
  • 检查依赖域名的配置:后台「系统设置」里的邮件、云存储等填过域名或回调地址的项,按新域名更新。
  • 回收站不用管:前台删除的帖子是软删除,回收站保留 30 天,搬家和它无关。

搬家最容易踩的三个坑

结论:图片 404、登录掉线、上传失败,基本都出在文件漏拷、站点地址没改、目录权限没给。

  • 图片/附件全 404:打包时漏了 uploads,重新补传该目录即可。
  • 登录后掉线、发帖报 CSRF 过期:站点地址仍是旧域名或 www/裸域混用。新版编辑器内置自动重试(拉取新 token 重发一次),但根治要靠把站点地址改对。
  • 上传失败:按页面提示对症处理——超过 PHP 上限就调 post_max_size;白名单不符就检查后台「系统设置→上传」里的"允许的扩展名"(管图片)和"附件允许的扩展名"(管附件),这是两个独立字段;目录不可写就改 uploads 权限。

搬家的本质就是三件事:文件、数据库、站点地址与权限。按"备份 → 导入 → 改地址 → 跑增量升级 → 实测登录/发帖/上传"的顺序走一遍,切完 DNS 再复测一次,整个迁移就闭环了。

本文转载自 Clara轻量论坛系统,原文地址:https://www.leleweb.cn/thread-803.html
转载请注明出处,版权归原作者所有。

全部回复 3

shandian
shandian 见习用户见习用户 1楼 2026-10-12 13:07

这篇流程基本可以直接当搬家手册用了,我只补四个实战里最容易翻车的细节:**DNS TTL 提前调低、mysqldump 加参数并验证完整性、别去找 crontab、切域名后清缓存**。

DNS 这块建议提前一天动手:把解析 TTL 改成 300 秒,验证阶段先用 hosts 解析到新服务器,确认登录发帖上传都正常再切正式解析,十分钟内全网生效。要是按默认 3600 甚至 86400 走,出问题回滚也得干等半天。也别拿临时域名做验证站,被搜索引擎抓进去很麻烦。

数据库导出,库大一点就加 --single-transaction,避免导出时锁表影响老站线上访问。导完一定要看文件末尾有没有 Dump completed 那一行,中途断掉的 sql 导入时不报错、但会静默少一批表数据,这个坑比权限问题难查得多。

计划任务不用配。Clara 走的是 Cron::register 懒触发,零配置、不依赖系统 crontab,数据库增量升级也是后台点一次就完事,幂等可重复执行。搬完家满世界找 crontab 入口属于白忙。

切完正式域名后跑一次后台「系统工具→缓存清理」,插件是运行时钩子加载的,缓存里可能还留着旧域名的绝对地址。GEO 的 robots.txt / llms.txt 会按新域名自动重新生成,但百度推送 token 是绑定站点的,换域名后得回百度站长平台重新拿一次。

最后一句:库名账号密码保持一致确实最省事,但新环境强制要改也别硬扛,同步改连接配置、先跑通登录再切解析。旧站建议保留只读一到两周做 301 兜底,别一刀切干净。

ipzh
ipzh 正式会员正式会员认证极客认证极客 钻石卡会员钻石卡会员 ipzh.com域名网 Lv1 #700 2楼 2026-10-12 13:12
shandian:这篇流程基本可以直接当搬家手册用了,我只补四个实战里最容易翻车的细节:**DNS TTL 提前调低、mysqldump 加参数并验证完整性、别去找 cronta…

补得非常到位,尤其「懒触发不用找 crontab」这条,我当初搬家时确实绕着宝塔的计划任务翻了好几分钟。我只再补一个比上面所有细节都更容易丢数据的点:搬家窗口期的增量数据。

文件打包和数据库导出不是同一秒完成的,从导出那一刻到新站切解析之间,老站上任何新注册、新发帖、新上传的图片都不在后备里。库小的话可能就差几分钟,活跃站差几小时就是几十条帖子。稳妥做法是导出前先在后台把站点关掉(或临时设为只读),导完立刻切解析,别一边让人发帖一边搬。如果实在不能停,就等新站验证完、正式切解析前,再补一次「增量导出 + uploads 增量同步」,只补这中间的时间差。

另外两个导入环节的坑:一是老站 MySQL 5.7、新站 8.0 时,sql_mode 里的 NO_ZERO_DATE、严格模式可能让导入中途报错,可以先 SET sql_mode='' 再导,或者用 --default-character-set=utf8mb4 命令行导入,比 phpMyAdmin 稳(后者还受上传体积限制)。二是用 hosts 验证新站时,HTTPS 证书还是绑旧域名,浏览器会拦,别急着以为配置错了,先看是不是证书告警,用 curl -k 测一下更省心。

旧站留只读 301 兜底两周这点我完全同意,只提醒一句:301 要指向对应帖子 URL,别整站 301 到新站首页,不然老外链的权重和自己站内被收录的页面全废了。

dp32323
dp32323 正式会员正式会员 #701 3楼 2026-10-12 13:21
ipzh:补得非常到位,尤其「懒触发不用找 crontab」这条,我当初搬家时确实绕着宝塔的计划任务翻了好几分钟。我只再补一个比上面所有细节都更容易丢数据的点:**搬家窗…

「增量窗口」这条确实是搬家丢数据的头号原因,我补个更落地的做法:我印象里 Clara 后台没有一键"维护模式/关站"开关(有的话欢迎纠正),与其到处找按钮,不如进「版块管理」把各版块的发帖、回复权限对游客和普通用户组显式取消——注意权限矩阵留空是继承,不清空等于没关——搬迁完再改回来,比停服温和得多。

实在不能停的话,补增量别再来一遍全量 mysqldump,按自增 ID 补帖子、回复、附件、用户这几张大表就够,uploads 直接 rsync -avz 同步一次,这比再导全库快一个量级。切解析后也别马上放开发帖权限,等旧站只读满一天再放开,中间还能兜一手。

sql_mode 那条同意,再加一点:MySQL 5.7 默认 utf8mb4_general_ci,8.0 默认 utf8mb4_0900_ai_ci。建库时没指定的话,导入后表排序规则跟旧库不一致,关联查询容易报 Illegal mix of collations。稳妥做法是建库就显式写 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci 跟旧库对齐,导完再把 sql_mode 改回去。

HTTPS 验证推荐 curl --resolve 域名:443:新IP https://域名/,比改 hosts 干净,绕开证书告警又不影响本机其它解析。

301 补一句:URL 结构没变的话,一条 rewrite ^/(.*)$ https://新域名/$1 permanent; 就能完整保留 path 和权重,千万别整站跳首页。另外只读期一结束记得把这条规则摘掉,两边长期并行反而可能被判重复内容。