Python在IIS上:怎么做?

68 投票
5 回答
98881 浏览
提问于 2025-04-16 22:15

我以前做过PHP和dotNet,现在对Python很感兴趣。我想把PHP的功能一点一点地转到Python上,同时让它们并行运行。这个过程可能会花费我两年时间,因为我的应用程序非常庞大,而我现在又被IIS束缚住了。我有15年的网页编程经验,包括在IIS上做ISAPI模块的C语言工作,但我不想再深入这个领域了。

看起来Python在IIS上运行得并不好。我尝试过FastCGI(只支持PHP,不支持Python)和PyIsapie(文档很差,没能成功运行)。最后,我通过HeliconZoo的dll让它运行起来了,但:

我接下来的问题是:如何调试和开发网站?在PHP中,你只需安装一个调试工具,遇到问题时就可以调试,设置断点,逐步执行代码,检查变量等等。对我来说,这似乎是开发者或故障排除者最基本的工作。我买了WingIDE,这是一个很棒的工具和调试器,但由于某种原因,它无法连接到IIS进程中的Python实例,所以无法调试。我注意到Helicon启动Python时加了-O这个参数,所以我甚至重新编译了Python以忽略这个参数,但我的调试器(WingIDE)就是无法启动。

我可以在IIS上用半个小时搭建一个PHP的“你好,世界”网站,包括下载时间。我觉得我花了大约120个小时或更多的时间来让Python工作,但都没有成功。我买了《Programming Python》和《Learning Python》,总共大约3000页。我也在网上搜索到快累死。

我觉得Python是个很棒的语言,但我快要放弃我的尝试了。有没有人能给我一步一步的指导,教我如何在IIS7上设置这个?

5 个回答

3

这个问题已经有点时间了,之前的回答也比较旧(没有被接受的答案),所以这里提供一个更新的做法。下面的微软文档有一个详细的步骤指南,教你如何通过IIS来托管Python应用(看起来也适用于Azure App Services,不过微软建议使用Linux),这个方法是利用FastCGI(相比于2021年之前的CGI方法,FastCGI更好)。

简单来说就是:

  • 在Windows上安装Python
  • 根据https://pypi.org/project/wfastcgi/安装wfastcgi包
  • 配置你的web.config文件,让它指向你用的Python框架(比如Bottle、Flask、Django)

https://learn.microsoft.com/en-us/visualstudio/python/configure-web-apps-for-iis-windows?view=vs-2022

5

只要确保存放cgi脚本的文件夹路径里没有空格或者&符号就行。

我试了很多方法,折腾了好几天都没成功,后来我换了个路径,结果就好了。

更新:如果路径里有空格,就把路径用引号括起来,但%s %s部分不要加引号,像这样:

"C:\Program Files\Python36\python.exe" %s %s

144

我刚刚花了5分钟做完这个。

  1. 确保你有IIS(互联网信息服务)。可以运行这个命令:%windir%\system32\OptionalFeatures.exe。或者通过点击的方式:开始...控制面板...程序和功能...(然后在左边)打开或关闭Windows功能。确保在IIS选项下安装了CGI。

    这里输入图片描述

  2. python.org 下载Windows版的Python。我下载的是Python2.7。如果你的Windows是64位的,确保下载x64版本。

  3. 解压并安装这个Python的MSI文件。选择默认选项,这样Python会安装到 c:\Python27

  4. 创建一个文件夹来存放你的“开发”Python脚本。比如,c:\dev\python

  5. 设置 c:\dev\python 目录下文件的权限,让IIS可以读取和执行。可以通过命令行运行这两个icacls.exe命令来完成:

     cd \dev\python
     icacls . /grant "NT AUTHORITY\IUSR:(OI)(CI)(RX)"
     icacls . /grant "Builtin\IIS_IUSRS:(OI)(CI)(RX)"
    
  6. 打开IIS管理器。运行 %windir%\system32\inetsrv\iis.msc,或者通过控制面板:开始...控制面板...管理工具...互联网信息服务(IIS)管理器。创建一个新的应用程序。指定虚拟路径为 /py,物理路径为 c:\dev\python

    这里输入图片描述

    这里输入图片描述

  7. 在这个IIS应用程序中,为 *.py 添加一个脚本映射,并将其映射到 c:\python27\python.exe %s %s

    这里输入图片描述

    这里输入图片描述

    这里输入图片描述

  8. c:\dev\python 中创建一个名为“HelloWorld.py”的文件,内容如下:

     print('Content-Type: text/plain')
     print('')
     print('Hello, world!')
    
  9. 访问 http://localhost/py/helloworld.py

撰写回答