《苹果CMS数据迁移血泪史:备份、换库、改配置,三步走完我踩过的坑全在这》
先说结论:苹果CMS(MacCMS)看起来是个PHP程序,实际上迁移起来比织梦和帝国都矫情,我头一回迁移站点,直接打包服务器上的/www/wwwroot/整个目录,再导出一份SQL,传到新服务器解压、导入,一气呵成,结果打开首页,所有图片裂了,播放器白屏,后台登录直接报“数据库连接错误”,后来才发现,我压根没搞清楚苹果CMS的数据到底藏在哪几个地方——你光拷数据库和源码文件,等于只搬了半个家。
第一个坑:数据库里存的不只是内容,还有绝对路径和域名
我当时用的是宝塔面板,旧服务器环境是Nginx + PHP 7.4 + MySQL 5.7,新服务器是Apache + PHP 8.0 + MySQL 8.0,寻思着PHP向下兼容,直接迁移完事,结果后台能进,但所有采集回来的播放地址全部失效,连图片也一律显示旧域名链接。
解决方案:

苹果CMS数据迁移,别急着拷数据库,先搞清楚这三件事,能省你一天时间
- 进phpMyAdmin,导出原库的
.sql文件,不要勾选“使用扩展插入”,不然文件太大容易卡死。 - 在
mac_vod表里,vod_pic字段、vod_play_url字段都是带绝对URL的,尤其采集来的资源站链接,存的是完整网址,去新服务器导入后,用SQL批量替换:UPDATE mac_vod SET vod_pic = REPLACE(vod_pic, 'http://旧域名', 'http://新域名'); UPDATE mac_vod SET vod_play_url = REPLACE(vod_play_url, 'http://旧域名', 'http://新域名');
- 还要检查
mac_config表,里面存着网站地址、播放器解析接口、广告位代码,全部替换掉,我之前漏了广告位,结果新站挂了一堆旧域名的小广告,用户一举报,管局电话就来了。
第二个坑:入口文件和数据目录是分离的,别只改数据库
苹果CMS默认上传存储路径是./upload/,但你如果开了“远程附件”,或者用了第三方OSS插件,那图片和视频都在云上,没问题,但我是本地存储,新服务器上upload目录里的文件还在,可后台附件管理全显示空列表,为啥?因为数据库里的mac_attachment表记录的路径前缀对不上。
解决方案:
先别急着传大文件,先改配置文件,打开application/database.php,确认库名、账号、密码没问题,然后重点看/static/js和/template,尤其你换了模板,旧模板的CSS、JS路径写死了,迁移后页面错乱是常事。
推荐一个懒人办法:用Docker部署一个新苹果CMS环境(官方镜像就行),然后直接把旧服务器的upload目录和数据库导入容器里,改一下.env里的数据库连接,这样能少踩环境依赖的坑,我第二次迁移就是用了docker-compose起的MariaDB + PHP环境,半小时搞定,比手动配Apache省心多了。
第三个坑:伪静态规则必须跟着环境走
老服务器是Nginx,新服务器如果是Apache,那你之前配的nginx rewrite规则全部作废,苹果CMS的伪静态规则官方文档有,但网上千篇一律,复制粘贴容易漏掉一行,我那次迁移后,视频详情页全变成404,后台却能打开,折腾了两小时,才发现是Apache的.htaccess里少写了一段RewriteCond %{REQUEST_FILENAME} !-f。
解决方案:
进后台“系统 => 应用 => 播放器配置”,先确认当前URL模式,如果是“伪静态”,直接去官方GitHub/storage下拿对应环境的伪静态文件,别自己琢磨,Nginx就放nginx.conf,Apache就放.htaccess,如果新服务器是Apache2.4,记得开AllowOverride All,不然规则根本不会生效。
推荐配置和插件,别乱装
- 本地存储用户:上传目录挂一个独立磁盘,比如30GB数据盘,别把upload和系统盘放一起,否则迁移时打包文件能把机器卡死。
- 数据库优化:苹果CMS后台自带“数据库备份”功能,但那个备份文件只备份结构,不备份数据!真实数据得靠phpMyAdmin或
mysqldump,推荐用mysqldump --single-transaction --default-character-set=utf8mb4导出,避免中文乱码。 - 插件:我只装两个,一个“采集插件”(用于一键对接资源站),一个“百度主动推送插件”(养收录用),其他花里胡哨的加速插件、缓存插件,迁移时全是要命的包袱,尤其缓存插件,会生成大量
runtime/cache文件,迁移后不清理,新服务器直接报错。
长期维护建议
- 每月备份一次数据库,但别存服务器本地,用宝塔的“计划任务”自动备份到阿里云OSS或腾讯云COS,成本一天几分钱,我上次服务器被挖矿脚本搞崩,恢复时全靠那份云端备份。
- 版本别追新,苹果CMS出新版,先别升级,等一个月看有没有人爆雷,我升级过一次v10到v11,结果后台采集规则全变,模板标签也不兼容,回滚还麻烦。
- 服务器环境要刻在脑子里,迁移前把Nginx/Apache版本、PHP版本、MySQL版本、redis是否启用,全部记下来,新环境照着配,版本差太大,比如MySQL 5.7到8.0,排序规则和字符集都可能出幺蛾子,到时候不是改代码能解决的。
- 域名千万别乱换,苹果CMS的播放器、采集、支付接口都绑定了域名,你换域名就得挨个改,改漏一个就白屏,真要换域名,提前在后台“应用中心”把相关接口重新绑定一遍,再动数据。
最后送你一句话:苹果CMS迁移不是“挪窝”,是“搬家”,搬家之前列个清单——数据库、源码、upload目录、伪静态规则、配置里的绝对路径,少搬一样,都得回去跑一趟,按我上面这套操作来,从打包到新站能访问,两小时足够了,别不信,我第一次折腾了一整天,眼睛都快看瞎了。
发表评论