docker wordpress nginx letsencrypt

一、实践目标

在centos 7中使用docker-compose+nginx+wordpress搭建一个博客,并开启https访问。

二、准备环境

阿里云上安装了centos7服务一台,安全组中开启80和443端口,安装docker及docker-compose, git。

三、关键步骤

  • git clone git@github.com:BobJackson/wordpress-with-nginx-and-letsencrypt.git
  • 修改 docker-compose.yml中https-portal中的environment的DOMAINS,只需要打开注释# Uncomment when you are ready for production.前面的YOUR_FQDN -> http://web:80,将
    YOUR_FQDN 修改为自己的域名,并注释掉第一个DOMAINS
  • docker-compose up -d

四、后记

使用docker,docker-compose来实际部署一个线上wordpress远比demo要复杂一些,涉及到的知识有阿里云的使用,主要是安全组,还有linux的常见命令,比如上面的命令中我使用的是非root用户来操作的,那么使用docker的时候怎么去掉sudo呢?可以参考的下面3行命令

sudo groupadd docker
sudo gpasswd -a devops docker #devops是当前用户
sudo systemctl start docker

运行了上面命令行之后,可能还需要重新退出一下shell,然后进去就可以直接使用docker,而不用sudo docker了。

上面还说到https,我们可以使用免费的https证书,可以参考https://certbot.eff.org/,看完官网大致可以知道 certbot提供的证书有效期是3个月,但是可以通过定时任务来renew,基本上一套操作就可以提供可靠免费的https证书。

好了其实说了nginx+https证书,Google可以得知docker中的wordpress要想使用nginx+ssl来访问的话还需要一个nginx-proxy.到此,我们的所有的准备工作基本上是完成的。

我可以补充一下,wordpress是需要使用到数据库的,用的最多的是mysql,然后如果docker pull mysql,默认使用的latest,那么经过一番倒腾就可以发现,wordpress是连接不上的,还好我们的例子中mysql不是最新版,不然需要在docker-compose.yml中mysql的image下面添加一行代码
command: ‘–default-authentication-plugin=mysql_native_password’

最后,我们只需要运行一行代码,docker-compose up -d,就可以轻松地起来

写在最后,一定要感谢一下 Douglas Muth ,他帮助我们隐藏了很多复杂性脚本,直接使用简单的一行命令就可以实现一个个人网站,还是开启了https访问的。