当前位置: 移动技术网 > IT编程>脚本编程>Python > 本地部署 Misago Docker + 配置 HTTPS 笔记

本地部署 Misago Docker + 配置 HTTPS 笔记

2019年08月17日  | 移动技术网IT编程  | 我要评论

好医生继续医学教育,wta年终总决赛赛程,是否郭柯宇

最近答应帮朋友做个论坛网站,想借此机会捡起 python

在 github 找了一圈,打算借用以 python+django 开发的 misago 这个论坛系统

由于作者在今年更新的 misago 0.20 版本中,使用 docker 打包整个项目,还需要启用 https,这为我本地开发部署制造了不少问题

经验不足,折腾了一下午,终于在本地部署成功,记录一下过程

新版 misago 有一个新项目 misago docker,也进行了更新

一、安装 docker 和 docker compose

按照文档的安装要求,我首先在本地 vagrant 虚拟机中安装 docker 和 docker compose

虚拟机系统是 ubuntu 16.04

参照依次执行,或编写安装脚本

sudo apt-get update

# docker 的源是 https,所以安装这些软件用于支持 https 的 apt 仓库
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# 添加 docker 的官方 gpg key
curl -fssl https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 设置官方 docker 源
sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

# 安装 docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

接下来安装 docker compose(),也可以换国内源安装(但是我用国内源不能下载…)

注意中间的版本号

sudo curl -l "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

二、安装 misago docker

参照,下载 misago 到目录 misago_docker

git clone https://github.com/rafalp/misago_docker.git --depth=1

进入目录,执行安装脚本 appctl

cd misago_docker
./appctl setup

按照提示填写域名、let's encrypt 邮箱、、时区、邮件设置等

最后初始化默认数据库,等待安装即可

这里需要注意,misago docker 使用 letsencrypt-nginx-proxy-companion 自动创建 let's encrypt 证书,用于 https

由于我是在本地部署,let's encrypt 不能为内网地址创建证书,所以需要使用其他方法

三、本地配置 https

经过大量尝试,最后总结了一套最方便的方法,使用 mkcert 创建本地开发证书

1.在虚拟机安装 mkcert

# 安装依赖 certutil
sudo apt-get update
sudo apt install libnss3-tools

# 下载 mkcert(当前版本 v1.3.0)
wget -o mkcert https://github.com/filosottile/mkcert/releases/download/v1.3.0/mkcert-v1.3.0-linux-amd64

# 设置执行权限
sudo chmod +x mkcert
sudo mv mkcert /usr/local/bin

为本地域创建 ssl 证书

# 安装本地 ca
sudo mkcert -install

# 创建证书
sudo mkcert domain1 domain2 …

2.在宿主机安装 ca

# 查看虚拟机中 ca 位置
mkcert -caroot

复制 rootca.pem 到宿主机,默认安装目录

c:\users\用户名\appdata\local\mkcert

下载 windows 版 mkcert,安装 ca(也可以手动安装啦…)

# 设置 $caroot 目录,或使用默认目录
# 进入 mkcert 程序目录,执行
mkcert.exe -install

3.替换 misago docker 中 nginx-proxy 的默认证书

这一步由于不熟悉 docker 走了好多弯路…建议学习一下 docker 的相关知识

首先观察一下项目中的 docker-compose.yaml,这是 docker compose 的配置文件

对照 letsencrypt-nginx-proxy-companion 的说明,注释掉 nginx-lets-encrypt 容器和对其的依赖

再对照  的说明,修改 nginx-proxy 容器的数据卷挂载

# /vagrant/certs 是我本地的 ssl 证书目录
# 证书和密钥的名称应该修改为 域名.crt 域名.key
volumes:
    # - nginx-certs:/etc/nginx/certs
    # - nginx-html:/usr/share/nginx/html
    - /vagrant/certs:/etc/nginx/certs

修改完后重启项目

四、其他问题

进行到这一步,本以为大功告成

浏览器访问 https://misago.test(我的本地站点域名)已经显示证书有效

但是却报了 500 错误…

又是一番查找,在 nginx-proxy 的 issues 里看到好几个相似问题

最后看到说可能是数据卷挂载问题,需要重建一下容器,才反应过来我之前都是重启,还是对 docker 不熟悉…

于是按照大佬说的,先

docker-compose down

docker-compose up

问题解决,终于可以愉快地进行本地访问了。

至此,本地部署 misago docker + 配置 https 全部完成。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网