通过docker搭建WordPress体会

用docker搭建一个WordPress试试吧,有个博客来记录一下总是好的。

从今天开始换成Hexo了,又换成了Hugo

基础配置

服务器:阿里云学生特惠轻量应用服务器

系统:CentOS 7.3

docker安装

安装目的

如果直接在服务器上布置,为了运行WordPress,首先需要安装MySQL,Apache2(即httpd)(或者是nginx)、PHP以及最新版本的WordPress,来组成常用的LAMP(Linux+Apache+MySQL+PHP)框架或者是LNMP(Linux+nginx+MySQL+PHP)框架。

这个过程一般来说是麻烦且难以移植的

但是如果通过docker的话,环境配置部分就得到了简化,并且不用担心在准备环境的时候,要去调整原来的PHP版本,去修改MySQL的版本,还要专门折腾Apache或者NGINX。

安装步骤

切换到root用户,通过yum命令来安装docker,在这之前先升级所有包同时也升级软件和系统内核

sudo su root
yum update -y
yum install docker -y

后续的步骤都要求你对服务器有绝对的控制权,也就是说后续没有特别说明,我们都是以root用户运行命令

默认情况下,只有root用户和docker组的用户才能访问Docker引擎的Unix socket。当然直接用root权限使用docker太过危险(删库跑路),建议新建一个docker用户,然后加入docker用户组

groupadd docker
useradd -g docker docker

通过阿里云的容器镜像服务的镜像加速器可以加快一些些docker从仓库中下载镜像的速度

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://x2sqfp3l.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

MySQL安装

安装目的

由于WordPress需要MySQL来处理数据,所以需要提前安装好MySQL然后将后续安装的WordPress连接到MySQL上

安装步骤

从docker镜像仓库中获取MySQL的最新版本的镜像

docker pull mysql

通过docker的run指令启动一个MySQL容器

docker run --name <ContainerName> -e MYSQL_ROOT_PASSWORD=<Password> -d mysql

此处以及下处的各种参数的意义参见 https://www.jianshu.com/p/2faca4e1f6fb

安装完成后,进入MySQL,新建数据库wordpress,查看是否创建成功

docker exec -it mysqlname bash
# 进入mysql的容器
mysql -uroot -p
# 此处输入密码
CREATE DATABASE wordpress;
SHOW DATABASES;

WordPress安装

同上

docker pull wordpress
docker run --name yourcontainername -e WORDPRESS_DB_HOST=mysql -e WORDPRESS_DB_PASSWORD=yourpassword --link mysqlname:mysql -p 80:80 -d wordpress

遇到问题及解决办法

遇到问题

一切按照网上的安排后打开host-ip却发现

 Error establishing a database connection 

解决办法

通过以下语句进入到容器内部,查看wp-config.php文件是否正确

docker exec -it <WordPressName> bash
cat wp-config.php

进入后发现各种参数都是对的上的,比如DB_NAME之类的,都是正确的

后修改wp-config.php中的DEBUG参数,使之显示报错提示,通过报错提示

The server requested authentication method unknown to the client

搜索得到结果,原因是新版本的MySQL账号密码解锁机制不一致导致的问题

在MySQL中通过alter user命令修改解锁机制就行

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';

参考资料

docker.hub关于WordPress以及MySQL的安装

https://hub.docker.com/_/wordpress/

https://hub.docker.com/_/mysql/

https://www.jianshu.com/p/2faca4e1f6fb

https://blog.csdn.net/guoguicheng1314/article/details/80526111