家庭数据中心系列 wordpress启用多站点模式并进行老站点到新站点的数据迁移

前言

wordpress是支持多站点功能的,但是一直以来我感觉并没有很迫切的多站点的需求,并且也不想用正常运行站点的设备做实验,所以一直没去折腾。

前几天为了写wordpress多站点的解决方案(参见文章:家庭数据中心系列 活用cloudflare tunnel实现wordpress主站点故障时灾备站点自动接管),又99元撸了一个阿里云的云服务器,现在方案写完了,云服务器空闲了下来,就想着干脆趁这个机会把wordpress多站点的功能熟悉一下,以后有需要的时候也可以马上用起来。

不过照着网上的各种教程折腾了半天,发现对于已经运行了很久的站点而言,直接开启多站点功能有太多不方便的地方:
1、不能使用子目录的部署方式

对于已经运行超过1个月的站点,子目录部署的方式就无法选择了(虽然我用不上),不过我相信对很多朋友而言这是一种方便的部署方式。
2、子域名模式会有些莫名其妙的问题

启用了基于子域名的多站点模式之后,根据wordpress站点以前的域名访问方式设置(参见文章:奇技淫巧系列 wordpress支持多域名访问功能简易设置教程),会出现不同的莫名其妙的问题,最后还是修改了wordpress数据库的wp_options表中的site url和home才解决,不过能访问之后感觉也不太对,在控制台中时而会遇到打不开页面需要重新刷新的情况,总之就是不太爽。

最终,决定采用重新部署新站,开启多站点之后,再恢复其他设置的方式来进行,本文中假定将我的域名”blog.tangwudi.com”对应的wordpress的内容迁移到域名为”test.tangwudi.com”的全新的并开启了多站点wordpress上。

重新部署wordpress

这里不多说,可以参看以前的文章:docker系列 使用docker基于wordpress架设博客从站点并实现主从站点配置定期备份

开启多站点

编辑wp-config.php文件,找到如下描述:

/* That's all, stop editing! Happy publishing. */

然后在这行上面添加代码并保存:

define( 'WP_ALLOW_MULTISITE', true );

如下图:

image.png

然后进入仪表盘,在工具菜单下多了一个配置网络的选项:
image.png

image.png

如果出现下图的警告,是因为没有配置*.test.tangwudi.com的泛域名解析指向该站点,这个不用管,之后只要正确配置子域名即可:
image.png

根据下图红框中的提示正确配置站点网络:
image.png

image.png

image.png

保存完后重新登录,可以看到多出来一个”我的站点”的选项,里面的”管理网络”就是添加新站点的关键了。
image.png

具体如何添加新站点、如果添加某个站点的管理员这些我就不多讲了,网上的教程很多,也没有啥难度,这并不是本文要讲的重点。

迁移老站点数据到新站点

其实,网上很多开启wordpress多站点的教程到了上一节就结束了,如果是全新站点很正常,不过我们是运行了很久的、有很多内容的老站点开启多站点,就还需要迁移数据,当然,这个迁移也分为wordpress程序数据和数据库里内容。

迁移老站点wordpress程序数据


前置知识:wordpress程序有3个目录,分别是”wp-admin”、”wp-incloudes”、”wp-content”。
“wp-admin”目录:包含了控制 WordPress 仪表板的管理文件;”wp-incloudes”:包含了存储管理 WordPress 外观的文件;”wp-content”:包含网站使用的所有主题、插件、升级或上传的文件夹。


为了尽量不影响新站的配置文件,我直接把老站的3个目录:”wp-admin”、”wp-content”、”wp-incloudes”拷贝到新站上,然后访问出现如下报错:

image.png

理论上这个时候最佳方式应该是找到哪个配置文件里指定了twentytwentyfour这个主题,然后修改为指向已有的主题,但是我大概看了一下,没找到。。懒得折腾,直接把现有的主题,如下图红框的文件夹”twentytwentytwo”的名字,改成了”twentytwentyfour”,

image.png

然后就可以访问了:
image.png

使用https://test.tangwudi.com/wp-admin/my-sites.php进行访问,可以看到插件这些都过来了:
image.png

主题也过来了,不过老站使用的agron主题不是默认主题,并且也没有启用:

image.png

将argon主题改为在所有站点中启用:
image.png


注1:启用多站点之后,直接使用https://test.tangwudi.com/wp-admin访问的只是主站点”test.tangwudi.com”的仪表盘(后续其他的子站点都是类似的),要全局控制所有站点的插件、主题、文章等内容,需要访问https://test.tangwudi.com/wp-admin/my-sites.php

