Docker安装WordPress,nginx-proxy-manager+mysql5.7(超详细)

众所周知,nginx-proxy-manager非常好用,可以可视化nginx,方便一键反向代理等,而使用Docker部署WordPress会遇到几个小坑,导致各种问题不断。

本文主要解决反向代理CSS/JS丢失,和后台无限重定向的问题,索性从头到尾重新梳理一遍,供大家参考。

一、系统准备

1.1 更新包目录

sudo apt update&&sudo apt-get update

1.2 安装curl

sudo apt install curl

二、Docker安装及镜像准备

2.1 使用官方一键安装脚本

curl -fsSL https://get.docker.com | bash -s docker

2.2 检查是否安装成功

docker -v

三、拉取镜像

3.1 需要MySQL、WordPress、nginx-proxy-manager这三个镜像。

MySQL可以用Mariadb替代,当然web服务器也可以用apache、caddy等替代。

拉取MySQL5.7镜像
docker pull mysql:5.7

拉取WordPress镜像
docker pull wordpress

拉取NginxProxyManager镜像
docker pull jc21/nginx-proxy-manager

3.2 查看所拉取的镜像

docker images

四、开始安装

4.1 创建网络

创建一个名为web的虚拟网络

docker network create web

4.2 运行MySQL镜像

首先启动MySQL容器 并加入到web这个网络

自定义密码MYSQL_ROOT_PASSWORD设置为Npm888999

docker run --name mysql57 --net web -e MYSQL_ROOT_PASSWORD=Npm888999 -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_unicode_ci

然后进入容器 创建数据库及添加用户

#进入mysql57容器内部
docker exec -it mysql57 bash

#登录数据库
mysql -uroot -p #输入密码Npm888999

#创建数据库wp
mysql> create database wp;

#创建用户wp 并设置密码为123456
mtsql> create user wp identified by "Npm888999";

#给用户添加权限
mysql> grant all on wp.* to wp;

#退出mysql57
exit

#最后退出容器
exit

4.3 运行WordPress镜像

创建一个目录用于存放wordpress文件

cd /home
mkdir blog

进入目录 运行wordpress镜像

cd blog
docker run -dit --net web -v `pwd`:/var/www/html --name wordpress wordpress

4.4 运行NginxProxyManager镜像

创建一个目录用于存放NginxProxyManager配置文件

cd /home
mkdir nginx_proxy

进入目录 运行nginx-proxy-manager镜像

cd nginx_proxy

#管理页面端口映射为60066 可以自定义,80和443端口不建议更改
docker run -dit -p 80:80 -p 60066:81 -p 443:443 --net web --name nginx_proxy -v $PWD/data:/data -v $PWD/letsencrypt:/etc/letsencrypt --restart=unless-stopped jc21/nginx-proxy-manager

至此,基础需要的镜像就启动完成了,检查一下三个镜像是否都在运行。

docker ps

以上容器都启动完成了

五、wordpress配置

5.1 提前将域名解析到服务器IP

5.2 打开nginx-proxy-manager的管理界面登录http://IP:60066.

默认登录信息:

Email:    admin@example.com
Password: changeme

5.3 进入后先修改登录信息

再到SSL Certificates页面申请SSL证书

填写你的域名

同意条款 点击保存

申请完成后回到Hosts > Proxy Hosts

新增一个代理填好你的域名信息 以及代理转发的地址和端口

然后点击窗口上方的SSL 选择刚才申请的证书 并开启强制使用SSL HTTP2支持根据自己需求选择 最后保存

保存后打开域名应该就能看到wordpress站点安装页面了 但是这里就出现了CSS/JS丢失的情况

暂时先不管 直接安装即可 注意数据库信息填写的时候不要填错了

填写站点信息 完成安装

问题解决

最后解决一下css/js丢失的问题 进入/home/blog目录 编辑wp-config.php这个文件 将以下代码添加到文件偏上处,<?php 下

/**强制使用SSL/HTTPS访问后台以及登录**/
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);

/**请求标头告知**/
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
  && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
  $_SERVER['HTTPS'] = 'on';
}

最后保存 刷新网页 css/js不再丢失,大功告成!

评论

此博客中的热门博文

群晖:EMBY解锁Premiere的方法,emby server破解方法

超实用五、六类网线水晶头接法,口诀记好

全网最详细nginx+php+mysql保姆级typecho博客搭建教程