栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

IIS上添加处理程序映射wfastcgi

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

IIS上添加处理程序映射wfastcgi

网上关于IIS部署Django的教程中,添加wfastcgi部分通常只讲如何操作,不讲为什么这样操作,导致个性化的情况不知道如何修改、修改后会有什么后果。一番研究后,做了一些整理。

分三部分:

一、设置添加FastCGI映射

二、设置FastCGI映射的环境变量

三、【锁定冲突】打开web.config的设置锁

一、IIS上添加处理程序映射有多种方式,任选一种即可,例如:

1、通过 pip install wfastcgi 安装好wfastcgi后,执行 wfastcgi-enable。完成IIS全局的映射配置。

2、在网站目录下添加 / 编辑 web.config 进行配置。

3、在控制面板的IIS管理器,通过GUI交互界面进行配置。

4、编写脚本调用IIS管理工具appcmd.exe进行配置。(具体请自行百度)

一般来说,全局设置推荐wfastcgi-enable方式,若只想针对单个站点进行设置则推荐web.config方式。

 wfastcgi-enable 最简单,它是对IIS进行全局配置,执行wfastcgi-enable 是全局,IIS下全部网站都可以跑python程序了。

阅读wfastcgi.py 的 def enable() 部分代码可知,它实际上是调用C:WindowsSystem32inetsrv下的appcmd.exe (通过脚本命令方式进行IIS配置的工具)

 为了验证,我在服务器上做了测试:

step 1 :执行wfastcgi-enable前,IIS关于fastcgi映射的全局配置是这样的

 

或者直接在【fastcgi设置】中查看:

step 2 :安装wfastcgi,并执行wfastcgi-enable

 执行结果的提示内容也说得非常直白了:告诉你它具体做了什么使得FastCGI脚本处理器已经生效。

wfastcgi-enable
已经在配置提交路径“MACHINE/WEBROOT/APPHOST”向“MACHINE/WEBROOT/APPHOST”的“system.webServer/fastCgi”节应用了配置更改
"xxxx" can now be used as a FastCGI script processor

step 3: 这时候再检查一下IIS全局配置的内容,已经新增了一项FastCGI映射配置了

 

或者直接进入【fastcgi设置】

入口:

详情:

 step 4: 执行wfastcgi-disable,可以看到IIS全局配置中,对应的选项已经被移除。

 经过以上试验,我们可以知道 wfastcgi-enable 和 在控制面板的IIS管理器,通过GUI交互界面进行配置两种操作方式了。

以下再来看看通过web.config方式进行配置(此例子中只配置单个site,不是对IIS全局做配置)。

先把IIS恢复到初始状态(没有配置过fastcgi的状态)

step 1 :把以下代码保存为web.config,放到网站根目录。


    
        
            
                python.exe|libsite-packageswfastcgi.py" 
                     resourceType="Unspecified" 
                     requireAccess="script"/>
            
        
    

 这里填写脚本解析器(python.exe)和wfastcgi.py的绝对路径 【解析器路径可以用python安装目录下的python.exe 也可以用python虚拟环境的python.exe,根据自己的情况选择即可】

step 2:

在IIS管理器界面上查看配置情况:

 ps:web.config编辑好后好像还要在IIS管理器上 我的网站->处理程序映射->(双击handler)编辑模块映射 ->请求限制->确定->确定->确定 对应的配置才生效。

============再看看通过IIS管理器GUI交互界面方式对一个网站配置fastcgi: 

======两种方式是等效的========

=====  二、设置FastCGI映射的环境变量=======

若一台服务器的IIS上有多个网站,一般来说每个网站的环境变量是不一样的。所以wfastcgi-enable对全局设置FastCGI映射时,不包含【FastCGI环境变量】设置。

通过在网站根目录下的web.config,可以设置该网站的FastCGI环境变量。

1、在web.config上设置


        
            
            " />
            .settings" />
        
    

  • 填写我们的项目路径。
  •   填写settings.py的位置。修改成我们的settings.py所在目录的目录名即可。

2、在GUI界面上配置

对于全局设置,可以直接在IIS设置的主页【FastCGI设置】中添加和设置。

对于单个site的设置,需要先在site的【处理程序映射】中添加【模块映射】后,再回到全局设置主页的【FastCGI设置】中找到site的那条模块映射,点击【编辑】进入设置界面。(IIS下全部任一个网站单独设置的【模块映射】都可以在【FastCGI设置】中找到的)

 

需要添加的变量有3个:
Name: WSGI_HANDLER
Value: django.core.wsgi.get_wsgi_application()

Django项目目录
Name: PYTHONPATH
Value:

项目settings.py文件的位置
Name: DJANGO_SETTINGS_MODULE
Value:  .settings

=========其他=====

有教程说 “ 直接引用pythonLibsite-packages目录下的文件,不可以部署多个Django网站” “如果需要部署多个项目,就把“wfastcgi.py”文件从上面的路径中复制到Django项目的根目录下。” --->对此操作我表示质疑。

按我理解,无论IIS全局设置wfastcgi 还是 某个site或者某个目录设置wfastcgi,都完全可以用同一个解析器,同一个wfastcgi文件。把“wfastcgi.py”文件从上面的路径中复制到Django项目的根目录下是多此一举。

Q:一定要在服务器上 pip install wfastcgi 吗?不在服务器上pip install 而直接把本地的wfastcgi.py拷贝到服务器可以吗?

A:可以。

只是不pip install 的话,服务器上没有 wfastcgi-enable.exe 。相关配置需要通过网站目录下的web.config进行配置或者IIS管理器GUI界面完成配置。

Q:能否直接把本地的 wfastcgi-enable.exe 复制到服务器,然后运行它?

A:不能,因为在本地执行 pip install wfastcgi 时生成的 wfastcgi-enable.exe文件里面hardcode了一些绝对路径。直接复制到服务器上执行,会报错。

Q:wfastcgi-enable.exe 和 wfastcgi-disable.exe 分别做了 什么?

A:其实只是调用IIS配置工具appcmd.exe 执行添加/删除FastCGI映射的命令。

添加:appcmd set config /section:system.webServer/fastCgi /  +  [fullPath=xxx

删除:appcmd set config /section:system.webServer/fastCgi /  -  [fullPath=xxx

Q7:重启服务器或者重启IIS后,需要重新执行wfastcgi-enable吗?

A:不需要

========三、解锁web.config更改权限 ===========

 IIS出于安全考虑,对web.config的管理机制,默认情况下会锁住配置项不允许更改。我们把它解锁了

如果访问IIS出现如下错误

HTTP 错误 500.19 Internal Server Error

出现这样的情况是因为IIS7之后的版本都采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改。我们把它解锁了就OK。

打开CMD,在里面依次输入下面两个命令:

%windir%system32inetsrvappcmd unlock config -section:system.webServer/handlers 

%windir%system32inetsrvappcmd unlock config -section:system.webServer/modules

 解除了锁定之后,再访问网站就能正常显示了

若要在GUI界面操作(这样修改完web.config后可以重新上锁)

参考:

https://www.django.cn/article/show-21.html

https://zhuanlan.zhihu.com/p/111822007 对应的视频为 https://www.bilibili.com/video/BV1bT4y1M7L2

https://blog.csdn.net/SongyaoLee/article/details/82914503

https://blog.csdn.net/elonpage/article/details/52645562

https://blog.csdn.net/weixin_29138345/article/details/113080327 (使用appcmd来自动化部署IIS网站)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/354930.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号