一、实践目标
在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访问的。