在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实现代码行数统计示例分享
Feb 10 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
CentOS7.3编译安装Python3.6.2的方法
Jan 22 Python
python模仿网页版微信发送消息功能
Feb 24 Python
Python FTP两个文件夹间的同步实例代码
May 25 Python
浅谈Python的list中的选取范围
Nov 12 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
python tornado使用流生成图片的例子
Nov 18 Python
使用Python将语音转换为文本的方法
Aug 10 Python
Python Matplotlib绘图基础知识代码解析
Aug 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数组操作汇总 php数组的使用技巧
2011/07/17 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
Koa2微信公众号开发之消息管理
2018/05/16 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
python生成日历实例解析
2014/08/21 Python
python中os操作文件及文件路径实例汇总
2015/01/15 Python
Python实现的rsa加密算法详解
2018/01/24 Python
Python装饰器用法示例小结
2018/02/11 Python
Python callable()函数用法实例分析
2018/03/17 Python
python psutil模块使用方法解析
2019/08/01 Python
详解如何减少python内存的消耗
2019/08/09 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
美国折扣网站:jClub
2017/08/07 全球购物
香港礼品网站:GiftU eshop
2017/09/01 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
社区服务活动小结
2014/07/08 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
公司股东合作协议书
2014/09/14 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
慰问信范文
2015/02/14 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
python实现简单石头剪刀布游戏
2021/10/24 Python