早就听说过django开发框架的大名,一直想找个机会体验一下。由于公司使用的服务器系统是winows server 2003,web服务器是iis 6.0,因此,开发环境只能部署为django+iis。于是,上google狂找,所能找到的教程很少,而且很多雷同无异,只能择一照着配置,仍未能运行。几经周折,始终未遂。
今天闲来无事,又有了配置django+iis运行环境的冲动。又尝试之,好在黄天不负有心人,得以所偿。附上所参考的教程。
目标
在Windows平台上的IIS服务器中发布由Django创建的应用。在我们开始之前请确保你已经安装完毕Windows,IIS,并能正常运行,需要发布的Django应用也已在内置的测试服务器上调试通过。
注意:本指南对Django <=0.91无效,因为IIS扩展基于Django >=0.92的API
步骤
- 安装PyISAPIe - 一个让IIS支持Python的扩展
- 安装Django并通过PyISAPIe连接Django
- 配置Django
- 测试
安装PyISAPIe - 一个IIS的ISAPI扩展
PyISAPIe不是以安装包的形式发布的,不过安装起来也并不复杂
简单地说,这个扩展在IIS运行时将Python解释器加载到内存中并用它来响应页面请求,它避免了CGI方式下为每一个请求反复启动
Python。这意味着某些Django文件会被缓存,在你修改代码后不能马上起效,直到你重启Python进程。对于IIS
6你必须右键点击应用程序池中的服务然后选择”刷新”来让更改有效,对于更早的IIS版本你也许需要重新启动整个IIS服务。
好,那我们先访问http://pyisapie.sourceforge.net/
并下载最新的PyISAPIe。
假设你将所有的文件解压到c:\pyisapie,并且将Python安装在c:\python24,如果路径不同,请作相应的调整。
在readme中有文档说明,步骤概括如下:
安装文件
- 将 c:\pyisapie\PyISAPIe.dll 复制到 c:\python24\
- 编辑该文件的“属性”->“安全设置”,加入“Network”,“ Service”,并选中“读取”权限。(为了让IIS可以访问)
- 转到 c:\pyisapie\source\PyISAPIe\Python\ 将整个Http文件夹复制到 c:\python24\lib\site-packages。 注意:Http文件夹的名字是大小写敏感的,千万别误存为http或其他变体,那样将无法正常运行。
设置IIS
你不一定要创建虚拟目录——可以直接使用根目录。如果你使用虚拟目录,比如/myfolder,那么只有以/myfolder开头的页面由
PyISAPIe处理。如果你使用根目录,所有的URL都将由PyISAPIe处理,这可能会导致你站点上的其他内容无法访问。 *
打开IIS管理控制台,创建新的虚拟目录,并在向导提示的时候允许ISAPI扩展。
IIS 6
- 察看虚拟目录的属性并点击“配置”(如果这个选项为灰色,则先点击“创建”),然后加入一个新通配符(下方的列表框内),定位到 pyisapie.dll 文件,清除“检查文件是否存在”选项。
- 在IIS管理器中,到“网络服务扩展”区右键点击->加入新的网络服务扩展。
- 随便取一个名字,然后将pyisapie.dll添加为所需文件,并选中允许此扩展
IIS 5
- IIS 5.x 不支持通配符应用映射,至少在配置界面下不支持。在IIS 5下,实施步骤如下:
- 右键点击虚拟目录并选择“属性”
- 确保“执行许可”设置为“脚本和可执行程序”
- 点击“配置”(在“脚本和可执性程序”旁)
- 点击“应用程序映射”标签,选择“添加”
- 设置“可执行文件”为 c:\python24\PyISAPIe.dll
- 设置“扩展名”为“*”,这样所有的请求都通过PyISAPIe.dll处理
- 你应该限定所允许的动作,但是为了内部测试方便,我们暂时设置为“全部动作”
- 清除“检查文件是否存在”的选项
- 点击“确定”关掉所有窗口
设置好之后,你可以将 c:\pyisapie\source\PyISAPIe\Python\examples 下的Info.py复制到你新建的虚拟目录中,然后访问http://site/Info.py来测试。
将Django连接到PyISAPIe
按照PyISAPIe的examples\django目录下的readme.txt来设置Django。简要的说就是将两个文件复制到相应的文件夹中。然后稍加修改以满足你的需要。
- 将 Isapi.py 放到 c:\python24\lib\site-packages\Http 目录。按照前面给的例子,你需要对此文件稍加修改:
改动的代码
# 加入下列两行,这样python可以导入 DJANGO_SETTINGS_MODULE
import sys
sys.path.append(r'c:\test')
# Indicate the settings module of your project
os.environ["DJANGO_SETTINGS_MODULE"] = "proj.settings"
- 将 pyisapie.py 放到
c:\python24\lib\site-packages\Django-xyz-123.egg\django\core\handlers
目录。PyISAPIe v1.0.3中有个小bug。 你需要对它稍加修改才能正常使用。
改动的代码
class PyISAPIeRequest(http.HttpRequest):
def __init__(This):
# 加入下一行
This.method = Env.REQUEST_METHOD
# 其他的不必修改
- IIS+Python+PyISAPIe目前好像并不支持多个Django站点。
修改Django设置
做完上述几步之后,我们可以将虚拟目录 /myfolder 指向 c:\test,然后创建一个Hello World 页面来进行测试。
- 在 c:\test\proj 目录中创建一个 helloworld.py 文件
内容如下
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello world!")
- 修改 c:\test\proj 目录下的 urls.py
内容如下
from django.conf.urls.defaults import *
urlpatterns = patterns('',
# Example:
# (r'^newtest/', include('proj.apps.foo.urls.foo')),
(r'^.*$', 'proj.helloworld.index'),
# Uncomment this for admin:
# (r'^admin/', include('django.contrib.admin.urls')),
)
一切准备就绪,你可以马上访问 http://site/myfolder 来看一下效果。请注意,你不需要手动启动Django服务。
常见问题
原文参考
分享到:
相关推荐
Django + python + mysql的在线考试系统源码 Django + python + mysql的在线考试系统源码 Django + python + mysql的在线考试系统源码 Django + python + mysql的在线考试系统源码 Django + python + mysql的...
python+django+mysql电影推荐系统源码,毕业设计 python+django+mysql电影推荐系统源码,毕业设计 python+django+mysql电影推荐系统源码,毕业设计 python+django+mysql电影推荐系统源码,毕业设计 python+...
使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现...
Django+Vue3.2+ElementPlus+TypeScript开发的在线考试系统源码 Django+Vue3.2+ElementPlus+TypeScript开发的在线考试系统源码 Django+Vue3.2+ElementPlus+TypeScript开发的在线考试系统源码 Django+Vue3.2+...
### Django+Celery+RabbitMQ配置文档 #### 一、环境搭建与配置 ##### 1.1 系统环境 - **操作系统**: Ubuntu 14.04 - **开发工具**: PyCharm 5.0 - **虚拟环境**: 使用虚拟环境隔离项目依赖,避免环境冲突。 #####...
视频课程下载——Django+Vue+Docker企业OA系统
python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+...
毕业设计,采用Hadoop+Hive构建数据仓库,使用django+echarts构建前端web网站对业务指标进行可视化呈现 1. Hadoop+Hive构建数据仓库 2. django+echarts网站开发 3. 数据清洗,数据模型构建 毕业设计,采用Hadoop+...
django项目django项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue项目.zipdjango项目django+vue...
给大家分享一套课程——Django+Vue:Python Web全栈开发(基于Django4.1),已完结10章,附源码。
在本资源"django+vue分离项目实战.rar"中,我们将探讨如何使用现代Web开发技术Django和Vue.js来实现一个完整的前后端分离的实战项目。这个项目需要的基础环境包括Python 3.6及以上版本、Django的最新版、Node.js的...
【作品名称】:基于 Python+Django+sqlite实现的图书管理系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:基于 ...
Python+Django+eclipse安装配置 简单讲述最近组合安装配置过程
视频课程下载——【架构师】Django+FastAPI+uniapp+微服务秒杀系统
框架是django,有代码视频讲解参考,对项目进行黑盒测试和白盒测试,搭建开发环境、编写相关文档、搭建对象、数据库设计、编写功能代码、设计网页、用例测试,代码的整合打包,完成服务器的相关配置,最后得到项目成品...
【标题】中的“采用Django+Python+Mysql完成的图书管理系统源码”表明这是一个使用Python的Django框架和MySQL数据库构建的图书管理系统的源代码实现。这个系统可能包括了图书的添加、删除、修改、查询等一系列功能,...
Nginx+Uwsgi+Django(python3)+Vue部署,一步步实现。网上找了N多篇文章都没成功,特意记录,以免其他同学踩坑
django+shell开发的多用户私人小网盘源码 django+shell开发的多用户私人小网盘源码 django+shell开发的多用户私人小网盘源码 django+shell开发的多用户私人小网盘源码 django+shell开发的多用户私人小网盘源码 ...
在现代Web开发中,前后端分离的架构变得越来越普遍,其中Django作为强大的Python后端框架,Vue.js作为轻量级且高效的前端框架,两者结合能够构建高效、高性能的Web应用。本项目“Django+Vue开发环境框架”提供了一个...
基于django+vue搭建的ERP系统源码+项目文档(有产品管理、采购管理、生成管理、销售管理、系统管理等板块).zip基于django+vue搭建的ERP系统源码+项目文档(有产品管理、采购管理、生成管理、销售管理、系统管理等...