您现在的位置是:百科 >>正文
无法配置IIS来支持Python程序的运行
百科3228人已围观
简介我把一个ASP.NET项目迁移到Windows Server 2019上,顺手想在同一站点挂几个Python脚本。IIS 10,Python 3.9,官方文档翻了个遍,折腾了整整一个下午,最后发现根本 ...
我把一个ASP.NET项目迁移到Windows Server 2019上,无法顺手想在同一站点挂几个Python脚本。配置IIS 10,持Pn程Python 3.9,运行官方文档翻了个遍,无法折腾了整整一个下午,配置最后发现根本跑不起来。持Pn程网上那些教程全是运行复制粘贴,照着做,无法每一步都报错。配置
核心问题出在IIS的持Pn程处理器映射上。你要在“处理程序映射”里添加一个脚本映射,运行请求路径写*.py,无法可执行文件指向python.exe,配置再加个-u参数。持Pn程听起来简单?我试了,IIS直接返回500.19,配置错误。原因是Python解释器不是ISAPI过滤器,IIS期望的是原生模块或CGI程序。你得先安装wfastcgi,然后运行wfastcgi-enable,它会帮你生成一个FastCgiModule的配置。但这里有个坑——wfastcgi默认只处理Django的wsgi.py,你要写个简单的hello.py,它根本不认。
我换了个思路,用HttpPlatformHandler模块。这个模块是微软官方推荐的,专门用来把请求转发给外部进程。配置看起来也合理:在web.config里写<httpPlatform processPath="C:\Python39\python.exe" arguments="app.py" />。结果呢?进程能启动,但IIS和Python进程之间的通信管道总是断。查事件日志,发现Python进程莫名其妙地退出,连个异常都不抛。后来我才知道,HttpPlatformHandler需要Python脚本自己监听一个端口,然后IIS把请求转发过去,这等于你要自己写一个WSGI服务器,太扯了。
最恶心的是权限问题。就算你配置对了,IIS的工作进程(w3wp.exe)默认以ApplicationPoolIdentity运行,这个账户对C:\Python39目录只有只读权限。Python需要写__pycache__缓存文件,没权限就直接崩。你得手动给整个Python安装目录加上IIS_IUSRS的修改权限。这还没完,如果你用虚拟环境,路径里带空格,IIS解析参数时会把路径截断,又得用短文件名(8.3格式)绕过。
另一个隐蔽的问题出在URL重写上。我项目里有个rewrite规则,把所有请求都指向index.php,结果Python脚本的请求也被拦了。你必须在规则里加个条件,排除.py后缀。这个坑不踩一次根本想不到。
折腾到最后,我彻底放弃在IIS上跑Python了。改用nginx反代到本地的uvicorn,五分钟就通了。说实话,IIS对Python的支持就是个半成品,适合跑跑Flask开发测试,生产环境还是别指望它。如果你非要用IIS,建议直接装个WSL,在Linux子系统里跑Python,然后用IIS的ARR反向代理,至少比原生配置靠谱十倍。
Tags:
上一篇:web自动化测试环境搭建
下一篇:网红3年被骗1161万
相关文章
辽宁生理测量仪厂家
百科辽宁生理测量仪厂家,我实地跑过几家。沈阳浑南那块儿,厂房不算大,但进去就能闻到一股电路板焊接后的松香味儿。前台小姑娘正低头刷手机,抬头看我一眼,也没问来意,直接说:“找王工吧?他这会儿在调试间。”—— ...
【百科】
阅读更多有没有类似自如的装修公司
百科去年帮朋友盯一套老破小的翻新,他图省事找了自如。结果装完我去看,墙面平整度还行,但厨房瓷砖有一块空鼓,敲上去“咚咚”响。管家倒是爽快,说安排返工。这事让我开始琢磨:市面上有没有跟自如模式相近、但可能更 ...
【百科】
阅读更多芭蕾舞基本功超痛视频惩罚
百科压腿杆上垫着的那块毛巾已经湿透了。女孩把脸埋在肘弯里,肩膀一抽一抽地抖。舞蹈老师站在她身后,膝盖顶住她的后腿,一只手按住她的胯,另一只手慢慢把她的前腿往耳边推。数到三十的时候,女孩终于没忍住,从牙缝里 ...
【百科】
阅读更多