在IIS上部署基于django WEB框架的python网站应用
django是一款基于python语言的WEB开源框架,本文给出了如何将基于django写的python网站部署到window的IIS上。
笔者的运行环境:
- Window xp sp3
- IIS 5.1
- Python 2.7.2 (http://www.python.org/)
- pywin32-217.win32-py2.7 (python的win32扩展)
- Django-1.3.1 (https://www.djangoproject.com/)
- isapi_wsgi-0.4.2-py2.5 (http://code.google.com/p/isapi-wsgi/ ,基于IIS的ISAPI扩展的WSGI实现).
- setuptools-0.6c11.win32-py2.7
原理解释:
IIS通过ISAPI可以扩展支持其他语言实现的WEB应用,isapi_wsgi-0.4.2-py2.5这个程序作为ISAPI实现了WSGI规范,
WSGI规范是作为python web应用与web服务容器之间的接口规范,通过这个程序,对IIS的某个虚拟站点的请求就可以定向
到这个ISAPI去处理,而无需为了去部署到某个特定容器里而去改动python web的任何代码。
步骤
- 先安装好IIS, Python, Django, setuptools, pywin32, 这些很简单。(将环境变量PATH里加入python的安装主目录)
- 下载isapi_wsgi-0.4.2-py2.5.egg文件 (这是python里的一种安装包,类似于Red Hat的RPM,当然你也可以下载exe或zip下载安装)
- 下载后,在命令行窗口输入:easy_install isapi_wsgi-0.4.2-py2.5.egg (这里它会提示你安装成功,注意:必须安装setuptools才能运行该命令)
- 写一个部署脚本,名字假定为wsgi_deploy.py (假定你的web project 目录为 C:\Web, 在Web目录下有一个App为mysite) ,目录一定不要弄错,否则容易出现HTTP 500错误。
import os, sys sys.path.append(‘C:\\Web') os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
import isapi_wsgi # The entry points for the ISAPI extension. def __ExtensionFactory__(): return isapi_wsgi.ISAPISimpleHandler(application)
if __name__=='__main__': # If run from the command-line, install ourselves. from isapi.install import * params = ISAPIParameters() # Setup the virtual directories - this is a list of directories our # extension uses - in this case only 1. # Each extension has a "script map" - this is the mapping of ISAPI # extensions. sm = [ ScriptMapParams(Extension="*", Flags=0) ] vd = VirtualDirParameters(Name="mysite", Description = "ISAPI-WSGI ISAPISimpleHandler Django mysite", ScriptMaps = sm, ScriptMapUpdate = "replace" ) params.VirtualDirs = [vd] HandleCommandLine(params)
5. 在命令行输入: wsgi_deploy.py install ,运行之后会在IIS上创建上面脚本定义的虚拟路径"mysite", 同时你会发现一个'_wsgi_deploy.dll'文件会创建出来,这个就是ISAPI。
细心的读者不妨在IIS的"mysite“的设置里去查看下就明白了。

6.部署后,既可以通过浏览器访问你的Web App了

注:如果出现错误,如何处理?

可以在命令行输入: python -m win32traceutil 便可以输出isapi_wsgi模块输出的错误堆栈信息
通常错误都是出现在路径方面。如类似于
ImportError: Could not import settings 'mysite.settings' (Is it on sys.path?): N o module named mysite.settings 这样的问题。
这样的情况,需要去找到上述的部署脚本wsgi_deploy.py,去修改为正确的配置,然后记住需要先运行
wsgi_deploy.py remove后再运行wsgi_deploy.py install。
参考:http://code.google.com/p/isapi-wsgi/
在IIS上部署基于django WEB框架的python网站应用的更多相关文章
- Web Server 在iis上部署webservice基于oracle
在iis上部署webservice基于oracle 常见错误及解决方案: 原因: 先安装.netframework后安装iis造成的: 解决方案: 1.C:\Windows\Microsoft.NET ...
- WCF服务部署到IIS上,然后通过web服务引用方式出现错误的解决办法
本文转载:http://www.cnblogs.com/shenba/archive/2012/01/06/2313932.html 昨天在用IIS部署一个WCF服务时,碰到了如下错误: 理解了文档内 ...
- Web Server 在IIS上部署ASP.NET Core项目
在IIS上部署ASP.NET Core项目 一.配置应用程序池为无托管: 二.安装ASPNETCoreModule:(核心) 下载地址:https://go.microsoft.com/fwlink/ ...
- 教程:Visual Studio 中的 Django Web 框架入门
教程:Visual Studio 中的 Django Web 框架入门 Django 是高级 Python 框架,用于快速.安全及可扩展的 Web 开发. 本教程将在 Visual Studio 提供 ...
- Express在windows IIS上部署详解
最近公司在用Express+angularjs+wcf开发系统,让我在windows上部署系统,遇到不少问题,不过最后还是解决了,在IIS上部署系统, 首先windows需安装以下软件: 1.node ...
- 在IIS上部署(托管).NET Core站点
部署教程 操作系统要求 Windows 7 或更高版本 Windows Server 2008 R2 或更高版本 依赖的组件 Runtime & Hosting Bundle image. ...
- 在IIs上部署asp.net core2.1项目
转自:https://www.cnblogs.com/jasonduan/p/9193702.html 在IIS上部署你的ASP.NET Core 2.1项目 1.在控制面板→程序→启用或关闭Wi ...
- [oldboy-django][1初始django]web框架本质 + django框架 + ajax
web框架本质 浏览器(socket客户端) - 发送请求(ip和端口,url http://www.baidu.com:80/index/) - GET 请求头(数据请求行的url上: Http1. ...
- .NET开发框架(五)-IIS上部署ASP.NET Core项目教程
系列教程:从初学者到架构师的一步步蜕变 本篇经验将和大家介绍如何在IIS上部署ASP.NET Core项目,希望对初学.NET CORE的童靴入门有所帮助! 1.打开VS,创建项目,选择ASP.NET ...
随机推荐
- spring学习之一概念
概念 1.是开源的轻量级框架 2.是一站式框架,就是说在java ee的三层结构中,每一层它都提供了不同的解决技术 web层:springMVC servoce层:spring IOC ,控制反转,通 ...
- Flask:初次使用Blueprints
Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2,Eclipse Oxygen.1a Release (4.7.1a),PyDev 6.3.2 本文为记录自己第一次使用 ...
- python网络编程-socket上传下载文件(包括md5验证,大数据发送,粘包处理)
ftp server 1) 读取文件名 2)检查文件是否存在 3)打开文件 4)检查文件大小 5)发送文件大小给客户端 6)等客户端确认 7)开始边读边(md5计算)发数据 8)给客户端发md5 ft ...
- SNMP相关命令
SNMP的相关命令使用方法: snmpdelta 一直监视SNMP变量中的变化 linux:~ # snmpdelta -c public -v 1 -Cs -CT localhost IF-MIB: ...
- Android studio 安装过程中遇到的问题
之前用eclipse,想换下studio试试,安装时遇到问题,参考:http://www.cnblogs.com/csulennon/p/4178404.html
- Java - 利用StringEscapeUtils对字符串进行各种转义与反转义
来自:http://blog.csdn.net/chenleixing/article/details/43456987 --------------------------------------- ...
- Zookeeper安装以及配置说明(三)
Zookeeper的安装和配置非常的简单,既可以配置成单机模式,也可以配置成集群模式.如下图所示: 下面将分别进行介绍: 单机模式 下载最新稳定版本zookeeper的安装包之后(看第一篇博文), 解 ...
- Oracle学习笔记:ORA-22992 cannot use LOB locators selected from remote tables
通过DB_LINK访问远程表的时候出现 ORA-22992: cannot use LOB locators selected from remote tables 错误. 原因:因为表中含有clob ...
- sass问题
用sass的minix定义一些代码片段,且可传参数 /** * @module 功能 * @description 生成全屏方法 * @method fullscreen * @version 1. ...
- CentOS下用yum命令安装jdk
一.使用yum命令安装 1.查看是否已安装JDK,卸载 [root@192 ~]# yum list installed |grep java java-1.8.0-openjdk.x86_64 ...