Ubuntu环境下Gunicorn+Bokeh+Flask脚本运行问题求助
解决Gunicorn+Bokeh+Flask在Ubuntu16上无法外部访问的问题
我来帮你一步步排查这个问题,你遇到的情况大概率是配置或网络层面的常见问题导致的,以下是具体解决步骤:
1. 修正Gunicorn启动命令的错误
你执行的命令gunicorn - 4 flask_gunicorn_embed:app存在参数拼写错误,而且默认Gunicorn只会监听本地回环地址127.0.0.1,这就导致只有服务器本机才能访问,外部(包括你通过SSH连接的客户端)无法连接。
正确的启动命令应该是:
gunicorn -w 4 -b 0.0.0.0:8000 flask_gunicorn_embed:app
-w 4:指定启动4个worker进程(你的原命令里把-w写成了-,少了w)-b 0.0.0.0:8000:让Gunicorn监听服务器上所有可用的网络接口,这样外部设备/客户端就能通过服务器的公网IP或hostname访问了
2. 检查Ubuntu 16.04的防火墙设置
Ubuntu 16.04默认使用ufw防火墙,可能8000端口没有被允许外部访问,执行以下命令开放端口:
sudo ufw allow 8000/tcp
然后验证防火墙规则是否生效:
sudo ufw status
你应该能看到8000/tcp的规则被标记为ALLOW
3. 云服务器需检查安全组规则(如果适用)
如果你的Ubuntu机器是云服务器(比如AWS、阿里云、腾讯云等),还需要在云平台的安全组配置中,添加入站规则,允许TCP协议的8000端口访问,来源可以设置为你的本地IP(更安全)或者0.0.0.0/0(允许所有IP访问)。
4. 验证服务状态与本地访问性
先在服务器本地测试服务是否正常:
curl 127.0.0.1:8000
如果能返回正常的HTML内容,说明服务本身没问题,问题出在网络层面;如果本地也访问失败,需要查看Gunicorn的日志输出,检查是否有代码报错(比如依赖缺失、Bokeh/flask配置错误),可以通过添加--log-level debug参数启动Gunicorn来获取更详细的日志:
gunicorn -w 4 -b 0.0.0.0:8000 --log-level debug flask_gunicorn_embed:app
内容的提问来源于stack exchange,提问作者machump
相关产品推荐
相关产品推荐

