在IIS上部署Django项目

本文详细介绍如何在Windows Server的IIS上部署Django项目,包括创建虚拟环境、安装依赖、配置FastCGI、设置静态文件等内容,并提供了解决常见问题的方法。
该文章已生成可运行项目,

 参考:Windows server iis部署Django详细操作!

  1. 安装python
  2. venv 为网站程序创建虚拟环境  (c:\www >python -m venv venv)
  3. activate虚拟环境(c:\www >venv\scripts\activate),在虚拟环境下 pip install -r requirements.txt  (来自pip freeze > requirements.txt)
  4. 创建网站文件夹,上传网页文件 
  5. 初始化数据库 (python manage.py migrate 及数据迁移)
  6. 在虚拟环境中进入网站目录,manage.py runserver看看能否运行正常
  7. 安装wfastcgi  (pip install wfastcgi)  (每个虚拟环境都应该独立安装wfastcgi。你可以多个站点公用一个虚拟环境,但每个虚拟环境都应该独立安装wfastcgi,wfastcgi-enable实际上是配置python解释器的路径。)
  8. 安装IIS(务必勾选CGI:select server roles > Roles > Web Server(IIS) > Web Server > Application Development > CGI)
  9. IIS上创建网站
  10. 设置FastCGI (从运行中的项目中拷贝一个web.config出来,在其基础上改即可,就省去iis界面配置了)
  11. 设置静态文件
  12. 设置settings.py (DEBUG=False、DATABASES)    关闭urls.py中的静态文件转发

======================

web.config需要设置的三个配置项目:

IIS 500 – 内部服务器错误解决方案

解决方法:打开IIS,在功能视图中找到“错误页”,双击进去后,看最右边的“操作”下的“编辑功能设置…”,将“错误响应”下的“详细错误”勾上。

Q1、需要在服务器上创建python的虚拟环境吗?

A:不是必须,但一般建议每个网站一个独立的虚拟环境。不使用虚拟环境,直接用python安装目录的主环境也可以。多个网站共用一个虚拟环境也可以。

Q2、在网站物理路径(例如:c:\interpub\www\site001\)上创建虚拟环境吗?

A:可以,但不建议这样做,有安全隐患。你可以在D盘上创建python虚拟环境,在E盘上创建网站目录也没有问题。在IIS设置【cgi模块映射】时,指定可执行文件路径为python虚拟环境的python.exe即可。

Q3、网站的文件放在虚拟环境目录还是放在网站目录?

A:放在网站目录下。

 wfastcgi 相关设置 参看这里,很详细:https://blog.youkuaiyun.com/bigcarp/article/details/121028820

1、在虚拟环境中pip install wfastcgi

2、wfastcgi-enable

3、设置web.config中的<handlers> </handlers>

4、在IIS界面中,设置网站应用程序池的标识设置为“LocalSystem”(目的是提py脚本的系统权限)

5、

%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers
%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

默认情况下,某些 IIS 配置节可能是锁定的,这意味着它们只能在全局 applicationHost.config 文件中配置,而不能在站点级别的 web.config 文件中进行覆盖。当你运行这个解锁命令后,system.webServer/handlers 配置节可以在站点级别(即每个站点的 web.config 文件中)进行自定义和修改。--->如果整个IIS全部网站都支持python,可以直接设置全局的,这样就不需要每个站点的web.config都单独设置了,也就不需要解锁这两个配置节了。

若python是安装在C:\Users\username\AppData 中,( C:\Users\Administrator\AppData\Local\Programs\Python\Python38\python.exe)建议不要使用全局环境的wfastcgi,我自己测试发现web.config的<handlers>  </handlers>中,填写全局的wfastcgi 会报wfastcgi出错,但改为虚拟环境的就可以。

web.config:

以下设置报错:
scriptProcessor="C:\Users\Administrator\AppData\Local\Programs\Python\Python38\python.exe|C:\Users\Administrator\AppData\Local\Programs\Python\Python38\lib\site-packages\wfastcgi.py"

-------------------
改为以下设置就好了:
scriptProcessor="c:\www\venv\scripts\python.exe|c:\www\venv\lib\site-packages\wfastcgi.py"


原因不知道

静态目录设置:

django的静态文件放在专门的目录

python manage.py collectstatic 命令把静态文件都收集到一起

python manage.py runserver 用的是 collectstatic收集的文件,单IIS、ngix等则不采用这个规则,需要通过web.config之类进行配置。

https://blog.youkuaiyun.com/weixin_36296538/article/details/83153070

1、设置可以直接访问资源。

2、设置无需python解释。

网站根目录配置了cgi映射wfastcgi 后, IIS把所有请求都交给wfastcgi,对于静态文件,不需要交给wfastcgi,所以静态文件放在指定的文件夹,并在文件夹下创建web.config 配置成可以访问。

静态文件目录下的web.config内容如下:

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
      <!-- this configuration overrides the FastCGI handler to let IIS serve the static files -->
      <handlers>
        <clear/>
   <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" resourceType="File" requireAccess="Read" />
     </handlers>
   </system.webServer>
</configuration>

