在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 相关文章推荐
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
python实现从网络下载文件并获得文件大小及类型的方法
Apr 28 Python
关于numpy中np.nonzero()函数用法的详解
Feb 07 Python
Python编程之序列操作实例详解
Jul 22 Python
Python学习小技巧总结
Jun 10 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
Python hashlib模块加密过程解析
Nov 05 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
Mar 13 Python
Python selenium爬取微博数据代码实例
May 22 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
Aug 03 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
PHP迭代器的内部执行过程详解
2013/11/12 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
ImageZoom 图片放大镜效果(多功能扩展篇)
2010/04/14 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
简介JavaScript中getUTCMonth()方法的使用
2015/06/10 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
Python3并发写文件与Python对比
2019/11/20 Python
Python绘图实现显示中文
2019/12/04 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
初中数学教学反思
2014/01/16 职场文书
校长先进事迹材料
2014/02/01 职场文书
产品销售计划书
2014/05/04 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
打架检讨书
2015/01/27 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
怎样写好工作计划
2019/04/10 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
详解jQuery的核心函数和事件处理
2022/02/18 jQuery
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server