Wordpress 建站笔记
参考教程: https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose
Step 1 设置反代
这一步主要是对nginx进行设置。
反代是什么?为什么要反代?一般而言例如VPN这样的服务就是正向代理,代理客户端访问各个网站。而反向代理是服务器的代理。
listen
:告诉nginx要监听哪个端口。这步暂时只用了80端口,也就是HTTP用的。之后SSL下来了以后加上443,也就是HTTPS用的。
server_name
:域名,这里似乎其实只需要写blog.konata.co就够了?前后只是优先级?
index
:网页的index文件,按照优先级排序
root
:这个是根目录地址,之后会在dockerfile里mount到这个目录下。
Step 2 设置环境变量
这一步主要是把密码用户名加到环境变量里,然后由于涉及敏感信息,所以额外添加了.gitignore和.dockerignore
Step 3 设置docker-compose
Docker-compose和dockerfile是两个东西,各自用处见:
https://www.runoob.com/docker/docker-dockerfile.html
https://www.runoob.com/docker/docker-compose.html
Docker-compose是用来配置容器内服务的。这里依次配置了db(数据库),wordpress,webserver(nginx反代)和certbot(https证书)。
在services中,每个服务器的image指定了是从哪个镜像启动服务。这里用的都是公开的现成的镜像,所以可以直接启动。
这一步wordpress用的镜像是image: wordpress:5.1.1-fpm-alpine,版本比较旧,可以替换成这里 更新的tag,如5.9.0-fpm-alpine
,也许就可以解决php版本过老的问题(待确认)。
Step 4 获取SSL证书
要用https而不是http,需要获取SSL证书。在上一步已经配置好了certbot,这一步首先启动docker-compose。
docker-compose up
是启动,加上-d
是在后台运行。
docker-compose ps
可以检查服务运行情况。
docker-compose exec webserver ls -la /etc/letsencrypt/live
这句话指的是启动webserver的docker然后查看域名是否设置成功。从名字上看似乎用的是Let’s Encrypt的服务。如果设置成功,就可以进入docker-compose.yml
把--staging
这个调试用的参数改成--force-renewal
,重新申请一个正式的证书。
docker-compose up --force-recreate --no-deps certbot
使最新的docker-compose.yml生效。
Step 5 修改nginx
因为已经申请到了SSL证书,现在要返回修改nginx
。
先把webserver
服务停了,然后下载certbot
的nginx
配置文件options-ssl-nginx.conf
,删除旧的nginx.conf
改成新的nginx.conf
,再修改docker-compose.yml
里webserver
的配置,把443
端口添加上去。
docker-compose up --force-recreate --no-deps webserver
使最新的docker-compose.yml生效。
Step 6 前端安装
到这步为止,nginx
反代,SSL证书,wordpress
,全部都安装好并且在后台运行了。这时候访问域名,就会出现wordpress
的安装界面。全程网页操作,简单易懂。
Step 7 定期更新证书
因为证书90天内有效,所以要写一个脚本每隔一段时间(小于90天)就重新申请一次证书。脚本内容大概是renew certbot
并删除多余镜像,之后把脚本的权限设为可执行。调用crontab
来定期运行脚本。
*/5 * * * *
是每五分钟运行一次,为了快速出测试结果。
\>> /var/log/cron.log 2>&1
是把输出写到log文件里,方便查看。
确认没有问题以后,改为0 12 * * *
,是每12小时更新一次,需要更新得这么频繁吗?
同时把调试用的参数--dry-run
从脚本里删掉。