(注意:如果某些目录是不需要python解析,可以在目录下再配置一个 web.config,参考写下如下代码即可:

执行过程:

IIS收到用户请求后,调用【模块映射】所指定的python.exe 启动对应的 wfastcgi.py,

wfastcgi 将会根据路由配置 执行相对应的 function ,并把执行结果返回给iis,由II返回给用户

setting.py 配置

ALLOWED_HOSTS

Debug 等设置项

如果设置完毕还未正常打开网页,设置网站的错误页显示详细错误看看,搞好了再设回自定义。

dddddddddddddddddddd'd'd'd'd'd'd'd'd'd'd'd'd'd'd'd'd'd'd

本文章已经生成可运行项目
<think>好的,用户想知道如何在IIS部署Django项目,我需要根据提供的引用内容来整理步骤。首先,我需要回忆一下IIS部署Django的一般流程,然后结合引用中的具体信息来确保准确性。 首先,引用[5]提到了物理路径要设置到manage.py所在的目录,这点很重要。然后用户权限部分,可能需要设置特定用户来确保权限正确。接下来是FastCGI的配置,模块选择FastCgiModule,可执行文件需要指向Python解释器和wfastcgi.py的路径,这点在引用[5]和引用[4]中都有提到。引用[4]还提到使用HttpPlatformHandler作为替代方案,可能需要比较两者的优缺点。 环境变量部分,引用[5]提到在FastCGI设置中添加环境变量,比如DJANGO_SETTINGS_MODULE和PYTHONPATH。同时,wsgi.py文件的配置在引用[3]中也有涉及,可能需要检查是否正确引用。 另外,引用[1]和引用[2]提到了使用WSGI,所以需要确保Django的WSGI应用正确配置。可能还需要处理静态文件,这部分在引用[5]中没有详细说明,可能需要提醒用户配置静态文件处理,比如在IIS中添加虚拟目录和设置MIME类型。 测试和排错也是关键步骤,比如检查权限问题、路径是否正确、依赖是否安装等。引用[5]中提到的物理路径和权限设置可能需要特别注意,避免出现403或500错误。 最后,引用[4]提到的HttpPlatformHandler可能是一个替代方法,用户如果想尝试的话可以参考提供的链接。不过根据引用[5],使用FastCGI是主要的方法,所以应该先详细说明这种方法,再提到替代方案。 总结下来,步骤大致分为安装依赖、配置IIS站点、设置FastCGI、处理静态文件、测试排错。需要确保每个步骤都清晰,并引用对应的参考资料,比如引用[5]中的具体配置步骤,引用[3]中的wsgi配置,引用[1]中的详细指南链接等。同时,要指出常见问题,比如权限和路径错误,帮助用户避免常见陷阱。</think>### 如何在IIS部署Django项目? #### **1. 环境准备** - **安装IIS**:在Windows Server中启用IIS服务(需包含CGI模块)[^1]。 - **安装Python**:确保Python环境已配置,建议使用虚拟环境管理依赖。 - **安装wfastcgi**:通过命令 `pip install wfastcgi` 安装,用于连接IISDjango应用[^5]。 #### **2. 配置IIS站点** 1. **创建网站**: - 打开IIS管理器,右键“网站” → “添加网站”。 - 设置站点名称、物理路径(指向Django项目的`manage.py`所在目录)。 - 绑定域名或IP地址,端口默认80。 2. **设置权限**: - 右键网站 → “编辑权限”,确保IIS用户(如`IUSR`)或指定用户对项目目录有读取/执行权限。 #### **3. 配置FastCGI** 1. **添加FastCGI模块**: - 进入“处理程序映射” → 添加模块映射: - 请求路径:`*` - 模块:`FastCgiModule` - 可执行文件:`Python解释器路径 | wfastcgi.py路径` 示例:`C:\Python\python.exe | C:\inetpub\wwwroot\project\wfastcgi.py`[^5]。 2. **设置环境变量**: - 在FastCGI设置中添加以下变量: - `DJANGO_SETTINGS_MODULE` → `项目名.settings` - `PYTHONPATH` → 项目根目录路径。 #### **4. 配置WSGI应用** - 修改项目中的`wsgi.py`文件,确保包含以下内容: ```python import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', '项目名.settings') application = get_wsgi_application() ``` 引用[3]指出需通过`django.core.wsgi.get_wsgi_application()`正确初始化应用。 #### **5. 静态文件处理** - 在`settings.py`中配置`STATIC_ROOT`,运行`python manage.py collectstatic`收集静态文件。 - 在IIS中添加虚拟目录,指向`STATIC_ROOT`路径,并设置MIME类型(如`text/css`)。 #### **6. 测试与排错** - 访问站点,若出现500错误,检查: 1. Python路径和权限是否正确。 2. FastCGI环境变量是否匹配项目配置。 3. 依赖包是否安装完整(如`pip install -r requirements.txt`)[^5]。 #### **替代方案:HttpPlatformHandler** - 对于更复杂的场景,可用HttpPlatformHandler替代wfastcgi,详细配置参考[微软官方文档](https://azureossd.github.io/2017/09/01/django-app-with-httpplatformhandler-in-azure-app-services-windows/)[^4]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值