Python中Flask + Gunicorn搭建Web服务,浏览器显示can't connect to the server如何解决?
机器是某运营商机房服务器,有公网 IP。
系统 Ubuntu 14.04.5 LTS (GNU/Linux 3.13.0-24-generic x86_64)
配置操作:
flask run配置中host=0.0.0.0,port=5000Gunicorn -b 0.0.0.0:5000- 没有用
Nginx,直接flask渲染一些静态页面,主要是用服务接口
尝试解决:
- 尝试修改端口为
1024以下。 [失败] - 在服务器本机上请求接口能正确获取数据,但是外部机器无法连接。
之前在内网测试时候是 OK 的,跨机可以通信,但是部署时候就出现上述问题了,Google 翻遍了,说的都是 host=0.0.0.0 的配置,实在是不知道咋办了,各位老哥能指点一下吗,感激不尽啊。
Python中Flask + Gunicorn搭建Web服务,浏览器显示can't connect to the server如何解决?
安全组看一下,是不是端口没开
这个问题通常是因为服务没正确启动或网络配置有问题。先检查Gunicorn是否真的在运行:
# 先确认Flask应用能单独运行(app.py示例)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello World!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000) # 测试时用这个
运行 python app.py 看能否通过浏览器访问 http://localhost:5000。如果可以,再用Gunicorn启动:
# 常用启动命令
gunicorn -w 4 -b 0.0.0.0:8000 app:app
# 或者绑定到5000端口
gunicorn -b 127.0.0.1:5000 app:app
关键检查点:
- 端口是否正确:Gunicorn默认端口8000,Flask默认5000,别搞混
- 绑定地址:本地测试用
127.0.0.1,远程访问需要0.0.0.0 - 防火墙:Linux检查
sudo ufw status,Windows关防火墙测试 - 进程确认:
ps aux | grep gunicorn或netstat -tulpn | grep :8000
如果还是不行,在Gunicorn命令加 --log-level debug 看详细错误。大概率是端口被占或绑定地址不对。
总结:先确认服务进程和端口监听状态。
查本机防火墙,查云平台防火墙 /VPC
国内 IDC,则你此 IP 是否备案
你自己电脑上用 nmap -v -A 服务器 IP 扫下,看看端口是否打开
netstat 显示端口是开的
Gunicorn 配置对么,类似这样哎 gunicorn -b 0.0.0.0:5000 ‘app.create_app()’
本地能调非 localhost 能连接。然后云平台不行大概是没开放公用端口吧,而且也不是 docker 只是虚拟机实例,IP 也没什么好映射的。打开公用 IP,开放公用端口,再尝试。
runserver 和 gunicorn 都在 5000 ?
诶不过就算都在 5000,至少也该能访问到一个
头像好评>_<
本机防火墙已经关闭了,端口都没问题,云平台让小伙伴去查了,在等他们的消息,谢谢
配置正确的,内网测试全部通过了
嗯,现在感觉就是 IP 的问题了
之前尝试过 gunicorn 在 8080,flask 在 5000,但是还是失败了。。。
哈哈,差不多就是我现在的心情了
给小伙伴说了,无奈没给后台账号给我们,只能让他们去排查了


