Caddy + gunicorn + django

前言

目前這個部落格是放在東京 Linode 主機上,最近遇到的問題是 nginx 每天都會自動死掉,每天都得要 ssh 進去 restart nginx service,實在有夠麻煩。再加上我有用 Let’s Encrypt,每 90 天都要更新憑證。乾脆一不做二不休的把 web server 換成會自動更新憑證的 caddy,以下這篇記錄轉換的過程。

安裝 caddy

以下參考這份文件

安裝 caddy 很簡單,直接在 shell 下執行:

使用 personal license 來安裝 caddy

然後建立必要的目錄

建立空白的 caddy 設定檔

建立給 caddy 使用的 ssl 目錄

安裝 Caddy 系統服務

從官方 repository 下載 caddy.service

讓 systemd 發現新下載的 caddy.service

Enable caddy.service

(Optional) 檢查 Caddy 是否有正確運作

建立 /var/www/index.html

編輯 /etc/caddy/Caddyfile 設定檔

然後啟動 Caddy server

設定 gunicorn

之前用 nginx 當作 web server 的時候,是搭配 uwsgi 來把 request 傳到 django 內。而 Caddy 雖然有 plugin 可以支援 uwsgi,但是需要自己編 Caddy,所以在這裡我改用 gunicorn。

安裝 gunicorn 和 runit

設定 runit,${project_name} 為您的專案名稱

編輯 /etc/sv/${project_name}/run

再來設定 django 專案,在專案根目錄中新增 gunicorn.conf.py,內容如下

再來讓 runit 把 gunicorn 跑起來

如果到這邊都有做對,當你建立好 symbolic link 後執行 ps -aux | grep gunicorn,就會看到 gunicorn 的 process 跑起來了

設定 Caddy

最後設定 Caddy 把 request 丟給 gunicorn 處理,編輯 /etc/caddy/Caddyfile,加上

然後重新啟動 Caddy

就可以用瀏覽器打開 https://my_django_project.fykuan.tw 試試看了

Comments

comments

發表迴響