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

systemd启动Django服务显示运行但8000端口连接被拒绝问题求助

排查方向与解决方案

  1. 先验证端口是否正常监听
    执行以下命令查看8000端口的绑定状态:
ss -tulnp | grep :8000

如果没有返回对应python进程的监听记录,说明Django服务实际没有成功绑定端口,需要进一步排查启动报错。
2. 手动执行启动命令验证
直接在终端运行服务启动命令,查看实时输出是否有报错:

cd /mnt/services/backendapi
sudo /usr/bin/python3 manage.py runserver 0.0.0.0:8000

启动后再开一个终端执行curl测试,如果手动运行可以正常访问,说明问题出在systemd服务配置上;如果手动运行也无法访问,就是Django项目本身的问题。
3. 开启完整日志排查错误
把systemd服务配置里的日志输出注释打开,修改为以下配置:

[Unit]
Description=API service

[Service]
User=root
WorkingDirectory=/mnt/services/backendapi
ExecStart=/usr/bin/python3 /mnt/services/backendapi/manage.py runserver 0.0.0.0:8000
Restart=always
StandardOutput=append:/var/log/api.log
StandardError=append:/var/log/api.log
[Install]
WantedBy=multi-user.target

修改后执行sudo systemctl daemon-reload && sudo systemctl restart api,之后查看/var/log/api.log里的具体报错,大概率能看到端口绑定失败、依赖缺失、Django配置错误之类的关键信息。
4. 常见错误检查

  • 检查Django的settings.py里ALLOWED_HOSTS配置,确保添加了127.0.0.1、localhost和实例的内网IP
  • 测试时可以替换localhost为127.0.0.1访问,避免本地解析异常:curl http://127.0.0.1:8000/apis/v1/account_1/insights
  • 确认系统Python3环境已经安装了项目依赖的所有包,包括Django:如果你的项目用了虚拟环境,需要把ExecStart的Python路径替换为虚拟环境下的Python路径,不能直接用系统的/usr/bin/python3
  • 检查系统防火墙/SELinux规则,确认没有拦截8000端口的本地访问

注意:Django自带的runserver是开发用服务器,性能和安全性都不满足生产要求,生产环境建议替换为Gunicorn/uWSGI + Nginx的部署方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:36:04