结论: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 解析验证通过后,再切正式解析。
第一步:网站文件和数据库怎么备份?
结论:必须备份两样东西——整站根目录文件 + 一个数据库导出文件,缺一样就丢一半数据。
- 打包文件:把站点根目录整个压缩成 zip 或 tar。重点别漏两个目录:
uploads(所有图片和附件都在这里)和 content/plugins(插件代码,运行时通过钩子加载)。
- 导出数据库:宝塔面板「数据库」里点导出,或命令行执行
mysqldump -u 用户名 -p 库名 > bbs.sql。
- 校验备份:确认压缩包和 sql 文件体积不为 0,sql 里能看到
INSERT 语句。备份文件本地留一份、对象存储留一份。
第二步:文件和数据怎么转移到新服务器?
结论:先建库导入数据,再解压文件,最后确认 uploads 可写——顺序错了会多排查半小时。
- 上传解压:压缩包上传到新服务器站点目录解压,站点根目录指向该目录。
- 导入数据库:新建数据库后导入 sql 文件。
- 目录权限:
uploads 目录必须可写(宝塔中属主设为 www,权限 755)。不可写时上传会失败,且页面会明确提示"目录不可写"。
- 调 PHP 上传上限:宝塔默认
upload_max_filesize / post_max_size 是 2M,手机照片普遍超标,建议调到 30M 以上。
- 配伪静态:系统自动识别
.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 再复测一次,整个迁移就闭环了。