如何在Digital Ocean上运行uWSGI快速入门的Hello World程序?
排查uWSGI基础服务无法外部访问的常见原因
检查uWSGI的监听绑定地址
默认情况下uWSGI可能仅绑定127.0.0.1,仅允许本地访问,外部无法连接。启动时需明确指定监听所有网卡:执行uwsgi --http 0.0.0.0:9090 --wsgi-file foobar.py,确保服务监听服务器的公网/内网网卡。可通过命令netstat -tulpn | grep 9090或ss -tulpn | grep 9090查看端口监听地址,若显示127.0.0.1:9090,则需调整启动参数。验证防火墙与安全组规则
服务器本地防火墙(如firewalld、iptables)或云服务商安全组可能未开放9090端口的入站权限:- 本地防火墙检查:执行
firewall-cmd --list-ports(firewalld环境)或iptables -L -n(iptables环境),确认9090/TCP端口的入站规则已放行。 - 云安全组检查:登录云服务商控制台,为目标服务器的安全组添加允许外部访问9090端口的规则(来源可设为
0.0.0.0/0或指定IP范围)。
- 本地防火墙检查:执行
本地测试服务可用性
在服务器本地执行curl http://127.0.0.1:9090,若能返回Hello World内容,说明uWSGI服务本身正常,问题出在外部网络链路;若本地也无法访问,需检查:- foobar.py文件内容是否正确:
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] - 启动命令是否正确:确认使用的是对应虚拟环境内的uWSGI(若用了虚拟环境),避免全局uWSGI导致依赖异常。
- foobar.py文件内容是否正确:
确认端口未被占用
即使启动日志无报错,9090端口也可能被其他进程占用,导致uWSGI未成功监听。执行lsof -i :9090查看端口占用情况,若有其他进程占用,可终止该进程或更换端口启动uWSGI。
内容的提问来源于stack exchange,提问作者Dallas Caley
相关产品推荐
相关产品推荐

