在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的web框架中配置app的教程
Apr 30 Python
Python实现登录人人网并抓取新鲜事的方法
May 11 Python
tensorflow实现简单的卷积神经网络
May 24 Python
Python交互环境下实现输入代码
Jun 22 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
python字符串中匹配数字的正则表达式
Jul 03 Python
numpy ndarray 取出满足特定条件的某些行实例
Dec 05 Python
keras导入weights方式
Jun 12 Python
MATLAB数学建模之画图汇总
Jul 16 Python
10个示例带你掌握python中的元组
Nov 23 Python
Python 实现二叉查找树的示例代码
Dec 21 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
Terran兵种对照表
2020/03/14 星际争霸
深入浅析php中sprintf与printf函数的用法及区别
2016/01/08 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
微信小程序实现图片预加载组件
2017/01/18 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
2017/04/07 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
[01:05:32]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第一局
2016/03/04 DOTA
简单了解OpenCV是个什么东西
2017/11/10 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
python 使用pandas计算累积求和的方法
2019/02/08 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
python web框架中实现原生分页
2019/09/08 Python
python实现一个猜拳游戏
2020/04/05 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
教学实习自我评价
2014/01/28 职场文书
酒店行政人事部经理职务说明书
2014/02/26 职场文书
中学生操行评语
2014/04/24 职场文书
月考总结与反思
2015/10/22 职场文书
2016年小学中秋节活动总结
2016/04/05 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang
分析Netty直接内存原理及应用
2021/06/14 Java/Android