在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实现数通设备tftp备份配置文件示例
Apr 02 Python
python对字典进行排序实例
Sep 25 Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
基于python 二维数组及画图的实例详解
Apr 03 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
对django views中 request, response的常用操作详解
Jul 17 Python
一行python实现树形结构的方法
Aug 09 Python
python matplotlib折线图样式实现过程
Nov 04 Python
利用python实现PSO算法优化二元函数
Nov 13 Python
django 实现手动存储文件到model的FileField
Mar 30 Python
python判断正负数方式
Jun 03 Python
Python grequests模块使用场景及代码实例
Aug 10 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
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
php7安装mongoDB扩展的方法分析
2017/08/02 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
Vue.JS入门教程之处理表单
2016/12/01 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
javascript兼容性(实例讲解)
2017/08/15 Javascript
vue父组件向子组件动态传值的两种方法
2017/11/11 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
python3中int(整型)的使用教程
2017/03/23 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
python的range和linspace使用详解
2019/11/27 Python
Python中url标签使用知识点总结
2020/01/16 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
银行个人求职自荐信范文
2013/12/16 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书