账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    win server2008+IIS7装django环境出现403错误
    36
    0

    迫于业务需要在win server2008+IIS7环境装配django环境,Python相关库安装正常,django runserver运行正常。
    安装好wfastcgi,在django项目根目录添加了web.config,代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
        <configuration>
            <system.webServer>
                <handlers>
                    <add name="Python FastCGI" 
                         path="*" 
                         verb="*" 
                         modules="FastCgiModule" 
                         scriptProcessor="c:\python\python.exe|c:\python\lib\site-packages\wfastcgi.py" 
                         resourceType="Unspecified" 
                         requireAccess="Script"/>
                </handlers>
            </system.webServer>
            <appSettings>
                <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
                <add key="PYTHONPATH" value="D:\wwwroot\yzf\MyDjango\MyDjango" />
                <add key="DJANGO_SETTINGS_MODULE" value="MyDjango.settings" />
            </appSettings>
        </configuration>

    运行网站出现500错误,把python目录加入iis_User的全部权限,500错误解决后出现403错误
    HTTP 错误 403.14 - Forbidden
    Web 服务器被配置为不列出此目录的内容。

    模块DirectoryListingModule 
    通知ExecuteRequestHandler 
    处理程序StaticFile 
    错误代码0x00000000 
    
    请求的 URLhttp://xxx.xxx.xxx.xxx:8090/ 
    物理路径D:\wwwroot\yzf\MyDjangoMyDjango
    登录方法匿名 
    登录用户匿名 

    求问我是不是哪一步做错了或者做漏了?实在是不熟悉IIS...求问大手子

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 稚与最初 普通会员 1楼

      403 Forbidden通常表示用户试图访问的资源(在你的例子中,可能是你的 Django 应用程序)被阻止。这可能是由于以下原因:

      1. 权限问题
      2. 在你的 Django 应用程序中,你可能需要具有特定的权限才能访问某个资源。例如,如果一个文件或目录需要在 Django 环境中读取或写入,你可能需要在项目的 settings.py 文件中添加 DRIVER畏 选项,并设置 DRIVER畏 = 'django.contrib.auth.backends.RemoteUser' 来启用远程用户身份验证。如果你的用户没有足够的权限访问某个资源,或者用户已经超出了你项目允许的访问权限范围,你可能会遇到 403 错误。
      3. 在你的网站配置文件 urls.py 中,你可能需要设置相应的 URL 连接,该连接与你需要使用的资源(例如,某个文件或目录)的 URL 相匹配。如果某个 URL 路径没有包含特定的 URL,或你设置了正确的 URL 连接,但用户没有相应的权限访问该资源,你可能会遇到 403 错误。
      4. 你可能需要检查你的 Django 应用程序和其依赖项(如 settings.pyurls.pytemplatesstatic 等)的权限设置,确保它们在没有权限访问资源的情况下仍然可以运行。

      5. 网站架构问题

      6. 如果你的网站使用了 RESTful 或 API 架构,你的 Django 应用程序可能需要使用特定的授权模型来检查用户是否具有访问资源的权限。这通常涉及到创建一个权限模型(如 UserRole),并在 Django 中使用 Permissiondjango.contrib.auth.models.User.has_perm() 函数来检查用户是否有相应的权限。如果你的 User 对象没有相应的方法,或者你的模型设计不正确,可能会导致 403 错误。
      7. 如果你的 Django 应用程序和其依赖项(如 settings.pyurls.pytemplatesstatic 等)的权限设置不正确,或者没有包含必要的权限字段,例如 userrole,你可能会遇到 403 错误。
      8. 你可能需要检查你的 Django 应用程序和其依赖项的架构设计,确保它们在没有权限访问资源的情况下仍然可以运行,并且不会导致 403 错误。

      9. 网络配置问题

      10. 如果你的网站位于网络上的服务器或云服务中,你可能需要配置正确的网络配置以允许 Django 应用程序访问特定的资源。这可能涉及到在服务器或云服务的防火墙或网络防火墙中配置路由规则,或者使用虚拟服务器等技术来隔离 Django 应用程序和 Web 服务之间的网络访问。
      11. 如果你的网站在本地开发和测试环境(如本地主机或本地开发服务器)上正常运行,但在 Web 服务器(如 Apache 或 Nginx)上遇到 403 错误,可能是因为 Nginx 或 Apache 的默认规则阻止了 Django 应用程序的请求。在这种情况下,你需要调整 Nginx 或 Apache 的默认规则以允许 Django 应用程序访问特定的资源。

      12. 数据库权限问题

      13. 如果你的 Django 应用程序需要读取或写入数据库中的数据,你可能需要具有数据库访问权限。这可能涉及到在数据库连接字符串中设置数据库用户名和密码,或者在 Django 的 settings.py 文件中配置数据库的连接选项。例如,如果你的数据库是 MySQL,你可能需要设置 DATABASES = {'default': dj_database_url.parse('mysql://username:password@localhost:3306/mydatabase')},并在 Django 的 settings.py 文件中添加 DATABASES = {'default': dj_database_url.parse('mysql://username:password@localhost:3306/mydatabase', user='admin', password='password', host='localhost', database='mydatabase')} 来启用数据库连接。如果你的数据库有其他数据库驱动,你可能需要相应地设置 DATABASES = {'default': dj_database_url.parse('postgresql://username:password@localhost:5432/mydatabase', user='admin', password='password', host='localhost', database='mydatabase')},并使用 INSTALLED_APPSDJANGO_DBUS_CONNECTIONS 设置数据库连接选项。

      如果上述检查都没有解决问题,可能需要进一步检查你的项目配置和 Django 应用程序代码,以确定具体的问题原因。以下是一些可能的步骤和建议:

      • 检查项目配置
      • 确保你已将 Django 应用程序部署到具有适当权限的服务器或云服务中,例如 Nginx 或 Apache。在这些服务器或云服务中,确保你已经设置正确的端口(例如,8080 或 8081)和监听模式(例如,http)。
      • 确保你已正确配置了 Django 服务器端和 Web 服务器(如 Apache 或 Nginx)的域名和端口。在 Nginx 或 Apache 的配置文件中,确保你设置了正确的域名解析和端口映射,或者在 http.confserver.conf 文件中添加正确配置的 httpdnginx 服务器配置。
      • 确保你的 Django 应用程序和其依赖项(如 settings.pyurls.pytemplatesstatic 等)的配置正确。例如,确保你已添加了 DRIVER畏 选项,并设置了正确的 URL 连接,以及数据库驱动的配置。
      • 确保你的 Django 应用程序和其依赖项(如 INSTALLED_APPSDJANGO_DBUS_CONNECTIONS)的配置正确。例如,确保你已添加了 INSTALLED_APPS,并配置了数据库驱动的连接选项。

      • 检查 Django 应用程序代码

      • 确保你的 Django 应用程序具有访问数据库所需的权限。这可能涉及到在 models.py 文件中定义数据库模型,或在 settings.py 文件中配置数据库连接选项。例如,如果你的模型中使用了 db.Model,你可能需要在 models.py 文件中添加 DRIVER畏 = 'django.db.backends.mysql' 来启用数据库连接。如果你的模型中使用了 db.Modeldb.ForeignKey,你可能需要在 settings.py 文件中配置 MIDDLEWARE_CLASSESDATABASES 选项。

      • 检查 URL 连接

      • 确保你的 Django 应用程序和其依赖项(如 urls.pytemplatesstatic 等)的 URL 连接与需要访问的资源(例如,某个文件或目录)的 URL 相匹配。如果 URL 路径没有包含特定的 URL,或你设置了正确的 URL 连接,但用户没有相应的权限访问该资源,你可能会遇到 403 错误。
      • urls.py 文件中,确保你设置了正确的 URL 连接。例如,如果你的 URL 是 http://localhost:8000/myapp/files,并且你需要访问的文件位于 myapp/files/ 目录下,你需要在 urlpatterns 字段中添加如下配置: python url(r'^files/', include('myapp.urls')),

      • 检查数据库权限

      • 确保你的 Django 应用程序和其依赖项(如 settings.pyurls.pytemplatesstatic 等)的数据库驱动具有访问数据库所需的权限。这可能涉及到在数据库连接字符串中设置数据库用户名和密码,或者在 Django 的 settings.py 文件中配置数据库连接选项。例如,如果你的数据库是 MySQL,你可能需要设置 DATABASES = {'default': dj_database_url.parse('mysql://username:password@localhost:3306/mydatabase')},并在 Django 的 settings.py 文件中添加 DATABASES = {'default': dj_database_url.parse('mysql://username:password@localhost:3306/mydatabase', user='admin', password='password', host='localhost', database='mydatabase')} 来启用数据库连接。如果你的数据库有其他数据库驱动,你可能需要相应地设置 DATABASES = {'default': dj_database_url.parse('postgresql://username:password@localhost:5432/mydatabase', user='admin', password='password', host='localhost', database='mydatabase')},并使用 INSTALLED_APPSDJANGO_DBUS_CONNECTIONS 设置数据库连接选项。

      如果上述步骤都没有解决问题,你可能需要进一步检查你的项目代码、数据库驱动以及 Nginx 或 Apache 的配置,以确定具体的问题原因。建议在代码审查、数据库查询和调试等方面进行深入的检查,以找出可能的故障点并解决问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部