python - 如何在 IIS 上使用 CGI 部署 Python 应用程序?
问题描述
我是 python 新手,我尝试在 IIS 上部署一个简单的 hello python 应用程序,我遵循了这个 URL
https://support.sisense.com/hc/en-us/community/posts/115007362727-Installing-Python-on-IIS
你好.py
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'
但是,它的错误如下所述
HTTP Error 401.3 - Unauthorized
You do not have permission to view this directory or page because of the access control list (ACL) configuration or encryption settings for this resource on the Web server
我觉得这个问题可能与权限无关,因为我可以浏览 hello.html
我尝试了 SO 中提供的一些解决方案来解决这个问题,但没有任何效果。非常感谢任何帮助
解决方案
要使用 IIS 配置 Python,您可以尝试按照以下步骤操作:
- 下载最新的 Python 版本,因为 IIS 不能与 python 旧版本一起使用。
https://www.python.org/downloads/windows/
- 下面是
hello.py
文件:
print("Content-type:text/html\r\n\r\n")
print('<html>')
print('<head>')
print('<title>Hello Word - First CGI Program</title>')
print('</head>')
print('<body>')
print('<h2>Hello Word! This is my first CGI program</h2>')
print('</body>')
print('</html>')
- 启用 IIS CGI 功能。
- 打开 IIS 管理器。右键单击服务器名称并选择添加站点。
- 添加站点绑定详细文件夹路径(python 文件夹)
- 选择一个站点并单击中间窗格中的处理程序映射。
- 单击操作窗格中的添加脚本映射。
- 添加脚本映射值。
*.py
,并将其映射到c:\Python37-32\python.exe %s %s
。
确保启用目录浏览。
web.config
文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="python" path="*.py" verb="*" modules="CgiModule" scriptProcessor="C:\Python37-32\python.exe %s %s" resourceType="File" />
</handlers>
<directoryBrowse enabled="true" />
</system.webServer>
</configuration>
设置站点文件夹( )iis_iusrs
和python 文件夹( )iusr
的权限。确保启用匿名身份验证,并将应用程序池设置为应用程序池标识。完成所有更改后,重新启动 IIS 服务器并浏览该站点。c:\pythonapp
C:\Python37-32
推荐阅读
- visual-studio - 无法从 Visual Studio 2019 发布到 Azure Functions
- php - 如何在 ubuntu 的 php 脚本中获取程序(c、c++、java、python、php)的执行时间和内存使用情况?
- mongodb - 通过sailsjs将mongodb中的数据从旧模式迁移到新模式
- chart.js - Chart.js - 如何隐藏线外的网格线
- c# - 设置数组时如何将数组中的一个元素设置为null?
- angular - 如何在 Angular 6 中将焦点设置在整个应用程序中每个页面上的第一个输入字段上
- python - “如果 x == True”和“如果 x:”有什么区别?
- groovy - 所需 Avro Schema 的相应“Groovy”映射 - divolte
- android - 访问范围为导航图的“Activity”内的“ViewModel”
- c# - 如何在 .NET Core 中计算内部收益率 (IRR)