django是一款基于python语言的WEB开源框架,本文给出了如何将基于django写的python网站部署到window的IIS上。

笔者的运行环境:

原理解释:

IIS通过ISAPI可以扩展支持其他语言实现的WEB应用,isapi_wsgi-0.4.2-py2.5这个程序作为ISAPI实现了WSGI规范,

WSGI规范是作为python web应用与web服务容器之间的接口规范,通过这个程序,对IIS的某个虚拟站点的请求就可以定向

到这个ISAPI去处理,而无需为了去部署到某个特定容器里而去改动python web的任何代码。

步骤

  1. 先安装好IIS, Python, Django, setuptools, pywin32,  这些很简单。(将环境变量PATH里加入python的安装主目录)
  2. 下载isapi_wsgi-0.4.2-py2.5.egg文件   (这是python里的一种安装包,类似于Red Hat的RPM,当然你也可以下载exe或zip下载安装)
  3. 下载后,在命令行窗口输入:easy_install isapi_wsgi-0.4.2-py2.5.egg    (这里它会提示你安装成功,注意:必须安装setuptools才能运行该命令)
  4. 写一个部署脚本,名字假定为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网站应用的更多相关文章

  1. Web Server 在iis上部署webservice基于oracle

    在iis上部署webservice基于oracle 常见错误及解决方案: 原因: 先安装.netframework后安装iis造成的: 解决方案: 1.C:\Windows\Microsoft.NET ...

  2. WCF服务部署到IIS上,然后通过web服务引用方式出现错误的解决办法

    本文转载:http://www.cnblogs.com/shenba/archive/2012/01/06/2313932.html 昨天在用IIS部署一个WCF服务时,碰到了如下错误: 理解了文档内 ...

  3. Web Server 在IIS上部署ASP.NET Core项目

    在IIS上部署ASP.NET Core项目 一.配置应用程序池为无托管: 二.安装ASPNETCoreModule:(核心) 下载地址:https://go.microsoft.com/fwlink/ ...

  4. 教程:Visual Studio 中的 Django Web 框架入门

    教程:Visual Studio 中的 Django Web 框架入门 Django 是高级 Python 框架,用于快速.安全及可扩展的 Web 开发. 本教程将在 Visual Studio 提供 ...

  5. Express在windows IIS上部署详解

    最近公司在用Express+angularjs+wcf开发系统,让我在windows上部署系统,遇到不少问题,不过最后还是解决了,在IIS上部署系统, 首先windows需安装以下软件: 1.node ...

  6. 在IIS上部署(托管).NET Core站点

    部署教程 操作系统要求 Windows 7 或更高版本 Windows Server 2008 R2 或更高版本 依赖的组件 Runtime & Hosting Bundle   image. ...

  7. 在IIs上部署asp.net core2.1项目

    转自:https://www.cnblogs.com/jasonduan/p/9193702.html 在IIS上部署你的ASP.NET Core 2.1项目   1.在控制面板→程序→启用或关闭Wi ...

  8. [oldboy-django][1初始django]web框架本质 + django框架 + ajax

    web框架本质 浏览器(socket客户端) - 发送请求(ip和端口,url http://www.baidu.com:80/index/) - GET 请求头(数据请求行的url上: Http1. ...

  9. .NET开发框架(五)-IIS上部署ASP.NET Core项目教程

    系列教程:从初学者到架构师的一步步蜕变 本篇经验将和大家介绍如何在IIS上部署ASP.NET Core项目,希望对初学.NET CORE的童靴入门有所帮助! 1.打开VS,创建项目,选择ASP.NET ...

随机推荐

  1. spring学习之一概念

    概念 1.是开源的轻量级框架 2.是一站式框架,就是说在java ee的三层结构中,每一层它都提供了不同的解决技术 web层:springMVC servoce层:spring IOC ,控制反转,通 ...

  2. Flask:初次使用Flask-SQLAlchemy读取SQLite3

    Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2,Eclipse Oxygen.1a Release (4.7.1a),PyDev 6.3.2 SQLAlchemy是一 ...

  3. 大数据竞赛平台——Kaggle 入门(转)

    先马克一下:http://blog.csdn.net/u012162613/article/details/41929171

  4. redis tutorail

    命令 set     get    incr expire  秒  ttl    -1 不会过期 list  : lpush  rpush  lpop  rpop   lrange   llen se ...

  5. MySQL学习笔记:三种组内排序方法

    由于MySQ没有提供像Oracle的dense_rank()或者row_number() over(partition by)等函数,来实现组内排序,想实现这个功能,还是得自己想想办法,最终通过创建行 ...

  6. Linux同步互斥(Peterson算法,生产者消费者模型)

    同步 两个或两个以上随时间变化的量在变化过程中保持一定的相对关系. 互斥 对一组并发进程,一次只有一个进程能够访问一个给定的资源或执行一个给定的功能. 互斥技术可以用于解决诸如资源争用之类的冲突,还可 ...

  7. atomikos + druid 连接超时失效

    atomikos + druid 连接超时失效,需要多次连接才能成功. 首次连接会报异常: 2018-01-08 16:58:12 DEBUG [com.jpcar.model.dao.jpcar.A ...

  8. bzoj 3926 转换+广义后缀自动机

    思路:重点在于叶子节点只有20个,我们把叶子节点提到根,把20个trie图插入后缀自动机,然后就是算有多少个本质不同的字串. #include<bits/stdc++.h> #define ...

  9. Ionic Js二十:选项卡栏操作

    ion-tabs ion-tabs 是有一组页面选项卡组成的选项卡栏.可以通过点击选项来切换页面. 对于 iOS,它会出现在屏幕的底部,Android会出现在屏幕的顶部(导航栏下面). 用法 < ...

  10. centos6 yum 安装nginx 不成功解决办法

    转自  http://wlheihei.com/view/64 [root@51ou.com yum.repos.d]# yum install nginxLoaded plugins: fastes ...