IIS上的Python:怎么样?

Rob*_*ert 58 python iis

我有PHP,dotNet的背景,并被Python迷住了.我想逐步将功能从PHP转换到Python,并排运行点点滴滴.在此过渡期间,自应用程序庞大以来可能需要2年时间,我将被绑定到IIS.我有15年的网络编程背景,包括在IIS上的ISAPI模块中的一些C工作,这是我不想再深入研究的工作.

似乎Python在IIS上运行不佳.我一直在努力使用FastCGI(不支持,仅适用于PHP)和PyIsapie(记录错误,无法启动并运行).最后我得到了它并使用HeliconZoo dll运行但是:

我的下一个问题是:如何调试/开发网站?在PHP中,您安装了一个调试器,每当您的网站出现问题时,您只需调试它,设置断点,逐步执行代码,检查手表等.在我看来,对于开发人员或故障排除者来说,这是最基本的工作类型.我买了WingIDE这是一个很好的工具和调试器,但由于某种原因它无法挂钩到IIS进程中的Python实例,所以没有调试.我注意到Helicon启动了Python,-O所以我甚至重新编译了Python以完全忽略这个标志,但我的调试器(WingIDE)不会出现.

我可以在半小时内在IIS上建立一个PHP"hello world"网站,包括下载时间.我想我已经花了大约120个小时或更长时间才能让Python工作无济于事.我已经购买了Python编程学习Python,大约有3000页.我用Google搜索直到我掉线.

我认为Python是一种很棒的语言,但我正处于中止尝试的边缘.是否有人可以给我一个关于如何在IIS7上进行设置的分步说明?

Che*_*eso 129

我只是在5分钟内做到了这一点.

  1. 确保你有IIS.跑:%windir%\system32\OptionalFeatures.exe.或者,通过尖头点击:开始...控制面板...程序和功能...(然后在左侧)打开或关闭Windows功能.确保在IIS节点下安装了CGI.

    在此输入图像描述

  2. 从python.org 下载Python for Windows.我抓住了Python2.7.如果您有x64版本的Windows,请确保获得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)"
    
    Run Code Online (Sandbox Code Playgroud)
  6. 打开IIS管理器.%windir%\system32\inetsrv\iis.msc通过控制面板运行或执行此操作:启动...控制面板...管理工具... Internet信息服务(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!')
    
    Run Code Online (Sandbox Code Playgroud)
  9. 调用 http://localhost/py/helloworld.py

  • 这实际上是在IIS上部署python应用程序的最糟糕方式.作为纯CGI运行意味着服务器必须在每个请求上创建新进程,这是狗缓慢的(如单个或两个数字rps顶部).使用ISAPI/FastCGI不再需要设置,并且工作方式更好. (4认同)
  • @Zart好吧,如果它更快,并且使用FastCGI设置起来同样容易,那么实现这一目标的步骤是什么(或哪些步骤不同?) (3认同)
  • python可执行文件后`%s%s`背后的细节是什么? (3认同)

YEH*_*YEH 5

只需确保保存 cgi 脚本的目录路径不包含空格或 &。

我尝试了很多事情很多天,但没有任何效果,然后我改变了路径,它起作用了

更新:如果有空格,请在路径周围加上引号,但不要像%s %s 这样:

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


say*_*yap -3

当您使用 Python 开发 Web 应用程序时,您不会使用 IIS/Apache 等。这些 Web 服务器仅用于部署。像 Pyramid/Pylons/Django 这样的框架都带有内置的 Web 服务器。Pyramid 尤其具有出色的文档,可以帮助您入门:http ://docs.pylonsproject.org/docs/pyramid.html

当您进行部署时,Linux + Apache 比 Windows + IIS 是更明智的选择。如果您绝对必须使用 Windows + IIS,请不要使用 isapi-wsgi,因为它存在幻象性能问题:http://groups.google.com/group/isapi_wsgi-dev/browse_thread/thread/9fade6efca6c5b89

PyISAPIe 对我来说已经足够好了,但我必须为 Python 2.7 编译我自己的 PyISAPIe.dll。

  • 问题不是使用什么替代方案,而是使用 IIS (14认同)