AWS Ubuntu服务器部署Flask应用报错:无法连接127.0.0.1:8000
解决Gunicorn无法连接127.0.0.1:8000的问题
嘿,我当初第一次在AWS Ubuntu上部署Flask的时候也踩过这个坑,咱们一步步来排查解决,应该很快就能搞定!
第一步:先确认基础环境和应用本身没问题
- 先检查你的Flask应用文件是不是叫
helloworld.py,并且就在当前工作目录里(Ubuntu是区分大小写的,别写错文件名哦)。 - 试试单独运行Flask应用:
python helloworld.py,然后在服务器上用curl http://127.0.0.1:5000测试,如果能返回Hello World!,说明应用代码本身没问题;如果不行,先检查代码的缩进、语法有没有错误(你给的代码看起来是对的,但复制的时候可能丢了符号?)。 - 确认Gunicorn已经安装:运行
pip list | grep gunicorn,如果没找到,先执行pip install gunicorn安装它。
第二步:排查端口和Gunicorn绑定问题
- 检查8000端口是不是被其他进程占用了:
执行sudo lsof -i :8000或者sudo netstat -tulpn | grep 8000,如果输出里有其他进程占用8000端口,要么杀掉那个进程(比如sudo kill -9 <进程PID>),要么换个端口运行Gunicorn,比如:
记得同时把Nginx配置里的gunicorn -b 127.0.0.1:8001 helloworld:appproxy_pass http://127.0.0.1:8000/;改成对应的新端口。 - 显式指定Gunicorn的绑定地址:有时候默认绑定可能出问题,试试直接指定端口运行:
gunicorn -b 127.0.0.1:8000 helloworld:app
第三步:检查权限和日志细节
- 试试用sudo运行Gunicorn:如果之前用root用户操作过文件,可能普通用户权限不够,执行
sudo gunicorn helloworld:app看看能不能正常启动。 - 开启Gunicorn的debug日志,看具体错误:
日志里会告诉你到底是找不到模块、还是无法绑定端口,或者其他问题,这时候就能精准定位了。gunicorn --log-level debug helloworld:app
第四步:等Gunicorn正常运行后,别忘了检查Nginx
当Gunicorn能正常启动,用curl http://127.0.0.1:8000能返回内容后,还要:
- 检查Nginx配置文件的语法:
sudo nginx -t,确保没有语法错误。 - 重启Nginx服务:
sudo systemctl restart nginx,这样Nginx才能正确转发请求到Gunicorn。
内容的提问来源于stack exchange,提问作者tktktk0711
相关产品推荐
相关产品推荐

