在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采集博客中上传的QQ截图文件
Jul 18 Python
使用django-suit为django 1.7 admin后台添加模板
Nov 18 Python
Python单元测试框架unittest简明使用实例
Apr 13 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
python关于变量名的基础知识点
Mar 03 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
Python 中如何使用 virtualenv 管理虚拟环境
Jan 21 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 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捕获Fatal error错误的方法
2014/06/11 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
php中smarty实现多模版网站的方法
2015/06/11 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
Yii 2.0如何使用页面缓存方法示例
2017/05/23 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
ES6 十大特性简介
2020/12/09 Javascript
python中ConfigParse模块的用法
2014/09/29 Python
PyQt Qt Designer工具的布局管理详解
2019/08/07 Python
tensorflow对图像进行拼接的例子
2020/02/05 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
Python实现对adb命令封装
2020/03/06 Python
python实现简单的学生管理系统
2021/02/22 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
业务总经理岗位职责
2014/02/03 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
2016年小学中秋节活动总结
2016/04/05 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