Ubuntu服务器上Django开发服务器无法浏览器访问,仅curl可用
嘿,我之前在DigitalOcean上搭Django时也遇到过一模一样的问题,咱们一步步来排查解决:
1. 确认Django开发服务器的启动命令
首先得确保你启动服务器时用的是正确的命令——默认的python manage.py runserver只会绑定127.0.0.1,只能在服务器本地访问。你必须显式指定监听所有网卡:
python manage.py runserver 0.0.0.0:8000
启动后应该能看到类似这样的输出:
Watching for file changes with StatReloader
Performing system checks...System check identified no issues (0 silenced).
July 20, 2024 - 12:34:56
Django version 4.2.3, using settings 'myproject.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
2. 检查Ubuntu服务器的UFW防火墙
Ubuntu默认启用了UFW防火墙,很可能是它拦截了外部对8000端口的请求:
- 先查看当前防火墙规则:
sudo ufw status - 如果看不到
8000/tcp在允许列表里,执行命令开放端口:sudo ufw allow 8000/tcp - 再次运行
sudo ufw status确认规则已添加。
3. 检查DigitalOcean的云防火墙
除了服务器本地的UFW,DigitalOcean还有一层云级防火墙,这也是容易忽略的点:
- 登录你的DigitalOcean控制面板,找到目标服务器
- 切换到「Firewalls」标签页
- 确保已经创建了入站规则:允许TCP协议的8000端口,来源可以设置为
0.0.0.0/0(允许所有IP访问,测试用)或者你的本地公网IP(更安全)
4. 本地访问时用服务器公网IP
最后要注意:本地浏览器不能直接访问0.0.0.0:8000,你得用服务器的公网IP地址加上端口,比如:
http://你的服务器公网IP:8000
你可以在DigitalOcean服务器详情页找到公网IP,或者在服务器终端运行curl ifconfig.me获取。
按照这几步排查下来,基本就能解决本地无法访问的问题啦!
内容的提问来源于stack exchange,提问作者Romain Sacchi




