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的任何代码。

步骤

  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. 在IIS上部署ASP.NET Core Web API

    目录 Visual Studio 2019和Dot Net Core 3.0 Windows Server上的Dot Net Core运行时 在服务器上启用IIS IIS应用程序池 IIS网站 创建A ...

  2. Asp.Net Web Api 部署------在云服务器IIS上部署Web Api程序

    Asp.Net Web Api 部署------在云服务器IIS上部署Web Api程序 本人Web Api程序框架选择的是.Net 5.0 一.在服务器上安装运行时RunTime,.Net 5 运行 ...

  3. Django Web框架教学笔记-1

    <Django Web框架教学笔记> 目录 文章目录 <Django Web框架教学笔记> 目录 Django框架的介绍 Django的安装 Django框架开发 创建项目的指 ...

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

    在之前教程中,我们分享了框架的功能与视频演示介绍(文尾底部提供往期教程快捷链接) 系列教程:从初学者到架构师的一步步蜕变 本篇经验将和大家介绍如何在IIS上部署ASP.NET Core项目,希望对初学 ...

  5. ASP.NET报错集合一----.net4.0创建项目后,在iis上部署项目,无法浏览,提示404

    前言:这些错误纯属自己在开发项目的时候遇到的问题,比较有针对性.如果有解决不了的问题,请勿喷. 问题描述: .net4.0创建项目后,在iis上部署项目,无法浏览,提示404 搭建项目的环境: 项目是 ...

  6. Django web 框架学习之旅(3)

    <Django Web 框架> 目录 静态文件 Django中的应用 - app 什么是应用(app) 创建应用app Django应用的结构组成 数据库 和 模型 Django下使用my ...

  7. 【学习笔记asp.net】WebService创建、发布及在IIS上部署

    本系列主要记录我在工作中遇到问题时,查阅收集到的各类博主的解决方案.新手主要做的是记录学习实践,并不做其它评价.涉及到版权问题的,请博主联系删除. 最近做的mvc项目需要在两个内外网项目之间再加一个w ...

  8. Django web框架学习之旅(4)

    <Django Web 框架> 目录 Django shell的使用 admin 后台数据库管理 自定义后台管理数据表 修改后台Models的展现形式 模型管理器类 数据库表管理 数据表关 ...

  9. ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法

    ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法(转载) 10小时前 ASP.NET在IIS上部署使用Oracle数据库无法连接数据库解决方法(转载) 分类: ASP.NET| ...

最新文章

  1. Luogu 4438 [HNOI/AHOI2018]道路
  2. 【Interfacenavigation】通知概述(36)
  3. leetcode--Reverse Integer
  4. 水星逆行,诸事不宜,瞬间爆炸。
  5. Windows中使用PowerShell+任务计划程序实现Mysql数据之间的同步
  6. Eclipse(javaweb)刚换工作空间之后,应该做哪几件事
  7. Hadoop 2.7集群环境搭建
  8. Java NIO原理和使用
  9. 线段树优化的Dijkstra
  10. android页面布局更改,使用setContentView的方式更换布局文件从而更换界面
  11. python代做在哪找靠谱_比较靠谱的资产评估师考试去哪找
  12. 设置网页打开默认全屏_微信公众号里的视频不能进行全屏播放的解决方法
  13. 断点续传的原理剖析与实例讲解
  14. .NET下使用ufun函数取CAM操作的进给速度
  15. SQL那些事儿(十一)--ODBC,OLE-DB,ADO.NET区别
  16. 微信小程序添加激励式广告
  17. Python 常用迭代函数总结
  18. 命令提示符(文件操作基础)
  19. 如果可能,与孤独为友!
  20. 基于深度学习的目标检测模型(基于候选区域的方法)

热门文章

  1. Add A Qdisk After configure RHCS
  2. 移动端自动化==Appium定位方式总结
  3. vue使用px2rem
  4. webpack组织模块的原理 - 基础篇
  5. Windows2008/2012多用户同时远程连接终端服务授权
  6. 重装系统最关键一步:如何做好备份
  7. Java 7代码层面上的更新
  8. 招聘带来的Silverlight团队技能指标
  9. SQL IN 一定走索引吗?
  10. 「回顾」网易数据基础平台建设