无法在 Gunicorn 上部署破折号应用程序
Not able to deploy dash application on Gunicorn
我想在 Gunicorn 上部署一个 dash 应用程序。但我不能这样做。当我执行 gunicorn <module_name>:<variable_name>
时,我没有看到屏幕上出现任何错误
版本:
- 独角兽 (20.0.4)
- 破折号 (1.17.0)
- dash-核心组件 (1.13.0)
- 破折号-html-组件 (1.1.1)
- 破折号渲染器 (1.8.3)
- 破折号-table (4.11.0)
我的 dash 应用程序,文件名:analyzer.py
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import pandas as pd
import flask
<data_frame definitions>
app = dash.Dash()
server = app.server
<app.layout>
<Call backs>
## at the end
if __name__ == '__main__':
app.run_server()
当我使用以下命令时,我在屏幕上没有看到任何错误,但我无法从浏览器访问应用程序。
[user1@myHost]$ gunicorn analyzer:server -b:8000
[2021-04-16 16:57:58 +0200] [8334] [INFO] Starting gunicorn 20.0.4
[2021-04-16 16:57:58 +0200] [8334] [INFO] Listening at: http://0.0.0.0:8000 (8334)
[2021-04-16 16:57:58 +0200] [8334] [INFO] Using worker: sync
[2021-04-16 16:57:58 +0200] [8345] [INFO] Booting worker with pid: 8345
我看到端口正在侦听,但是,我无法在服务器的 public IP 和 0.0.0.0 上打开我的仪表板
端口 8000 处于监听模式
sudo lsof -i -P -n | grep LISTEN
gunicorn 13003 user1 5u IPv4 49878669 0t0 TCP *:8000 (LISTEN)
gunicorn 13015 user1 5u IPv4 49878669 0t0 TCP *:8000 (LISTEN)
你能告诉我哪里错了吗?
当服务器被告知监听 0.0.0.0
时,这意味着“监听所有绑定的 IP 地址”。浏览器可以使用绑定到该服务器的任何 IP 地址来访问它。 127
地址族是保证绑定到每台机器的地址集之一。
这意味着您应该能够浏览到 https://127.0.0.0:8000
以查看网络应用程序。此外,https://127.0.0.1:8000
、https://127.0.1.0:8000
、https://127.666.312.432:8000
等
然而,要求网络浏览器访问 https://0.0.0.0
意味着“我不知道我想连接到哪里”并且总是失败。这包括所有端口,因此尝试浏览到 https://0.0.0.0:8000
总是会失败。
因为我在终端上没有遇到任何错误消息,所以我尝试了 wget
并找到了 200 OK
响应。这清楚地表明我无法通过浏览器获取我的仪表板。
所以我将端口添加到 firewalld
并重新启动 firewalld
。可以通过浏览器访问仪表板。
谢谢大家抽出宝贵时间。
我想在 Gunicorn 上部署一个 dash 应用程序。但我不能这样做。当我执行 gunicorn <module_name>:<variable_name>
版本:
- 独角兽 (20.0.4)
- 破折号 (1.17.0)
- dash-核心组件 (1.13.0)
- 破折号-html-组件 (1.1.1)
- 破折号渲染器 (1.8.3)
- 破折号-table (4.11.0)
我的 dash 应用程序,文件名:analyzer.py
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import pandas as pd
import flask
<data_frame definitions>
app = dash.Dash()
server = app.server
<app.layout>
<Call backs>
## at the end
if __name__ == '__main__':
app.run_server()
当我使用以下命令时,我在屏幕上没有看到任何错误,但我无法从浏览器访问应用程序。
[user1@myHost]$ gunicorn analyzer:server -b:8000
[2021-04-16 16:57:58 +0200] [8334] [INFO] Starting gunicorn 20.0.4
[2021-04-16 16:57:58 +0200] [8334] [INFO] Listening at: http://0.0.0.0:8000 (8334)
[2021-04-16 16:57:58 +0200] [8334] [INFO] Using worker: sync
[2021-04-16 16:57:58 +0200] [8345] [INFO] Booting worker with pid: 8345
我看到端口正在侦听,但是,我无法在服务器的 public IP 和 0.0.0.0 上打开我的仪表板 端口 8000 处于监听模式
sudo lsof -i -P -n | grep LISTEN
gunicorn 13003 user1 5u IPv4 49878669 0t0 TCP *:8000 (LISTEN)
gunicorn 13015 user1 5u IPv4 49878669 0t0 TCP *:8000 (LISTEN)
你能告诉我哪里错了吗?
当服务器被告知监听 0.0.0.0
时,这意味着“监听所有绑定的 IP 地址”。浏览器可以使用绑定到该服务器的任何 IP 地址来访问它。 127
地址族是保证绑定到每台机器的地址集之一。
这意味着您应该能够浏览到 https://127.0.0.0:8000
以查看网络应用程序。此外,https://127.0.0.1:8000
、https://127.0.1.0:8000
、https://127.666.312.432:8000
等
然而,要求网络浏览器访问 https://0.0.0.0
意味着“我不知道我想连接到哪里”并且总是失败。这包括所有端口,因此尝试浏览到 https://0.0.0.0:8000
总是会失败。
因为我在终端上没有遇到任何错误消息,所以我尝试了 wget
并找到了 200 OK
响应。这清楚地表明我无法通过浏览器获取我的仪表板。
所以我将端口添加到 firewalld
并重新启动 firewalld
。可以通过浏览器访问仪表板。
谢谢大家抽出宝贵时间。