You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS7上Django服务无法从外部访问的问题求助

解决Django服务无法从外部访问的问题

看了你提供的配置和操作信息,问题的核心其实很明显——你的Django开发服务器只绑定了本地回环地址127.0.0.1,这就导致只有虚拟机内部能访问服务,外部设备(比如你的物理主机)根本连不上。

问题根源

从你给出的netstat输出和服务启动提示就能确认:

  • 启动日志显示:Starting development server at http://127.0.0.1:8000/
  • 端口监听信息:tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 1643/python3.6

Django的runserver命令默认只监听本地回环接口,拒绝外部网络的连接请求,这就是为什么你本地能访问、外部连不上的原因。

具体解决步骤

1. 修改启动命令,绑定所有网络接口

先停止当前运行的Django服务,然后用以下命令重新启动:

python3.6 manage.py runserver 0.0.0.0:8000

这里的0.0.0.0表示绑定服务器上所有可用的网络接口,这样外部设备就能通过虚拟机的内网IP访问8000端口了。

启动成功后,你会看到日志提示变成:

Starting development server at http://0.0.0.0:8000/

2. 验证端口监听状态

再次执行netstat -lptun,应该能看到类似下面的输出,说明8000端口已经对所有接口开放:

tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN xxxx/python3.6

3. 外部访问测试

现在你可以在物理主机上,用虚拟机的实际内网IP加上8000端口访问服务,比如http://192.168.x.x:8000(把IP替换成你虚拟机的真实内网地址)。

额外补充说明

  • 你提到换80端口仍无法外部访问,是因为当时启动命令还是默认绑定127.0.0.1,换成runserver 0.0.0.0:80就能解决这个问题。
  • 虽然你当前防火墙处于关闭状态,但如果后续需要开启防火墙,记得开放对应端口:
    firewall-cmd --add-port=8000/tcp --permanent
    firewall-cmd --reload
    
  • 注意:Django的runserver是开发用的轻量服务器,不适合生产环境,正式部署建议使用Nginx+uWSGI/Gunicorn的组合方案。

内容的提问来源于stack exchange,提问作者Wael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:11:07