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