Python开发入门与实战15IIS部署

15. IIS部署

前面的章节我们完成了基本的业务功能的开发,本章节我们来说说python django项目如何部署到实际的运行环境,完成开发系统的发布工作。

Python Django 项目部署发布到windows iis环境,运行环境如下:

操作系统:windows 8.1

IIS版本:8.5

Python版本:2.7

Django版本:1.4

15.1. IIS服务添加CGI组件

在操作系统的启用或关闭windows功能里添加IIS CGI组件,如已添加忽略。

Python开发入门与实战15IIS部署

15.2. IIS服务添加FAST CGI组件

打开IIS管理器时,系统会提示如下图,选择是:

Python开发入门与实战15IIS部署

或者访问网址:http://www.microsoft.com/web/downloads/platform.aspx,进入web安装平台程序,搜索FastCGI关键字。

Python开发入门与实战15IIS部署

Python开发入门与实战15IIS部署

 

安装WFastCGI2.1Gateway for IIS and Python 2.7.9组件,安装完成后在C:\Python27\Scripts\目录下会增加wfastcgi.py文件。

Python开发入门与实战15IIS部署

15.3. 拷贝wfastcgi.py文件到项目manage.py相同目录下

把项目文件拷贝到C:\inetpub\wwwroot\mysite目录下,同时,wfastcgi.py到本目录下。

Python开发入门与实战15IIS部署

15.4. IIS创建站点

我们把项目文件拷贝到IIS 的wwwroot目录下,创建IIS站点,如下图:

Python开发入门与实战15IIS部署

笔者注:IIS的项目发布目录最好在wwwroot下,可以避免很多windows权限问题。

15.5. 添加处理程序映射

IIS 管理器中选择站点mysite,选中该站点的“处理程序映射”设置。

Python开发入门与实战15IIS部署

在“处理程序映射”设置中,右键选择“添加模块映射”菜单。

Python开发入门与实战15IIS部署

Python开发入门与实战15IIS部署

如上图,输入完配置信息后,点击“确定”按。系统会弹出如下提示框:

Python开发入门与实战15IIS部署

“要为此可执行文件创建 FastCGI 应用程序吗? 单击“是”将此项添加到 FastCGI 集合中,以及允许此可执行文件作为 FastCGI 应用程序运行。”

点击[是]

15.6. 修改我们的web.config文件只保留如下代码

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated web.config for Microsoft Azure. Remove this comment to prevent
     modifications being overwritten when publishing the project.
-->
<configuration>
  <appSettings>
    <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()" />
    <add key="PYTHONPATH" value="%ROOTDIR%" />
    <add key="DJANGO_SETTINGS_MODULE" value="mysite.settings" />
  </appSettings>

</configuration>

完成部署,在IIS管理器中重新启动mysite站点。

15.7. 访问发布的网站

Python开发入门与实战15IIS部署

我们访问基于模板的页面,页面是能正常访问的,但是访问基于Extjs的inventoryQueryExtjs页面,页面不能正常显示。这是Extjs相关的静态文件目录没有正常部署的缘故。

15.8. 静态文件部署

根据setting.py静态文件目录的配置,我们项目目录下创建一个static的文件目录

Python开发入门与实战15IIS部署

在cmd命令窗口进入到项目目录下,执行命令:

python manage.py collectstatic

Python开发入门与实战15IIS部署

然后,在iis管理器mysite站点下添加static虚拟目录:

Python开发入门与实战15IIS部署

注:最后删除虚拟目录处理程序映射中的Django handler处理器。

Python开发入门与实战15IIS部署

我们再访问网站的inventoryQueryExtjs页面,页面正常显示,现在完成了示例网站的IIS发布工作。

Python开发入门与实战15IIS部署

15.9. 小结

本章节我们完成了在IIS平台部署我们的django项目,采用的是“处理程序映射”的Fast CGI来实现django项目的解析处理。下一章节我们将描述如何部署django 的windows apache平台。

