基于docker搭建自己的个人网站

2019-12-10  本文已影响0人  牧瀬紅莉栖_

准备工作

本文主要讲解如何在自己的云服务器上使用docker搭建自己的网站

关于WordPress

WordPress是一个非常著名的PHP编写的博客平台,发展到目前为止已经形成了一个庞大的网站平台系统。在WP上有规模庞大的插件和主题,可以帮助我们快速建立一个博客甚至网站。

在Windows上可以非常方便的安装WordPress,因为IIS上集成了WordPress的一键安装包。而在Linux上安装WordPress就比较复杂了,我们需要配置PHP环境、Apache或者Nginx服务器、MySQL数据库以及各种权限和访问问题。所以在Linux上最好的办法就是使用Docker来安装WordPress。

安装Docker

如何安装

安装WordPress

有了Docker,安装WordPress就很简单了,直接一条命令搞定。

docker pull wordpress:latest

安装MySQL

WordPress需要使用MySQL数据库,这里也有两种方式,第一种是安装本地MySQL,第二种就是在Docker中安装MySQL镜像。如果要在Docker中安装MySQL也非常简单,同样一条命令搞定。

docker pull mysql:latest

如果从Docker中安装MySQL,还需要额外的配置来启动MySQL,具体文档参考这里。启动MySQL使用下面的命令。

docker run --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

name参数指定要启动的实例名称,MYSQL_ROOT_PASSWORD指定ROOT密码。tag参数是MySQL的版本号,可以是5.75.68.0

配置WordPress

安装好数据库之后,就可以启动WordPress了。详细的文档参考这里。如果使用Docker中安装的MySQL实例,使用下面的命令。

docker run --name wordpress --link mysql:mysql -p 8080:80 -d wordpress

name参数指定要启动的WordPress实例名称,link参数指定要使用的Docker MySQL实例名称,p参数将Docker内部的80端口映射到本地的8080端口上。

如果使用外部的MySQL数据库,则输入下面的命令。

docker run --name wordpress -e WORDPRESS_DB_HOST=10.1.2.3:3306 \
    -e WORDPRESS_DB_USER=... -e WORDPRESS_DB_PASSWORD=... -d wordpress

WORDPRESS_DB_HOST参数是MySQL的数据库端口号,WORDPRESS_DB_USER是要数据库用户名,WORDPRESS_DB_PASSWORD是数据库密码。这里的WORDPRESS_DB_HOST参数不能填写localhost,因为这样会重定向到WordPress镜像内部的localhost,而这个镜像中实际上没有安装MySQL。所以这里需要填写本机IP地址,才能正确访问到Docker外部的本机的数据库。

因此需要注意,如果使用外部数据库的话,数据库的用户需要具有外部IP的权限,因为这次不是通过本机回环地址访问。默认情况下MySQL安装时候的ROOT用户只允许本地登录,所以可能需要配置允许用户远程登录。

然后打开浏览器,输入localhost:8080(端口号是命令中设置的),然后就可以看到WordPress了。按照提示输入用户名等信息,然后安装WordPress。等到它提示安装完成,那么WordPress的安装就算大功告成了。

最后稍加配置,再添加诸如内网映射等功能之后,站点就可以对外访问了。

你可能会遇到的问题

按照上面的步骤,wordpress已经搭建了不过笔者访问的时候遇到了一个大坑:

Error establishing a database connection

数据库连接失败了,到底哪除了问题
最后找了很久资料发现原因是认证方法错误,mysql8.0以后默认的认证方式改了,所以才会有这样的错误

解决方法

#进入mysql容器
docker exec -it mysql /bin/bash
#登陆数据库
mysql -u root -p
use mysql;
#开启root远程访问权限
grant all on *.* to 'root'@'%';
#修改加密规则
alter user 'root'@'localhost' identified by '123456' password expire never;
#更新密码
alter user 'root'@'%' identified with mysql_native_password by '123456';
#刷新权限
flush privileges;

另外你需要注意wordpress镜像里的config文件里配置的数据库名和账号密码必须对应。
可以使用下面的命令进去查看

docker exec -it wordpress /bin/bash
上一篇下一篇

猜你喜欢

热点阅读