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