** 《苹果CMS搬家换环境?别慌!从LNMP到宝塔再到Docker,一次给你讲透》
问: 大佬,我原来用的是虚拟机装的苹果CMS,现在想搬到新买的云服务器上(换了系统,从Windows换成了Linux宝塔面板),数据能直接打包过去吗?会不会废了?
答: 直接打包肯定不行,但也没那么玄乎,你记住一个核心原则:数据要搬,环境要重建,数据库(.sql文件)和网站文件(/www/wwwroot/你的域名)是“魂”,必须完整打包;但PHP版本、Nginx/Apache配置、伪静态规则这些是“皮”,得在新环境里重新“长”出来,你换到宝塔后,先装好PHP 7.x(建议7.4或8.0,别用5.6)、MySQL 5.7(或MariaDB)、Nginx,然后用宝塔的“备份”功能导出数据库,再FTP下载网站目录,上传到新服务器后,用宝塔的“导入”功能恢复数据库,再把网站文件解压到新站点目录,最后记得去“伪静态”里选“thinkphp”规则,否则首页能开、内页全404。
苹果CMS搬家换服务器?不同环境下的踩坑与填坑实录
问: 我搬家后,后台能进,但前台首页一直报错“模板文件不存在”,但我明明把模板文件夹都传上去了啊?哪里出问题了?
答: 兄弟,八成是你目录权限不对,苹果CMS对临时目录和缓存目录要求写权限,你用宝塔的话,右键网站根目录,把目录权限改成755,所有者设为www用户,更重要的是,去后台“系统设置”->“性能优化”里,把“缓存目录路径”和“模板编译目录”清空一下,再点“提交”,如果还不行,直接FTP进去删掉 /application/ 下的 runtime 文件夹,让系统重新生成缓存,搬家后十有八九是缓存路径里的绝对路径还写着老服务器的地址,你要去后台设置里把站点域名和安装路径更新一下,然后强制刷新缓存。
问: 我原来用的是PHP 5.3的老服务器,搬到了新环境是PHP 7.4,结果播放页黑屏,后台点“播放器配置”全是问号,怎么整?
答: 这就是典型的旧版程序兼容新版PHP的毛病,苹果CMS是老架构,在PHP 7.4下有些函数被废弃了(比如each()、mysql_*系列),你先去后台确认版本,如果是V10以前的老版本,建议直接升级到最新的V10版本(免费版就行),后台有“在线升级”功能,如果不想升级,那你必须在宝塔里把PHP版本切回5.6,并且禁用opcache,同时修改公共函数文件里的旧语法,但说实话,老程序有漏洞风险,我建议你直接拆了重建:把新版CMS装好,用它的“数据导入”工具把老的数据库导入进去,模板重新挂上,播放器重新对接(代码就那一段,复制粘贴就行)。
问: 我在原服务器上用的Nginx,搬家后换成Apache,结果整个站后台能打开,但前台所有链接都跳转到首页,或者提示“404 Not Found”,我改了什么吗?
答: 这不叫搬家失败,这叫伪静态规则没同步,换Web服务器,相当于换了个“翻译官”,你原来的Nginx伪静态规则(通常是.conf文件),Apache根本不认识,解决办法:第一步,先别管伪静态,去后台“系统设置”->“URL设置”里,把“URL模式”改成“兼容模式”(就是带那种?m=home&c=view&a=index的),先把页面能访问了,第二步,如果你是宝塔,进站点设置->伪静态,选择“苹果CMS”或“thinkphp”自带的规则,然后保存,第三步,再去后台把URL模式改回“Rewrite模式”,测试内页能否打开,记得每次改完要清浏览器缓存。
问: 搬家后,我原来的采集插件不能用了,点击采集按钮一直转圈没反应,是插件坏了还是环境变了?
答: 大多数是PHP函数被禁了,新装的环境(特别是有安全加固的宝塔),默认会禁用shell_exec、proc_open、putenv这些函数,而苹果CMS的采集插件(特别是那种带爬虫功能的)需要调用系统命令来抓取资源站,你进宝塔->网站->PHP设置->禁用函数里,把这些函数从禁用列表里拉黑(移除),保存后重启PHP,另一个坑是采集超时,老服务器默认连接超时30秒,新服务器可能设置太短,去后台“系统设置”里把“采集超时时间”改成300秒(即5分钟),还有,采集到的图片如果你是远程下载到本地,要检查新服务器的php.ini里allow_url_fopen是否开启。
问: 新服务器配置比老的高一倍,但搬家后首页打开特别慢,要5秒以上,数据库和文件都搬全了,怎么调优?
答: 这就是典型的环境配置没跟上硬件,别急着加钱买带宽,按下面三步走:第一,打开Nginx的gzip压缩,在配置里加上gzip on; gzip_min_length 1k; gzip_types text/plain text/css application/json application/javascript;,前端体积能缩一半,第二,在后台“性能优化”里开启“模板缓存”(有效期设3600秒),再开启“Redis缓存”或“Memcache”(宝塔里装一个Redis扩展,后台填上地址和端口),第三,检查数据库索引——用phpMyAdmin或者宝塔面板的数据库管理,执行一下这个SQL:ALTER TABLE mac_vod ADD INDEX vod_time (vod_time); 如果数据量超过10万条,这能让你列表页和首页排序快一个数量级,把PHP的opcache内存设为128M,重启PHP。
问: 我从一台没有面板的纯命令行搬到了宝塔,搬家后后台登录一直提示“验证码错误”,刷新了也没用,急死我了。
答: 99%是PHP版本不兼容或者会话目录没权限,验证码是存到session里的,搬家后后台的session目录路径可能失效,你直接去宝塔的站点设置->配置文件,找到fastcgi_param PHP_VALUE那一行,加入一句session.save_path = "/tmp",然后重启PHP,如果还不行,就去后台点“退出登录”,然后手动删除浏览器里该站点的Cookie,再重新访问,如果你从PHP 5.6升到8.0,必须去后台把“加密模式”关闭(如果开了的话),老程序的加密函数在8.0下会直接报错。
问: 大哥,搬家后我后台“播放器配置”里的“自定义解析”接口全部失效,以前能放片的现在全是“无法播放”,这跟环境有啥关系?
答: 这跟PHP版本和服务器外网访问能力有关,很多解析接口需要你的服务器主动请求第三方API接口,新服务器如果没开curl扩展,或者被防火墙挡了外网请求,自然拉流失败,你在宝塔里检查PHP扩展:curl、openssl必须开启,去服务器安全组(云控制台)里,出方向规则要允许所有TCP流量,去后台“播放器配置”里,把解析地址手动改成支持HTTPS的(老地址可能已经挂了),如果还不通,就用ping命令测试一下解析域名通不通,不通就换一个公共解析接口(网上搜“苹果CMS通用解析接口”一大把),注意:新服务器如果开了IPv6但对方只支持IPv4,也会导致握手失败,你直接在系统层禁用IPv6试试。



发表评论