在 IIS 上托管 Django Web 应用程序出现错误

问题描述 投票:0回答:2

我的组织已经在 Django 中实现了一个 Web 应用程序,我们需要将其托管在 Windows 系统上。我们正在使用 Django 3.2.8 和 Python 3.8.8。

Django 项目当前存储在这里:

C:\inetpub\wwwroot\CED_HRAP

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
          <add name="Python FastCGI" path="\*" verb="*" modules="FastCGIModule" scriptProcessor="c:\python38\python.exe|c:\python38\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
        <defaultDocument>
            <files>
                <clear />
                <add value="Default.htm" />
                <add value="Default.asp" />
                <add value="index.htm" />
                <add value="index.html" />
                <add value="iisstart.htm" />
                <add value="base.html" />
            </files>
        </defaultDocument>
        <directoryBrowse enabled="false" />
    </system.webServer>

    <appSettings>
        <add key="PYTHONPATH" value="C:\inetpub\wwwroot\CED_HRAP" />
        <add key="WSGI_HANDLER" value="CED_HRAP.wsgi.application" />
        <add key="DJANGO_SETTINGS_MODULE" value="CED_HRAP.settings" />
    </appSettings>
</configuration>

我们的settings.py文件位于

C:\inetpub\wwwroot\CED_HRAP\CED_HRAP\settings.py

我们当前看到此错误消息:

HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出 该目录的内容。

最可能的原因:

未为请求的 URL 配置默认文档,并且 服务器上未启用目录浏览。

我们应该如何配置web.config文件中的默认文档,使其链接到Django的内部路由(urls.py)?

我们按照此处的说明进行操作: https://github.com/Johnnyboycurtis/webproject (YouTube:https://www.youtube.com/watch?v=APCQ15YqqQ0

可以看到上述存储库中的web.config文件没有指定任何默认文档。我们将它们添加到 web.config 中以解决当前错误。

还查看了其他几个关于此过程的教程和文档,但未能解决问题。

谢谢!

django iis web-hosting
2个回答
1
投票

出现此问题是因为网站没有启用目录浏览功能。另外,默认文档未配置。要解决此问题,请使用以下方法之一:

方法一:在IIS中启用目录浏览功能

要解决此问题,请按照下列步骤操作:

  1. 启动 IIS 管理器。为此,请选择“开始”,选择“运行”,键入 inetmgr.exe,然后选择“确定”。
  2. 在 IIS 管理器中,展开服务器名称,展开网站,然后选择要更改的网站。
  3. 在功能视图中,双击目录浏览。
  4. 在操作窗格中,选择启用。

方法二:添加默认文档

要解决此问题,请按照下列步骤操作:

  1. 启动 IIS 管理器。为此,请选择“开始”,选择“运行”,键入 inetmgr.exe,然后选择“确定”。
  2. 在 IIS 管理器中,展开服务器名称,展开网站,然后选择要更改的网站。
  3. 在功能视图中,双击默认文档。
  4. 在操作窗格中,选择启用。
  5. 在“文件名”框中,键入默认文档的名称,然后选择“确定”。

0
投票

您发现的说明实际上已损坏(缺少详细信息)并且不推荐(wfastcgi 已弃用)。

如果您恢复与 FastCGI 相关的所有更改并使用 HttpPlatformHandler 干净地启动,您将看到体验是多么流畅,

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" requireAccess="Script" />
        </handlers>
        <httpPlatform stdoutLogEnabled="true" stdoutLogFile=".\python.log" startupTimeLimit="20" processPath="C:\Users\<user name>\AppData\Local\Programs\Python\Python310\python.exe" arguments=".\mysite\manage.py runserver %HTTP_PLATFORM_PORT%">
        </httpPlatform>
    </system.webServer>
</configuration>

Python/Django 仍然负责处理包括静态文件在内的所有事务,而 IIS/HttpPlatformHandler 只是传递请求。

更多详细信息可以从我的博客文章找到。

© www.soinside.com 2019 - 2024. All rights reserved.