云计算百科
云计算领域专业知识百科平台

django在开发环境下可以加载静态文件,IIS部署到服务器无法加载静态文件

没有新建虚拟目录为static,导致IIS 没有正确映射 /static/

在开发模式 (DEBUG=True) 下,Django 的 runserver 会自动提供静态文件访问,但在生产模式 (DEBUG=False) 下,Django 不会 提供静态文件,必须依赖 Web 服务器(如 IIS、Nginx、Apache)来处理静态文件请求。

在 IIS 站点中,如果直接访问 /static/xxx.png,IIS 默认会去站点的 wwwroot 目录下寻找,而不会自动去 C:\\myproject\\staticfiles。通过新建一个虚拟目录(Alias)static,并指向 C:\\myproject\\staticfiles,IIS 才能正确地将 /static/ 请求映射到收集的静态文件目录。

如何在 IIS 上正确配置 static 目录

1. 运行 collectstatic

前提:settings.py中设置了静态文件根目录

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

在 Django 项目目录下执行:

python manage.py collectstatic

这会把所有静态文件复制到 STATIC_ROOT 目录(例如 C:\\myproject\\staticfiles)。

2. 在 IIS 里创建虚拟目录

  • 打开 IIS 管理器,选择你的网站(例如 Default Web Site)。

  • 右键点击网站,选择 “添加虚拟目录”(Add Virtual Directory)。

  • 别名(Alias) 填写 static(必须与 STATIC_URL = '/static/' 匹配)。

  • 物理路径(Physical Path) 选择 C:\\myproject\\staticfiles。

  • 点击 “确定”。目录出现如下图所示虚拟目录即成功。

  • 虚拟目录static默认继承了网站的处理程序映射设置doMyDjango,即所有请求均需通过wfastcgi.py来处理,但静态资源不需要这种处理,应用这种处理反而会出错。在IIS管理器显示的static主页中,双击“处理程序映射”选项,打开处理程序映射页面。在处理程序映射列表中,鼠标右键单击doMyDjango,在快捷菜单中选择“删除”命令将其删除。

    第3、4步可省略

    3. 配置 MIME 类型(防止静态文件无法加载)

    • 在 IIS 站点 “MIME 类型” 里,确保 CSS、JS、PNG 等文件类型的 MIME 设置正确,例如:

      • .css → text/css

      • .js → application/javascript

      • .png → image/png

      • .woff / .woff2 → font/woff

    4. 赋予 IIS 访问权限

    • 确保 C:\\myproject\\staticfiles 目录对 IIS 用户(IUSR 或 IIS_IUSRS 组)具有 读取 权限:

    • 右键 staticfiles 目录 → 属性 → 安全 选项卡。

    • 点击 编辑 → 添加 → 输入 IUSR,然后授予 读取 权限。

    5. 测试是否能访问静态文件

    • 运行 IIS,打开浏览器访问:

      http://your-domain-or-ip/static/stub.png

    • 如果能正确看到图片,说明配置成功。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » django在开发环境下可以加载静态文件,IIS部署到服务器无法加载静态文件
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!