Flask部署
開發服務器上的Flask應用程序只能在設置了開發環境的計算機上訪問。 這是一種默認行爲,因爲在調試模式下,用戶可以在計算機上執行任意代碼。
如果禁用了調試,則通過將主機名設置爲:0.0.0.0
,可以使網絡上的用戶可以使用本地計算機上的開發服務器。
app.run(host = ’0.0.0.0’)
這樣,您的操作系統會偵聽所有公共IP,也就是說,所有請求都會被處理。
部署
要從開發環境切換到完整的生產環境,應用程序需要部署在真正的Web服務器上。 根據您的具體情況,可以使用不同的選項來部署Flask Web應用程序。
對於小型應用程序,可以考慮將其部署在以下任何託管平臺上,所有這些平臺都提供針對小型應用程序的免費計劃。
- Heroku
- dotcloud
- webfaction
Flask應用程序可以部署在這些雲平臺上。 另外,可以在Google雲平臺上部署Flask應用程序。 Localtunnel服務允許您在本地主機上共享您的應用程序,而不會混淆DNS和防火牆設置。
如果您傾向於使用專用Web服務器來代替上述共享平臺,則可以使用以下選項。
mod_wsgi
mod_wsgi
是一個Apache模塊,它提供了一個用於在Apache服務器上託管基於Python的Web應用程序的WSGI兼容接口。
安裝mod_wsgi
要從PyPi直接安裝正式版本,可以運行 -
pip install mod_wsgi
要驗證安裝是否成功,使用start-server
命令運行mod_wsgi-express
腳本 -
mod_wsgi-express start-server
它將在端口:8000上啓動Apache/mod_wsgi。然後,可以通過將瀏覽器指向 -
http://localhost:8000/
創建.wsgi文件
應該有一個yourapplication.wsgi 文件。 該文件包含代碼mod_wsgi
,該代碼在啓動時執行以獲取應用程序對象。 對於大多數應用程序,以下文件應該足夠 -
from yourapplication import app as application
確保yourapplication
和所有正在使用的庫位於python加載路徑上。
配置Apache
需要告訴mod_wsgi
,應用程序的位置。參考以下配置 -
<VirtualHost *>
ServerName example.com
WSGIScriptAlias / C:\yourdir\yourapp.wsgi
<Directory C:\yourdir>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
獨立的WSGI容器
有許多以Python編寫的流行服務器,其中包含WSGI應用程序並提供HTTP服務。
- Gunicorn
- Tornado
- Gevent
- Twisted Web