搬家重装WordPress到docker版本顺路解决媒体库无法加载转圈问题

我目前的WordPress网站已经连续使用了十多年了,经历过各种虚拟主机和VPS,用过Apache和Nginx,不可避免的已经有了不少历史遗留问题。

 

历史遗留问题

之前,最让我恼火的,就是三个问题:

媒体库总是转圈,无法查看和管理,以及在文章中插入图片。
媒体库上传的中文文件名已经乱码。
更新WordPress总是提示“更新失败,status:success”。又成功又失败,这是怎么回事?

 

中文文件名乱码问题

其中,中文文件名乱码算是相对好解决的。这个问题的起因也许是某些我经历过的Linux版本对中文文件名的支持有比较严重的问题。因为WordPress对上传的文件总是会生成几个不同分辨率的缩略图。而我上传的图片大小也是不固定的,这就导致,不同的文件其实是会有相当不同的分辨率的缩略图。

就利用这点,如果你也是洁癖,愿意修复这个问题,那么可以模仿我之前的操作。 我的方法,就是下载了数据库文件.sql ,然后在本地用VSCode打开,搜索这些特定的分辨率,就能在数据库中找到正确的中文文件名。虽然本地文件名中的中文已经乱码,但是分辨率部分,比如100X100这个是没乱码的,通过这点就能手动修复已经乱掉的文件名。

如果有的文件还是不太确定,就需要依靠记忆或者其他元数据中的线索,来决定文件名了。

至于第二个问题,那才是最严重的。

 

WordPress媒体库转圈无法打开问题

我的WordPress从2022年附近开始,就无法在后台查看媒体库,而我完全不知道原因是什么。我当时唯一做过的,大概就是更新WordPress版本和oneinstack版本,其他什么也没做。

之前,我在网上查找过各种各样的方案,少说也有10个吧,但是没有一个实际有效果,浪费非常多时间。 如果你也遇到了这个问题,我劝你还是别折腾了,直接像我用接下来会介绍的方法重装吧,直接清理掉各种历史遗留问题。

在2023年,因为oneinstack暴露出疑似会给某些用户挂马,所以我决定抛弃oneinstack,切换到基于docker的1panel。

当时的迁移过程真就没什么好说的,还是下载WordPress文件,导出数据库.sql (mysqldump),导入数据库。 数据库方面需要注意的是,1panel的mysql通信地址不再是127.0.0.1这样的,而是用的docker地址,需要专门修改下。

 

1panel用直装版WordPress还是有媒体库转圈圈

1panel其实也基本支持继续使用原来的WordPress文件直接运行,方法是使用所谓“PHP运行环境”,实际上就是用的docker版PHP。

这里需要注意1panel的小字提示,index中的文件需要设置用户和组到1000。

最开始,因为当时比较赶时间,所以我就是用的这个方案,毕竟熟悉嘛。结果呢…因为我依然是用的十几年来一直在用的WordPress,后台媒体库无法查看和管理文件的问题依然没有解决! 依然还是转圈圈。

 

 

迁移1panel上的直装版到docker版WordPress

于是今天我终于决定研究下怎么将直装版的WordPress迁移到docker中。

在询问了GPT4turbo后,我发现其实这个过程简单到不可思议。简单来说,我只需要压缩和解压缩wp-content文件夹。

大家可以看看GPT的回答:

问:我打算将WordPress从直接运行的php环境搬迁到docker版本,因为docker版本已经准备好了所有的可执行文件,我似乎进行这种搬迁只需要处理自己的文件就可以了。那么我具体应该保留哪些文件呢?

GPT4turbo:在将WordPress从传统的PHP环境迁移到Docker环境中时,确实焦点主要在于迁移你的个人数据和配置。这包括数据库、上传的文件、主题、插件以及自定义的配置文件。以下是迁移过程中你应该保留和转移的关键文件和数据:

  1. wp-content 文件夹:
    • 插件(Plugins):位于 wp-content/plugins 的所有文件和目录,这里包含了你网站的所有插件。
    • 主题(Themes):位于 wp-content/themes 的所有文件和目录,这里包含了所有安装的主题。
    • 上传的文件(Uploads):位于 wp-content/uploads 的所有文件和目录,这些是网站上上传的媒体文件。
  2. 数据库备份:
    • 导出当前环境中的WordPress数据库。可以使用phpMyAdmin或其他数据库管理工具导出SQL文件。
  3. wp-config.php 文件:
    • 这个文件包含了数据库连接信息以及其他重要设置。
    • 在迁移到Docker环境时,可能需要更新数据库的连接信息或表前缀等。
  4. .htaccess 文件(如果使用Apache):
  • 如果是在基于Apache服务器的环境中,.htaccess文件用于配置重写规则和其他服务器层面的设置。

实际上,上述的大部分过程对我这样的,从1panel直装版WordPress迁移到docker版WordPress的用户来说,是不需要做的。

docker版本WordPress的本质,就是将VPS上的WordPress文件映射到docker容器内部。

基于以上思路,那么我现在需要做的就是首先做好资料备份,然后转移下文件而已。

 

建议你先备份数据的迁移流程

首先来到1panel,选择备份网站,将原来的直装版WordPress备份而且下载。注意,这个备份应该有大约70M,不要弄错了。

来到数据库,将数据库备份然后下载。

现在准备实际迁移。

利用1panel的在线文件管理器,来到直装版WordPress的文件目录(在网站选项中可以直接进入这个目录),将wp-contens文件夹压缩,然后将wp-contens.zip移动到其他的某个你方便的位置。

现在可以删除原来的直装版WordPress。不用担心,因为已经下载了备份,直接删除不会有什么风险。之所以删除,是因为原来的网站占用了域名资源,不方便你接下来的迁移。

在应用商店搜索WordPress(docker版)安装,其中的数据库信息和原来一样,然后在https://你的后台管理面板/apps/installed,你可以看到新WordPress的文件目录。

现在再次选择之前你复制到其他位置的wp-contens.zip,移动到docker版WordPress在vps上的数据目录(/opt/1panel/apps/wordpress/wordpress/data),然后解压缩。

文件迁移已经完成,现在来匹配用户权限

在1panel在线文件管理器中,来到wp-contents目录,可以发现docker版WordPress的所有文件都是www-data用户,www-data用户组。
而你之前迁移过来的文件,可能是其他的用户和用户组,所以现在需要修复这一问题。

选择wp-contens文件夹,选择权限,勾引递归,将用户和用户组都设置成“www-data”,修复用户问题。
如果你是从其他地方迁移过来的,可能还要注意用户权限。文件夹的权限都是755,文件的权限是644。

如果你不做以上修复,有相当大可能出现无法更新WordPress插件和主题的问题,会报错没有目录创建权限。具体可以查看这篇文章。

 

现在已经完成了迁移过程,就是这么简单。

现在剩下的就是配置下域名和证书什么的了,我相信这点没任何难度。

wp-config.php这个文件是不需要手动迁移的。因为docker版WordPress的wp-config.php文件中的信息都是来自docker环境变量,而这些环境变量会在你设置容器的时候手动设置。所以你需要做的只是复制下其中的信息,然后填写到docker容器的设置选项中。

现在重新打开你的WordPress域名,应该可以发现一切都正常了,包括媒体库转圈圈的问题终于彻底解决了。

 

如果你是其他迁移路径

如果你不是从1panel 直装版WordPress迁移到docker版,那么你的流程只需要做稍微修改。 反正还是导入数据库,然后上传wp-contents.zip文件夹到data中解压缩覆盖即可。

总的来说,docker版的WordPress迁移过程其实比以前直装版的更简单。

本文到此结束,希望对你有帮助。


已发布

分类

,

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据