在IIS中部署两个Django项目,第二个站点返回200却显示空白页
IIS下多Django项目wfastcgi隔离配置及空白页问题解决
一、可以配置独立的wfastcgi应用程序实现项目隔离
完全可以通过注册独立的FastCGI应用程序实现两个Django项目的隔离,这是同一服务器同一端口下隔离多Python项目的标准做法,具体步骤如下:
- 注册新的FastCGI应用程序
- 打开IIS管理器,点击服务器节点,找到「FastCGI设置」
- 右键选择「添加应用程序」,可执行文件路径填写第二个项目虚拟环境的Python解释器和对应wfastcgi.py,格式为:
C:\project_folder\project_env\Scripts\python.exe|C:\project_folder\project_env\lib\site-packages\wfastcgi.py - 自定义名称(比如「Second Python FastCGI」),保存配置。
- 给第二个项目的虚拟文件夹配置专属处理程序映射
- 找到第二个项目对应的虚拟文件夹,进入「处理程序映射」
- 右键选择「添加模块映射」,请求路径设为
*,模块选择「FastCgiModule」,可执行文件选择刚才注册的「Second Python FastCGI」,名称自定义(比如「Second Django FastCGI」),完成后确认允许该映射。
- 配置独立应用池
- 确保第二个项目的虚拟文件夹使用独立的应用池,且应用池的「.NET CLR版本」设置为「无托管代码」(Python属于非托管应用),避免和第一个项目的应用池互相干扰。
二、排查第二个项目空白页(200状态码)问题
既然python manage.py runserver能正常运行,问题大概率出在IIS与wfastcgi的配置衔接上,按以下步骤排查:
- 检查Django的ALLOWED_HOSTS配置
在第二个项目的settings.py中,确保ALLOWED_HOSTS包含服务器的IP、域名,或临时设为ALLOWED_HOSTS = ['*'](生产环境不建议用*),若未配置正确,Django会返回空白页但状态码200。 - 配置FastCGI的环境变量
回到刚才注册的「Second Python FastCGI」应用程序,打开「环境变量」,添加两个关键变量:DJANGO_SETTINGS_MODULE:值为第二个项目的settings路径(比如second_project.settings)WSGI_APPLICATION:值为第二个项目的WSGI入口(比如second_project.wsgi.application)
这两个变量是wfastcgi识别Django项目的核心,配置错误会导致无法加载项目路由。
- 核对虚拟路径与Django路由的匹配
如果第二个项目的虚拟路径是example.com/second,需确认Django的URLconf是否适配该前缀:- 要么在Django的根
urls.py中添加前缀路由(比如用path('second/', include('app.urls'))) - 要么在IIS虚拟文件夹的「高级设置」中,确认物理路径指向项目根目录,且应用池为该项目的独立池。
- 要么在Django的根
- 查看Django与IIS日志
- 在
settings.py中配置LOGGING,将日志输出到本地文件,查看是否有内部错误(比如模板加载失败、数据库连接问题) - 查看IIS的站点日志(路径通常为
C:\inetpub\logs\LogFiles),确认请求是否正确到达Django,有没有隐藏的错误信息。
- 在
- 确认静态文件配置(若首页依赖静态资源)
若空白页是因为静态资源未加载,但状态码200,需确认STATIC_ROOT已正确配置,且执行过python manage.py collectstatic,同时在IIS中为静态文件路径添加单独的处理程序映射(比如用StaticFileModule处理/static/*路径)。
内容的提问来源于stack exchange,提问作者Shoother
相关产品推荐
相关产品推荐

