今天是元旦,首先要祝自己、祝大家元旦快乐?。
好久没有写东西了,新年新开始,从今天开始写点东西吧。
昨天刚把 Wordpress 装上了,记录一些安装过程。毕竟不是像原来那样常规的安装方式。
安装方式
通过 docker 安装,docker-compose 放在 gist 上,其中包含一些其他 services,请自行忽略
遇到的问题
1.通过 nginx 转发 wordpress
因为做了多个 services,所以不能直接将宿主机的 80 端口或 443 端给 wordpress,一开始我不知道怎么弄,后来发现可以直接转到通过反向代理转到http://wordpress:80
2.SSL 证书错误
因为 1 中使用 http,80 端口访问的,也就是从 nginx container 到 wordpress container 中访问是通过 HTTP 访问的,由于 wordpress container 中没有配置 SSL 证书,目前也只能这样了。正因为这样,wordpress 中检测不到 https 访问,所以资源链接一律返回 HTTP,到浏览器一片红。
找到一个解决办法。
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https')
$_SERVER['HTTPS'] = '1';
if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
我的配置,简单粗暴,不带判断
$_SERVER['HTTPS'] = '1';
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
参考链接:https://github.com/docker-library/wordpress/issues/251#issuecomment-345687824
3.数据库保存
目前将数据保存在 mysql container 中,对 mysql image 还没有深入研究,毕竟经常会 docker-compose up -d --force-recreate
,数据保存在 container,多危险。这是一个 //TODO
的事情。
2018.01.10 update:
2018.03.24 update:
4.客户端 IP 获取错误
由于请求是通过 nginx 转发了一次,Wordpress 获取到的客户端 IP 是 docker 传过去的形似 172.18.0.x
的 IP 地址,在评论中显示作者 IP 那就是 172.18.0.x
了,要想拿到真实的客户端 IP,可以这样做:
在 nginx 配置文件中添加
proxy_set_header X-Real-IP $remote_addr;
在 Wordpress 中 wp-config.php
添加
if (isset($_SERVER['HTTP_X_REAL_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
}
更新记录
- 2018-01-01 12:48:54 首次发布
本文链接 https://www.yidiankuaile.com/post/install-wordpress-with-docker