在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批量生成本地ip地址的方法
Mar 23 Python
python实用代码片段收集贴
Jun 03 Python
在Python中定义和使用抽象类的方法
Jun 30 Python
在Python 中实现图片加框和加字的方法
Jan 26 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
python将字典列表导出为Excel文件的方法
Sep 02 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
Sep 09 Python
python实现在列表中查找某个元素的下标示例
Nov 16 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变量可用字符
2014/05/28 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
jquery 回车事件实现代码
2011/08/23 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
javascript数组去重常用方法实例分析
2017/04/11 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
[05:48]DOTA2英雄梦之声vol21 屠夫
2014/06/20 DOTA
Python备份Mysql脚本
2008/08/11 Python
python计算N天之后日期的方法
2015/03/31 Python
Python socket实现简单聊天室
2018/04/01 Python
浅谈Python中的bs4基础
2018/10/21 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
利用python开发app实战的方法
2019/07/09 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
mysql有关权限的表都有哪几个
2015/04/22 面试题
幼师自荐信范文
2013/10/06 职场文书
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
ES6 解构赋值的原理及运用
2021/05/25 Javascript
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python