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

整合Django Channel的Django-React项目如何实现云服务器永久稳定运行

当前部署方案的先天缺陷

  • Django 自带的 python manage.py runserver 是仅用于本地开发调试的服务器,没有生产级的并发处理能力、异常容错和自动恢复机制,遇到运行时错误、高并发请求很容易直接崩溃
  • screen 仅实现会话后台脱离,没有进程监控、崩溃自动拉起能力,进程遇到OOM(内存不足被系统杀掉)、运行时异常退出后不会自动重启,最终表现就是运行一段时间后服务停止

生产级稳定部署方案

因为你的项目使用了 Django Channels 做 WebSocket 推送,必须使用 ASGI 服务器替代自带的开发服务器,再搭配进程托管工具实现常驻运行。

步骤1:替换为生产级ASGI服务器

优先选择 Channels 官方配套的 Daphne 服务器,也可以使用 Uvicorn:

  1. 安装 Daphne:pip install daphne
  2. 测试启动是否正常,确认接口、WebSocket 推送功能正常:
daphne -b 0.0.0.0 -p 8000 你的项目名.asgi:application

步骤2:使用 systemd 托管进程(推荐,Linux 原生支持)

systemd 是绝大多数 Linux 发行版自带的进程管理工具,可实现开机自启、崩溃自动重启、日志统一管理,稳定性最高:

  1. 新建服务配置文件:sudo nano /etc/systemd/system/你的项目名.service
  2. 写入以下配置,替换括号内的你自己的实际路径/信息:
[Unit]
Description=Django Channels ASGI Service
After=network.target

[Service]
User=你的服务器普通用户名
Group=www-data
WorkingDirectory=你的Django项目根目录绝对路径
ExecStart=你的Python虚拟环境绝对路径/bin/daphne -b 127.0.0.1 -p 8000 你的项目名.asgi:application
Restart=always
RestartSec=5
Environment="PATH=你的Python虚拟环境绝对路径/bin"
Environment="DJANGO_SETTINGS_MODULE=你的项目名.settings"

[Install]
WantedBy=multi-user.target
  1. 执行命令生效配置:
# 重载systemd配置
sudo systemctl daemon-reload
# 启动服务
sudo systemctl start 你的项目名
# 设置开机自启
sudo systemctl enable 你的项目名
  1. 常用运维命令:
    • 查看运行状态:sudo systemctl status 你的项目名
    • 查看实时运行日志:sudo journalctl -u 你的项目名 -f
    • 重启服务:sudo systemctl restart 你的项目名

备选方案:使用 Supervisor 托管进程

如果不习惯使用 systemd,可以选择 Supervisor 作为进程管理工具:

  1. 安装 Supervisor:sudo apt install supervisor(Debian/Ubuntu 系)或 sudo yum install supervisor(CentOS 系)
  2. 新建配置文件:sudo nano /etc/supervisor/conf.d/你的项目名.conf
  3. 写入配置:
[program:你的项目名]
directory=你的Django项目根目录绝对路径
command=你的Python虚拟环境绝对路径/bin/daphne -b 127.0.0.1 -p 8000 你的项目名.asgi:application
user=你的服务器普通用户名
autostart=true
autorestart=true
startretries=3
stdout_logfile=/var/log/你的项目名.log
stderr_logfile=/var/log/你的项目名.err.log
  1. 生效配置启动服务:
sudo supervisorctl update
sudo supervisorctl start 你的项目名

额外优化建议

  • 生产环境先执行 python manage.py collectstatic 收集所有静态资源,可在 ASGI 服务前加 Nginx 做反向代理,由 Nginx 处理静态资源请求、HTTPS 证书配置、流量限流,进一步降低后端服务负载
  • 如果服务频繁崩溃,可通过运行日志排查是否存在代码异常、内存泄漏问题,也可执行 dmesg | grep oom 确认是否是服务器内存不足被系统主动杀掉进程,这种情况需要优化代码内存占用或者升级服务器配置
  • 绝对不要在生产环境使用 runserver,无论用什么托管工具,都要替换为生产级 ASGI 服务器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:30:02