image.png

注2:倒腾了很久,最后发现”wp-content”目录下的”plugins”目录,就是原本插件的安装目录,最好还是清空比较好,因为有些插件不支持多站点(或者收费版才支持多站点),直接考过去会引起一堆问题,还是在新站点上根据实际情况重新安装的好,这个问题浪费了我起码一天的时间。


迁移老站点文章等数据到新站点的主站点上

原本这里我想着很简单:要么直接把老站点的wordpress数据库导到新站点上,或者使用WPvivid备份插件把数据库内容直接恢复,但是发现不行,直接导入老站点导出的sql文件之后站点都可能打不开了。。,我想是因为单站点和多站点的数据库一些格式不一样,而WPvivid备份插件干脆说免费版不支持多站点,要升级pro~~~。所以我就采用比较原始的方式:在老站点上导出所有数据为xml文件,然后在新站点的主站点上进行导入:

image.png

image.png

image.png


docker部署的wordpress默认有最大上传文件1兆的限制,如果老站点导出的xml文件不超过1兆直接导入即可,但是我的是2.7兆,远大于1兆,所以需要修改wordpress容器中的php.ini。

因为我习惯使用vim,所以需要使用apt安装,但是,默认的wordpress容器里没有”/etc/apt/sources.list”文件,所以无法使用apt,所以我使用如下命令生成了sources.list:

cat <<EOF >/etc/apt/sources.list
deb http://deb.debian.org/debian/ bookworm main contrib non-free-firmware
deb http://deb.debian.org/debian/ bookworm-updates main contrib non-free-firmware
deb http://deb.debian.org/debian/ bookworm-backports main contrib non-free-firmware
deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free-firmware
EOF

然后就可以运行如下命令安装vim:

apt update
apt install vim

最后使用如下命令编辑php.ini:

cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
vim /usr/local/etc/php/php.ini

一般修改如下2个参数即可:

upload_max_filesize = 20M #按自己实际需求修改
post_max_size = 30M #按自己实际需求修改,一般这个的数值要大于上面的upload_max_filesize

在主站点里导入老站点导出的xml文件:

image.png

image.png

然后在外观之中启动argon的主题:
image.png

最后访问主站点,这时候基本框架就已经好了:
image.png

剩下的就是重新安装插件,顺便看看哪些插件支持多站点模式,不支持的还要寻找替代方案,还要设置插件,如果真要弄的话还要花些时间,这里我就不多说了。

总结

其实吧,这么折腾了一圈下来,发现多站点模式在运维上的确没有单一站点模式方便,从单一站点迁移到多站点模式也还是比较折腾的,如果多站点模式其中一个站点的重要性远高于其他站点,我觉得还是不要搞多站点模式为好,不然如果其中一个不重要的站点被攻击出了问题,还要连累重要的站点一起倒霉。

另外,我觉得,如果要使用多站点模式,最好从一开始就规划好,就从一个全新的站点开始设置,一来子目录模式还是很实用的,不用折腾子域名,如果部署群站并且有详细的规划,子目录模式会非常适合;二来,运行了一个月就只能设置子域名模式了,而如果已经运行了这么久,估计插件这些都已经配置磨合好了,再来搞基于子域名的多站点模式,就插件这里就会很折腾,有点事倍功半的感觉。

使用子域名模式,如果能使用二级域名作为主域名是最好的,比如我这里就是”tangwudi.com”,这样在后续添加其他站点的时候,解析会比较容易添加,按照我文章的”test.tangwudi.com”,如果要添加子域的话,就是”site1.test.tangwudi.com”,这样会比较难看,当然,这个可以使用cname来解决,比如”abc.tangwudi.com cname site1.test.tangwudi.com”,这样访问也没问题,只是配置反向代理的时候访问host做好正确的设置即可。

综上所述,默认的单一站点模式和多站点模式各有各的好处,最好在建站的时候就做好规划,选择其中最适合自己的建站方式,一旦站点运行起来之后,最好就不要再折腾了。

博客内容均系原创,转载请注明出处!更多博客文章,可以移步至网站地图了解。博客的RSS地址为:https://blog.tangwudi.com/feed,欢迎订阅;如有需要,可以加入Telegram群一起讨论问题。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
       

本站已禁用鼠标右键和各种快捷键,代码块内容可以直接在右上角点击复制按钮进行复制

zh_CN