WordPress迁移至本地Docker并开启全站HTTPS

笔者最近将运行在腾讯云的Wordpress迁移至本地,然后使用阿里云的服务器作为公网跳板来访问本地的Docker版Wordpress,方便笔者这种穷鬼到处搬家。

但是在重新部署https时遇到了不小的阻力,一个是混合载入,https与http内容共同载入。一个是修复这个问题后遇到的,后台页面全部没有权限禁止载入。

现在我将为此问题,以及如何迁移至本地部署等做一个完整的回顾。

备份到本地

首先选择一种方式备份到本地,这个方式有很多,笔者在之前介绍了一种快速备份整个服务器至本地的方法,故本文不再使用虚拟机迁移的方式。

WordPress是一个社区性质的东西所以有许多插件可以使用,故本文介绍一个插件:Updraft

该插件可以快速的备份整个wordpress

当你备份完成,即可在小水管下将整个网站以较小的大小保存下来。

备份到本地后,则完成了备份工作。

迁移到Docker

运行

docker run -it --name wordpress -p 8888:80 -v /data:/var/www/html -d wordpress

部署完成后,此时在浏览器访问http://localhost:8888/wp-admin/setup-config.php进行安装,这时的ip地址是宿主机的IP

笔者使用远程的Mysql数据库,故直接进行数据库配置,没有数据库的同学需要自行部署数据库服务。

整个部署过程都可以随便输入,除了数据库,数据库需要保证连接,如果你之前已经修改过表前缀,建议表前缀更换为一个好记的前缀。

当部署完毕,则安装Updraft插件,将下载的文件一股脑丢进/wp-content/plugins/updraftplus,此时该目录如果你是复制粘贴的应该是/data/wp-content/plugins/updraftplus

在后台直接选择全部恢复,等待进度结束,就会要求你用以前的用户名登录了。

如果你从来没修改过表前缀,创建时也没修改过则无需再管。否则你需要连接数据库,将你建立时的表全部删除,否则会产生蜜汁影响。

公网远端代理

你可以使用任何方法连接至远端。Frp、tailscale都可以

笔者使用frp,笔者不对frp的安装做出解释,需求者需要自己去找教程。

frpc需要配置为tcp模式,即远端直接传递数据包到本地,在frps上看来,自己的65534端口就出现了一个web服务。

此时就完成了穿透部署。当访问公网ip:65534时,就会利用小水管把家里的服务器数据送出去。这样就完成了算力在本地,服务在公网。

全站https

接下来是大问题,如何才能以https的方式访问。笔者选择过nginx,但是直接使用nginx相对复杂,而且需要部署certbot实现自动更换证书,相对来说太麻烦了。

又因为笔者的其它服务受到了脚本小子的攻击。故笔者选择使用雷池WAF。

使用官方一件脚本部署

bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"

按照提示进入web后台,添加域名申请ssl证书

接下来添加应用,开启https访问

以笔者的设置,可以尝试https是否能正常访问。如果可以访问,则会发现后台出现了问题,js,css全部失效,提示混合载入。

修复混合载入,无法登录

首先,将url修改为https

修改PHP代码

注意:修改之前请备份原始文件,方便回退。

1. 打开网站根目录文件\wp-includes\functions.php,找到代码require( ABSPATH . WPINC . ‘/option.php’ );大概在第8行。

在下方添加以下两行代码:

add_filter('script_loader_src', 'agnostic_script_loader_src', 20,2); function agnostic_script_loader_src($src, $handle) { returnpreg_replace('/^(http|https):/', '', $src); }add_filter('style_loader_src', 'agnostic_style_loader_src', 20,2); function agnostic_style_loader_src($src, $handle) { returnpreg_replace('/^(http|https):/', '', $src); }

此时你就会发现,正常了,但是后台登录仍然有问题,表现为登录后提示“抱歉,您不能访问此页面”

修复抱歉,“您不能访问此页面”

登录WordPress管理后台出现“抱歉,您不能访问此页面” 或者 “将您重定向的次数过多”的问题时,可以使用本文提供方法快速解决。

解决方法

在你的网站根目录下,找到 wp-config.php 文件,并加入以下代码,即可解决“将您重定向的次数过多”问题:

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

关键说明:以上代码添加时,必须添加在if ( !defined('ABSPATH') ) 代码之前才能生效!如下图所示位置:

否则,在登录WordPress网站后台时,可能会出现“抱歉,您不能访问此页面”的错误提示,导致还是无法登录网站后台。

灵感来自

https://blog.csdn.net/sdexcel/article/details/140455654

https://blog.csdn.net/bandaoyu/article/details/115410481

侵权联系删除