在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绘制MySQL数据图实现数据可视化
Mar 30 Python
Python加pyGame实现的简单拼图游戏实例
May 15 Python
Python标准库之collections包的使用教程
Apr 27 Python
pygame游戏之旅 按钮上添加文字的方法
Nov 21 Python
5分钟 Pipenv 上手指南
Dec 20 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 Python
Python实现的排列组合、破解密码算法示例
Apr 12 Python
Python matplotlib以日期为x轴作图代码实例
Nov 22 Python
Python pip配置国内源的方法
Feb 14 Python
python爬取微博评论的实例讲解
Jan 15 Python
看看如何用Python绘制小米新版天价logo
Apr 20 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 算法之实现相对路径的实例
2017/10/17 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
2019/06/17 PHP
JS冒泡事件的快速解决方法
2013/12/16 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
javascript获取网页各种高宽及位置的方法总结
2016/07/27 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
深入浅析Vue中的Prop
2018/06/10 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
手把手教你 CKEDITOR 4 实现Dialog 内嵌 IFrame操作详解
2019/06/18 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中title()方法的使用简介
2015/05/20 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
详解Python:面向对象编程
2019/04/10 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
Python内置异常类型全面汇总
2020/05/28 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
PHP如何调用MYSQL存储过程
2014/05/30 面试题
财务会计毕业生自荐信
2013/11/02 职场文书
办公室保洁员岗位职责
2013/12/02 职场文书
保安拾金不昧表扬信
2014/01/15 职场文书
旅游管理专业大学生职业规划书
2014/02/27 职场文书
《狼和小羊》教学反思
2014/04/20 职场文书
高一新生军训方案
2014/05/12 职场文书
会计岗位说明书
2014/07/29 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
转学证明范本
2015/06/19 职场文书
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL