在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操作摄像头截图实现远程监控的例子
Mar 25 Python
Python引用(import)文件夹下的py文件的方法
Aug 26 Python
使用Python程序抓取新浪在国内的所有IP的教程
May 04 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
python和opencv实现抠图
Jul 18 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
tensorflow如何批量读取图片
Aug 29 Python
django model object序列化实例
Mar 13 Python
pandas统计重复值次数的方法实现
Feb 20 Python
python实现A*寻路算法
Jun 13 Python
Python实现Hash算法
Mar 18 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
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
javascript dom 基本操作小结
2010/04/11 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
django如何连接已存在数据的数据库
2018/08/14 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
华为c/c++笔试题
2016/01/25 面试题
网络教育毕业生自我鉴定
2013/10/10 职场文书
总经理驾驶员岗位职责
2013/12/04 职场文书
项目计划书范文
2014/01/09 职场文书
档案接收函
2014/01/13 职场文书
宿舍违规用电检讨书
2014/02/16 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
求职个人评价范文
2014/04/09 职场文书
12岁生日演讲稿
2014/05/14 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
生活部的活动方案
2014/08/19 职场文书
升学宴答谢词
2015/01/05 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
2016年妇联“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书