在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冒泡排序算法的实现代码
Nov 21 Python
Python Web框架Flask中使用新浪SAE云存储实例
Feb 08 Python
python用pickle模块实现“增删改查”的简易功能
Jun 07 Python
一文总结学习Python的14张思维导图
Oct 17 Python
Python之ReportLab绘制条形码和二维码的实例
Jan 15 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
对Python 语音识别框架详解
Dec 24 Python
python自动化之Ansible的安装教程
Jun 13 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
numpy.random.shuffle打乱顺序函数的实现
Sep 10 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
Feb 22 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
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
php 多个submit提交表单 处理方法
2009/07/07 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
学习ExtJS 访问容器对象
2009/10/07 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
python线程锁(thread)学习示例
2013/12/04 Python
python获取android设备的GPS信息脚本分享
2015/03/06 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
Dlib+OpenCV深度学习人脸识别的方法示例
2019/05/14 Python
解决Mac下使用python的坑
2019/08/13 Python
Python属性和内建属性实例解析
2020/01/14 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
python通过cython加密代码
2020/12/11 Python
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
大学生蛋糕店创业计划书
2014/01/13 职场文书
公司离职证明范本(汇总)
2014/09/10 职场文书
中学生自我评价范文
2015/03/03 职场文书
2015个人半年总结范文
2015/03/09 职场文书
Python实现日志实时监测的示例详解
2022/04/06 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python