本地部署 Misago Docker + 配置 HTTPS 筆記


最近答應幫朋友做個論壇網站,想借此機會撿起 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.0wget -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 的說明,修改 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 --detach

問題解決,終於可以愉快地進行本地訪問了。

至此,本地部署 Misago Docker + 配置 HTTPS 全部完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM