Docker安装配置WordPress
文章目录
[隐藏]
- 安装MariaDB
- 安装WordPress
- 使用nginx反向代理
本站使用WordPress搭建,之前一直使用Linode $10美刀一个月的服务,机房选择在JP,但是感觉速度不行,在国内链接的响应速度基本都在200-300ms之间,前段时间发现搬瓦工的速度还可以,而且按年付费价格比Linode便宜,所以用了好一段时间来折腾网站迁移的工作。
之前在Linode,网站直接搭建在主机上,上面搭建的服务还很多,迁移非常的困难,于是在新站点服务全面使用基于Docker配置,方便以后迁移。
本站迁移中,使用了两个Docker镜像,官方的WordPress和MariaDB镜像。
安装MariaDB
下载安装最新版的MariaDB镜像
docker pull mariadb
创建一个外部目录/docker/mariadb/var/lib/mysql来存放MariaDB数据文件
mkdir -p /docker/mariadb/var/lib/mysql/
创建并运行MariaDB容器,把本地数据目录映射到容器中的/var/lib/mysql目录,并把3306端口映射到主机地址的3306端口,要注意使用-e MYSQL_ROOT_PASSWORD来指定MariaDB root用户初始密码
docker run --name mariadb -p 3306:3306 -v /docker/mariadb/var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=XXXXXXXXXX -d mariadb
登入MariaDB容器环境
docker exec -it mariadb bash mysql -u root -p
创建数据库和数据库维护用户
create database wordpress character set utf8 collate utf8_general_ci; create user wordpress_user identified by 'XXXXXXXXX'; grant all privileges on wordpress.* to wordpress_user; flush privileges;
安装WordPress
下载最新版的WordPress镜像安装
docker pull wordpress
创建并运行Docker容器环境,官方的WordPress镜像是基于Ubuntu+Apache+MySQL的,镜像里面使用的是80端口,因为主机上安装了nginx,代理很多服务,所以把容器里面的80端口映射到主机的8081端口,使用–link mariadb:mysql指定使用的MySQL为已安装的MariaDB容器
docker run --name wordpress -p 8081:80 --link mariadb:mysql -d wordpress
这时候通过浏览器打开地址ip:8081即可按照提示安装WordPress了。
使用nginx反向代理
本机上安装了nginx,配置了https给很多服务使用,所以这里也把WordPress的地址通过用nginx反向代理实现https访问。
在/etc/nginx/conf.d/目录下创建一个新的配置文件
server { listen 80; server_name liangxiaorui.com www.liangxiaorui.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name liangxiaorui.com www.liangxiaorui.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; keepalive_timeout 70; error_log /var/log/nginx/liangxiaorui.com.log error; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:8081; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
这里使用proxy_pass反向代理到容器的8081端口实现https访问。这里需要注意的是,一定要加上
proxy_set_header X-Forwarded-Proto $scheme;
因为外部nginx使用的是https,容器里面的Apache使用的是http,添加这句话就是为了识别用户实际发出的是https协议还是http协议,之前没加,导致一直出现127.0.0.1重定向错误。这也是迁移过程中遇到的一个小问题之一。
配置完成之后,就可以通过https访问站点了
原文出处:liangxiaorui -> https://liangxiaorui.com/2018/04/26/docker-install-wordpress/