在IIS服务器上以CGI方式运行Python脚本的教程


Posted in Python onApril 25, 2015

由于接触到Python Web开发,正好把最简单的CGI方式研究了一下,话说在Windows下配置Python的Web开发还真的蛮麻烦的,Linux下配置倒挺容易,正好微软有技术文章《Using Python Scripts with IIS》介绍了这些内容,此文介绍了两种方法,一是使用ASP引擎来运行Python脚本,这个可能需要用到ActivePython,当然ASP技术已经过时了,我今天就简单介绍下CGI模块运行方式。

编写简单的支持CGI的Python脚本(本文介绍3.2版本的Python):

print("Status: 200 OK")
print("Content-type: text/html")
print() # 打印一行空白行,用于分隔HTTP Header和正文
 
print("<h1>Hello World!</h1>")

这样就可以了,大家可以猜出CGI是将标准输出流重新定向到HTTP输出流来实现网页或者数据传输的。

当然这个在IIS中是不能直接运行的,我们需要配置一下,打开Internet 信息服务(IIS)管理器界面,选择“处理程序映射”。

在IIS服务器上以CGI方式运行Python脚本的教程

在接下来出现的界面右侧选择“添加模块映射”。

IIS7添加模块映射

在IIS服务器上以CGI方式运行Python脚本的教程

假设我们的Python 3.2安装于C:\Python32,那么可以向下图这样填写:

在IIS服务器上以CGI方式运行Python脚本的教程

然后点击确定,在接下来出现的对话框选择“是”。

在IIS服务器上以CGI方式运行Python脚本的教程

好了,我们的配置完成了,重启一下IIS,然后赶快试试刚才的代码吧。可能有人会抱怨,用CGI编写网页一旦报错调试会比较麻烦,比如报下面的错误:

HTTP 错误 502.2 - Bad Gateway

指定的 CGI 应用程序由于未返回完整的一组 HTTP 头而产生错误行为。它实际返回的头是“Traceback (most recent call last): File "E:\projects\test.py", line 3, in <module> 1/0 ZeroDivisionError: division by zero ”。

其实我们只需要在最开始引入import cgitb; cgitb.enable()就可以了,就像下面这样:

import cgitb; cgitb.enable()
print("Status: 200 OK")
print("Content-type: text/html")
print() # 打印一行空白行,用于分隔HTTP Header和正文
 
print("<h1>Hello World!</h1>")

这样一旦出错,就会以友好的方式将错误输出来。

在IIS服务器上以CGI方式运行Python脚本的教程

对于表单的处理,可以参考import cgi模块(cgi.FieldStorage),网上有很多此方面的介绍,我就不多说了,Enjoy it!

Python 相关文章推荐
python socket 超时设置 errno 10054
Jul 01 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
python购物车程序简单代码
Apr 18 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
python判断完全平方数的方法
Nov 13 Python
pandas通过loc生成新的列方法
Nov 28 Python
Python中sorted()排序与字母大小写的问题
Jan 14 Python
Keras - GPU ID 和显存占用设定步骤
Jun 22 Python
Python使用Selenium实现淘宝抢单的流程分析
Jun 23 Python
python实现取余操作的简单实例
Aug 16 Python
Python 实现绘制子图及子图刻度的变换等问题
May 31 Python
研究Python的ORM框架中的SQLAlchemy库的映射关系
Apr 25 #Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 #Python
Python实现单词拼写检查
Apr 25 #Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
Apr 25 #Python
使用PDB简单调试Python程序简明指南
Apr 25 #Python
Python脚本判断 Linux 是否运行在虚拟机上
Apr 25 #Python
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
Apr 25 #Python
You might like
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
2017/10/19 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
js模拟百度模糊搜索的实例
2017/08/04 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
总结4个方面优化Vue项目
2019/02/11 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
python单例模式的多种实现方法
2019/07/26 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
个人求职信范例
2014/01/29 职场文书
如何撰写创业策划书
2019/06/27 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis
Python简易开发之制作计算器
2022/04/28 Python
php解析非标准json、非规范json的方式实例
2022/05/10 PHP
Mysql开启外网访问
2022/05/15 MySQL