经过一番研究,终于把这个 WordPress 部署上了~
本来想写一个部署的记录的,但是作为一个懒人,我最终采用的是 Docker 部署的方案,而且 MariaDB 数据库也是直接在 Docker 中跑的。虽然显得很不专业,但确实是一个方便快捷的方案。
当然了,这个过程也踩了几个坑,简单记录一下。
数据库连接
默认的 WordPress Docker 是基于 Debian 的,没有 MySQL,只能安装 MariaDB 数据库的,这到不是什么大问题。
问题是安装并按官方手册创建数据库、注册用户之后,这个 WordPress 死活连接不上。
研究了半天,合着要写 127.0.0.1,不能写 localhost。可能是因为 localhost 被解析成 ipv6 了?不懂 hhh
HTTPS+Nginx 的困扰
由于是在 Docker 中跑的 WordPress,为了加上 HTTPS 免得浏览器提示不安全,我在服务器最前端套了一个 Nginx(其实本来所有对外的 HTTP 服务也本来就有一层 Nginx,也算不上新增的)。然后这个 WordPress 就和 Nginx 打起来了……情况如下
- Nginx 代理的时候将 443 转发到 127.0.0.1:4000,合理。
- WordPress 为了内部能正常重定向至子页面,需要设置 URL 为 https://blog.pythame.com/,合理。
- WordPress 会自动检测 URL 为 HTTPS,如果访问来自 HTTP 协议则会重定向,合理。
然后这几个叠加起来的效果就是:首页能正常访问,但只要点任何一个按钮,都会因为多次重定向被浏览器拦截。看 Network 发现是 https://…/ 对自己的循环重定向。就很魔幻。
尝试了给 Nginx 加代理的头,但是问题仍然存在。
于是最后的解决方案非常暴力,强行修改了 WordPress 对 HTTPS 检测的相关 php 代码,不论来自什么地方的访问都直接被认为是 HTTPS 就行了。反正 Docker 开的端口也是 localhost,只有通过 Nginx 才能访问到,也无所谓。
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。