更多相关文章
  • 作者:田逸([email protected]) 按:这是一篇命题作文,是应一位同行兄弟的邀请而作此文.他告诉我,目前他跟开发的关系有些僵持,希望能我能发表一些看法.尽管我不一定能给出好的建议,但我觉得这个事情应该具有一定的普遍性,于是就答应写一篇文字,权作抛砖引玉. 总所周知,一个网站或者一个项目要创建和运 ...
  • 写这个是因为很长时间以来,碰到过很多次这个问题,但都没当回事,这次又碰到了这个老问题,无奈百度了一圈儿未果,身边又没有大牛可以请教,就自己先“总结”了一套方法,一来给自己记录,二来如果碰巧能有朋友看到并为他解决了同样的困扰我将感到很爽.     起因:凡是网络程序,Coder似乎不可避免要碰到,你的 ...
  • 中国的交通法规定红绿色盲不能驾车,理由是他们可能无法准确辨别红绿灯.针对这一问题,我认为可以通过一个装置来辅助他们识别红绿灯. 这个装置的原理: (1)这个装置基于raspberry pi 微型电脑,它携带着一个摄像头和一个小屏幕. (2)摄像前朝向开车的方向.它随时捕捉红绿灯的影像,一旦发现红绿灯 ...
  • 1.正确区分函数和方法: 面向对象的语言叫做方法,面向过程的语言叫做函数,两者的意义是一样的,只是叫法不同.java是面向对象的语言,所以用方法. 2.方法的定义: 就是有名字的代码段 3.方法的目的: 就是为了代码的重用. 相同的类型操作不容重复的写代码.如果在代码中,重复的写了很多相似的代码,代 ...
  • 面对突如其来的疾病,医院和病人常常措不及防,时间上的延误常常造成病人丧生.在未来,科技可能会扮演医疗先知的角色,将这种悲剧发生的几率降至最低. 据商业周刊的报道,卡罗莱纳州的医疗系统开始利用大数据进行高危病人的医疗防范,它们针对高风险病人将200万人的用户数据融入一套算法,评估发病几率,从而实现在病 ...
  • 最近看到很多大牛发sqlmap的视频教程. 然后偶就屁颠屁颠滚去下了一个,然后尼玛,一连从头看到尾......各种科普啊,看视频有点浪费时间. 各位别去被坑爹了,来个sqlmap 简易教程算了,何必浪费看视频的时间. sqlmap 再牛逼也就是个python的脚本,脚本再牛逼也得有–help -hh ...
一周排行
  • Horner 算法是以英国数学家 William George Horner 命名的一种多项式求值的快速算法,实际上,这种快速算法在他之前就已经被Paolo Ruffini使用过了.而中国数学家秦九韶提出这种算法要比 ...
  • 就当日记写了.估计每隔几天更新一次吧.在微软亚研院的日常. ================ 序 很多人觉得微软这种大公司和国企差不多,里面的人都很清闲,然而事实并不是这样的. 已经习惯了每天凌晨四点走出公司大门的生 ...
  • 易网科技讯 5月13日消息,据国外媒体报道,Uber一直在不遗余力地通过其打车软件推广非现金支付,但在印度,该公司推出了现金支付的选项.Uber表示,为了与接受现金支付的印度本土对手竞争,该公司从周二开始在印度南部城 ...
  • 尹正国在童年的依稀记忆中,我记得自己喜欢随父亲拜访他的一个朋友.因为他家里的两大"法宝".在大部分家庭还没有普及黑白电视机的年代,他们家里有彩电还有录像机.录像带有当时盛行的美剧<加里森敢死 ...
  • ThreadLocal并不是一个Thread,而是一个线程的局部变量,当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每个线程都可以独立的改变自己的副本,而 ...
  • 介绍 Kafka是一个分布式的.可分区的.可的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢?   首先让我们看几个基本的消息系统术语: Kafka将消息以topic为单位进行 ...
  •    2011年11月底开始进入公司工作,从刚开始的看文档,到交流学习,到练习,到最终开始写代码,用了2个星期.从工作以及生活中越发的感觉到时间的重要性,以及自己和别人相比的时间匮乏. 虽然公司不大,刚刚成立,但是从 ...
  • 首先到下载AXIS2的代码生成插件"axis2-eclipse-codegen-wizard" ,和服务打包插件 "axis2-eclipse-service-archiver-wiza ...
  • 除了Serializable之外,使用Parcelable也可以实现传递对象,不过不同于 将对象进行序列化,Parcelable方式的实现原理是将一个完整的对象进行分解,而 分解后的每一部分都是intent所支持的数 ...
  • 翻译的是这本书: Chapter 1.Design Patterns and MapReduce MapReduce 是一种运行于成百上千台机器上的处理数据的框架,目前被google,Hadoop等多家公司或社区广泛 ...