Windows 开机自动启动 Django 项目

直接 python manage.py runserver 8008 不适合生产,仅适合内网调试;runserver 是开发服务器,性能弱,不能对外公网暴露。

两种方案:任务计划程序(简单,适合调试)Windows 服务(后台无窗口,推荐)

方式一:任务计划程序开机自启(最简单,会弹出黑窗口)

1、写启动脚本 start_django.bat

新建文本文档,改后缀为 .bat,编辑内容:

复制代码
@echo off
:: 切换到你的django项目根目录
cd /d E:\code\my_django_project
:: 激活虚拟环境(如果你用venv)
call venv\Scripts\activate.bat
:: 启动,端口8008
python manage.py runserver 0.0.0.0:8008

0.0.0.0:8008 代表允许局域网其他设备访问;只本机访问写 127.0.0.1:8008

保存,测试双击 bat,访问 http://127.0.0.1:8008 确认正常。

2、Windows 任务计划程序设置

  1. Win 搜索:任务计划程序
  2. 创建基本任务
    • 名称:DjangoAutoStart8008
    • 触发器:计算机启动时
    • 操作:启动程序
    • 程序或脚本:选择刚才的 start_django.bat
    • 勾选:不管用户是否登录都要运行 ✅
    • 取消勾选 "不存储密码",勾选最高权限运行
  3. 保存。

缺点:开机弹出 cmd 黑框,关掉窗口 Django 就停止;机器登录后才真正执行。


方式二:Windows 服务运行 Django(无黑窗口,真正后台驻留)

runserver 不适合做服务,改用 waitress 作为 WSGI 服务器。

步骤 1:安装 waitress

复制代码
pip install waitress

步骤 2:项目根目录新建 service_run.py

复制代码
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

from waitress import serve
from myproject.wsgi import application

# 监听全部网卡,端口8008
serve(application, host="0.0.0.0", port=8008)

myproject 替换为自己 Django 项目文件夹名。 测试运行:python service_run.py,访问 8008 确认正常。

步骤 3:用 nssm 把 python 脚本注册成 Windows 系统服务

  1. 下载 nssm(免安装工具),解压

  2. cmd 管理员身份,进入 nssm 的win64目录(32位系统进入win32)执行命令:

    nssm install DjangoService8008

弹出窗口:

  • Path:选择你的 python 解释器路径,例:E:\code\my_django_project\venv\Scripts\python.exe
  • Arguments:service_run.py
  • Startup directory:填 Django 项目根目录 E:\code\my_django_project

设置服务:启动类型 =自动

复制代码
nssm start DjangoService8008

✅开机就后台自动跑,没有黑窗口,崩溃会自动重启。

NSSM常用命令:

复制代码
nssm start DjangoService8008     #启动
nssm stop DjangoService8008      #停止
nssm restart DjangoService8008   #重启
nssm edit DjangoService8008     #编辑配置界面
nssm remove DjangoService8008 confirm  #删除服务

⚠重要提醒

  1. 防火墙放行端口 8008,否则局域网访问不了。
  2. manage.py runserver 禁止公网直接使用,仅内网调试;正式环境务必用 waitress/gunicorn。
  3. 如果使用虚拟环境,脚本 / 服务里必须使用虚拟环境下的 python.exe,不要用系统 python。

防火墙放行 8008 快速命令(管理员 cmd)

复制代码
netsh advfirewall firewall add rule name="Django8008" dir=in action=allow protocol=TCP localport=8008 profile=any remoteip=any enable=yes
相关推荐
__zRainy__2 小时前
Node系列 · Node基础:net 模块
后端·node.js
Diligently_2 小时前
Anolis 系统更新与密码设置&磁盘扩容
java·后端·spring
kyson_2 小时前
大文件切片上传:从“能传”到“可靠”的 Vue 3 + Java 全栈实现
后端
张龙6872 小时前
uv 全面指南:比 pip 快 100 倍的 Python 包管理器,从安装到团队落地
后端·python
@HNUSTer2 小时前
Python数据可视化科技图表绘制系列教程(八)
python·数据可视化·科技论文·专业制图·科研图表
用户40966601317513 小时前
Guava 不止有 Lists 和 Maps:Cache、EventBus、Multimap 实战
java·后端
专注仿真3 小时前
问答大模型技术方案算法实现-熵权法融合算法 + 交叉编码器重排算法
人工智能·python·算法·语言模型·问答大模型关键算法·熵权融合算法·交叉编码器重排算法
一只叫煤球的猫3 小时前
从 Java 21 到 Java 25:ThreadLocal 以外的选择—— ScopedValue
java·后端·架构
用户3169353811834 小时前
SpringBoot + Vue 项目生产环境部署完整指南
前端·后端