Windows IIS部署Django项目实战:从环境配置到问题解决
本文详细介绍在Windows环境下利用IIS服务器部署Django项目的完整流程。内容涵盖WSGI原理、IIS功能开启、端口开放、wfastcgi安装配置、web.config参数设置及静态文件处理,并针对权限报错等常见问题提供解决方案,旨在帮助开发者实现高并发、稳定的Web应用部署。
相较于Django自带的开发服务器,采用IIS(Internet Information Services)进行部署能够显著提升系统的并发处理能力,并确保运行性能更加稳定可靠。
一、Python WSGI部署原理
Python Web项目部署的核心基础在于遵循WSGI(Web Server Gateway Interface)这一通用接口协议框架。
WSGI协议架构主要包含两个关键组成部分:Web服务器与应用服务器。
其中,Web服务器(即HTTP服务器)负责接收用户的HTTP请求,提供高并发访问支持,并调用Web应用来处理具体的业务逻辑。
另一方面,Python Web应用负责接收由服务器转发的请求对象(request),执行相应的业务处理,并将最终的处理结果返回给服务器以响应客户端。
本文将以IIS结合Django的方式,详细阐述Web项目的构建与部署过程。

二、准备部署环境
首先,在cmd终端中执行相关命令以获取项目依赖信息。
pip freeze>requirements.txt //搜集python依赖包及对应版本号,生成txt文件随后,在目标部署服务器上安装所需的Python依赖包(通过pip工具)。
pip install -r requirements.txt //文件requirements.txt为上一步cmd命令中生成此处展示的是作者个人的Python依赖包列表,实际部署时请根据项目具体需求安装相应的依赖包。

三、安装和配置IIS
打开Windows系统的“控制面板”,依次点击“程序和功能”以及“打开或关闭Windows功能”。在列表中找到“Internet Information Services (Internet 信息服务)”,并按照图示要求勾选相关选项以完成安装。

四、开放端口
本文将Web应用的访问端口设置为8001,具体的设置步骤如下所示。
第一步,打开Windows“控制面板”,进入“系统和安全”,点击“Windows Defender防火墙”,进入防火墙配置界面后,点击左侧的“高级设置”。

进入高级安全Windows Defender防火墙配置界面后,选中左侧的“入站规则”栏目,并在右侧操作栏中点击“新建规则”。在弹出的向导中选择“端口(o)”选项。

点击“下一步”,输入需要设置的端口号(例如本文设置的8001),随后一直点击“下一步”直至完成规则命名。此时,在入站规则列表中即可看到新创建的规则。

最后,在浏览器地址栏输入localhost进行访问测试。若出现IIS默认欢迎页面,则表明端口开放及IIS安装成功。

五、本地部署
在部署前需先放置项目文件夹,需注意在项目根目录和static文件夹中均需包含web.config文件。


接下来开始具体的部署操作部分。
首先,安装Python依赖包wfastcgi,并启动该服务(此步骤需要管理员权限)。
pip install wfastcgi //启动wfastcgi,, 停止命令为:wfastcgi-disable
wfastcgi-enable 执行命令后,系统将输出“Python路径”和“wfastcgi解释器核心脚本路径”,两者之间用竖线符号“|”隔开。

系统提示已在“MACHINE/WEBROOT/APPHOST”的“system.webServer/fastCgi”节应用了配置更改,具体路径如“d:\python395\python.exe|d:\python395\lib\site-packages\wfastcgi.py”现在可作为FastCGI脚本处理器使用。
接下来,需要配置web.config文件。
为确保IIS服务器能准确运行项目,必须配置并设定若干关键参数,包括项目路径、配置文件路径以及解析器等。请在Django项目文件中创建web.config文件,并将其放置在与manage.py相同的文件夹目录下。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="Python FastCGI"
path="*"
verb="*"
modules="FastCgiModule"
scriptProcessor="d:\python395\python.exe|d:\python395\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="C:\Users\yangz\Desktop\ZC_System-V20.6_11-09\ZC_System-V20.6" />
<add key="DJANGO_SETTINGS_MODULE" value="ZC_System.settings" />
</appSettings>
</configuration>在配置文件中,有三个参数需要特别注意。
第一,scriptProcessor属性中冒号分隔的部分,对应前文步骤中获取的Python解释器路径和wfastcgi核心脚本路径。
第二,配置项<add key="PYTHONPATH" value="C:\Users\yangz\Desktop\ZC_System-V20.6_11-09\ZC_System-V20.6" />,该路径应与manage.py所在的目录保持一致。
第三,配置项<add key="DJANGO_SETTINGS_MODULE" value="ZC_System.settings" />,此处的.settings文件在初始配置时可能不存在,用户可自行创建。若缺少该文件,可参考相关文档链接进行自行配置。
关于配置“DJANGO_SETTINGS_MODULE”的具体说明,请参考相关教程。
随后进行静态文件的迁移处理。
首先,进入static文件夹并创建第二个web.config文件。该文件的作用是将项目所有的静态资源文件(如css、js、img等)全部映射到根目录下的static文件夹中,以便服务器能够高效查找静态文件。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<!-- this configuration overrides the FastCGI handler to let IIS serve the static files -->
<handlers>
<remove name="Python FastCGI"/>
</handlers>
</system.webServer>
</configuration>接着,打开项目的配置文件setting.py。
将原有的语句“STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]”注释掉,并替换为“STATIC_BOOT = os.path.join(BASE_DIR, 'static')”。
//原语句注释掉
# STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
//现语句
STATIC_BOOT = os.path.join(BASE_DIR, 'static') 在cmd终端中进入Django项目根目录,执行相应的收集命令。
python manage.py collectstatic最后,在IIS中创建网站。
通过“控制面板”→“系统和安全”→“管理工具”→“Internet Information Services (IIS)管理器”打开管理界面。在左侧上方选中“网站”栏目,右键选择“添加网站”进入配置环节。


完成上述所有配置后,访问http://127.0.0.1:8001即可成功进入Web应用。
六、问题
常见问题一:[Errno 13] Permission denied: 'C:\\Users\\yangz\\Desktop\\ZC_System-V20.6_11-09\\ZC_System-V20.6\\templates\\ShouYe\\Login.html'。

解决方法:找到Django项目文件夹,右键点击属性,选择“安全”选项卡,点击“编辑”以修改用户和组权限。添加用户“Everyone”并勾选“完全控制”,最后点击“应用”保存设置。

常见问题二:如果在根目录中缺少****.settings文件,系统会弹出缺少MODULE的错误提示。
解决方法:手动配置***.settings文件。
至此,关于Windows系统下IIS部署Django项目的实践介绍完毕。如需了解更多IIS部署Django项目的相关内容,请搜索本站历史文章或继续浏览后续文章,希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













