我所擁有的:
我使用 Flask 制作了一個簡單的 Web 應用程式,它在本地主機上運行良好。
我想實作的目標:
我想部署它,以便在互聯網上可見。
因為 Flask 說生產服務器不應該用于部署我安裝了 gunicorn。
我設法讓它在本地主機上作業(正在運行gunicorn server:app)。
然后我嘗試使用該-b 0.0.0.0:5000選項將其公開。它說它正在運行192.168....:5000現在我可以使用該 IP 地址從我的計算機和連接到同一 wifi 的手機訪問該網站。但是當我沒有使用這個 wifi 時,我無法連接到該網站。
當我搜索這個時,我發現192.168....IP地址范圍是保留給本地網路的,不能從其他任何地方訪問。
我需要如何運行腳本才能從任何地方訪問它?我需要修改防火墻設定嗎?也許有更好的方法可以使用不同的框架在本地機器上部署這樣的應用程式?
只是一些額外的資訊:
- 蟒蛇版本:3.9
- 我正在使用 venv(并在其中安裝了 Flask 和 gunicorn)
- 作業系統:macos 11.6.1(如果更容易的話,我可以在 Ubuntu 機器上運行它)
uj5u.com熱心網友回復:
這個問題與 Python 或 Gunicorn 無關,但與網路無關(所以也許 StackOverflow 不是問的正確地方,但其他社區如ServerFault)
目前,您的應用程式已經在您的機器上的定義埠中公開,因此下一步是將所有進入路由器的流量轉發到那里。
為此,您必須將路由器的防火墻配置為通過所需埠接受傳入流量,并最終將來自該埠的流量轉發到該埠中的您的機器5000。
此外,如果您已經配置了所有內容,則只有在您的 ISP 為您提供單個 IPv4 時它才會起作用,目前不會再發生這種情況,但您實際上正在與更多人共享它。其他選項是您配置 IPv6 傳入流量。
正如您所看到的,這不是一項簡單的任務,如果沒有適當的照顧,也不應該這樣做,因為您實際上會向可能的攻擊者開放您的網路。
因此,為了最大限度地為您簡化它,因為您已經擁有 Gunicorn,我建議您使用其他用戶作為Heroku或Netlify公開的任何資源,這些資源對于單個應用程式都是免費的,并且無需需要大量的網路知識。
uj5u.com熱心網友回復:
您需要執行以下步驟:
閱讀并了解很多有關 Web 服務器安全性的知識,然后再閱讀一些,它充滿風險
在本地網路上找到 Mac 的 IP 地址并確保它是固定的,即在 Mac 上設定為靜態(在“系統偏好設定->網路”下)或保留在路由器的 DHCP 表中(通過將 Mac 的 MAC 地址放在其分配中表),以便它在啟動時始終在您的內部網路上獲得相同的本地地址
登錄您的路由器并設定“埠轉發”以將埠 5000(或某個其他埠)的外部請求(來自 Internet)轉發到 Mac 的固定 IP 地址和 Gunicorn 服務的埠 5000
登錄您的路由器并找到您的 WAN IP 地址,或訪問http://whatsmyip.com獲取您需要輸入瀏覽器的地址,或者您的朋友需要輸入他們的瀏覽器才能看到您閃亮的新網站
就目前而言,這將一直有效,直到您的路由器下次重新啟動時,您的 ISP 可能會為其分配一個新的 IP 地址。如果您想要永久使用,您需要 1) 向您的 ISP 詢問靜態 IP 地址,或 2) 訂閱 DDNS 服務(例如 noip.com 或 dyndns.com)或 3) 每次告訴您的朋友您的新 IP 地址你重啟路由器
uj5u.com熱心網友回復:
我對 gunicorn 一無所知。但是我在需要部署Flask應用程式時使用的是pythonanywhere。他們有很棒的完全免費的托管服務。它的部署速度非常快,不需要您的計算機資源,而且非常棒。此外,您還必須為您的計算機轉發埠 5000,以使不在同一網路中的其他設備能夠訪問您的計算機/flask 應用程式。這伴隨著安全問題。但是,在使用 pythonanywhere 時,您不需要任何這些。
還有其他類似的出色托管服務。這只是我知道并使用過的唯一一個,但如果你不喜歡那個,你肯定會找到其他的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361291.html
上一篇:定期重啟FlaskApp以獲取最新資料并重繪多個Python變數?
下一篇:我在哪里可以在Swagger.json中為我的SwaggerUI檔案將validatorURL標志設定為NULL?
