Table
前言
前面兩集我們介紹了 Flask run 之後,會發生了什麼事?Flask 自帶的 Web Server 只適合測試環境使用,那正式環境怎麼辦?什麼是 WSGI、uWSGI 和 Nginx?有興趣的朋友可以參考之前的文章:
那這集要來介紹 uWSGI 還有哪些好用的常用配置參數!
如果還沒安裝 uWSGI 的朋友,可以透過以下指令
1 |
$ pip install uwsgi |
ㄧ. 常用 uWSGI 配置介紹
uWSGI 支援的配置格式很多,像是 yaml、JSON、XML 或是 ini,而本篇將以 ini 格式為主,這份是我常用的 uwsgi 配置,使用 ini 的格式:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[uwsgi] wsgi-file = main.py callable = app socket = :8001 chmod-socket = 660 master = true processes = 4 threads = 2 vacuum = true die-on-term = true |
二. uWSGI 配置參數解釋
這份是參考 uWSGI 2.0文件中介紹的 uwsgi 配置參數詳細說明:
Things to know (best practices and “issues”) READ IT !!! — uWSGI 2.0 documentation
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[uwsgi] wsgi-file = main.py # 主要運行的 py 檔案 callable = app # flask 實例化後的命名 chdir = /opt/app # chdir 指定目錄位置 env = XXX=XXX # 新增環境變數 # 選擇協議方式,三選一即可 http = 0.0.0.0:5000 # 此方法外部也可以使用 5000 ports 連線 http-socekt = 0.0.0.0:5001 socket = :3031 chmod-socket = 660 pidfile = xxx # pid 文件位置 venv = xxx # 虛擬環境位置 logto = /var/log/www.log workers = 4 # 一般為 CPU 數 * 2 threads = 2 enable-threads = true max-requests = 100000 master = true # 開啟一個主進程,管理其他進程 buffer-size = 65535 # header 的 buffer 大小,默認是 4096 字節,最大值是 65535 字節 vacuum = true # 當服務器退出的時候自動清理環境,刪除unix socket文件和pid文件 # 建議不要以 root 權限運行 uWSGI,這邊設定為 www-data uid=www-data gid=www-data # 靜態文件 check-static = /var/static |
基本上 uWSGI 的配置參數講解就到這邊告一個段落囉!有任何問題可以在以下留言~
學會 uWSGI 的配置後,接下來就是實戰啦!
Flask 部署上個人是都使用 Docker 因為真的很方便!但新手建議可以先從不使用 Docker 部署開始學習,然後再使用 Docker 部署,這樣使用 Docker 時,在 debug 時就比較不會沒有頭緒:
- (不使用 Docker) 實作 GCP 部署 Flask + Nginx + uWSGI
- (使用 Docker ) 實作 Docker-compose (Flask+Nginx+PostgreSQL)
其他相關 uWSGI 文章推薦
關於 Flask 教學的延伸閱讀:
▍關於 Flask 教學系列目錄:
▍或許你會有興趣的,Flask 相關實作: