作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
Ivan 15年以上的后端和区块链架构经验见证了从DBA ops到OS内核模块(FreeBSD)开发的方方面面。.
Though many Django Developers 可能会认为这是亵渎神明,但有时它实际上是必要的部署 Django Windows/IIS上的应用程序, 尤其是在使用基于Windows生态系统的客户端时. “亵渎”的部分是因为Django确实是针对Unix环境的, 严重依赖于 WSGI, FastCGI以及命令行工具,这些都是Windows所不熟悉的. Fortunately, Django和IIS的兼容性正在提高, 这要归功于Windows和Python+Django两侧的特性添加(否则将是一个拼凑), 从而帮助解决这两个完全不同的技术世界之间的兼容性问题.
这个简短、重点突出的教程将引导您完成Django项目在Windows上的基本设置. 它涵盖了Python的安装, Django, and related tools, 包括独立运行Django项目和作为FastCGI服务器运行. 顺便说一句,后者越来越重要,因为 IIS现在正式支持FastCGI (在IIS 7+上,只需安装CGI功能).
Note: 本教程的目标读者是对Windows有一定了解并熟悉IIS管理控制台的人. 本教程中使用的IIS版本是8.但描述和技术与早期版本相似. 本教程基于Python 2.7 and Django 1.7,因为这些是我在项目中使用的版本. You can find another Django tutorial here.
专业提示:如果你要部署多个Django(甚至纯Python)项目, or if you are a developer, you should look at virtualenv,用于创建独立的Python环境的工具.
First, download Python. 提供32位和64位的MSI安装程序, 您应该选择适合您正在安装的机器的一个.
安装Python 2很重要.7.9或更高版本,因为Python版本以2开头.7.9 include PIP, Python库/包/软件管理器,用于安装本教程中的其他内容.
安装过程非常直接和简单. 文件中安装Python C:\Python27
目录,您应该接受它,因为它使以后的工作更容易. 尽量不要屈服于Windows的习惯,在目录中安装带有空格的东西.
安装后的基本目录将包含大约8个子目录, 一些杂项文件和两个可执行文件命名为 Python.exe
and PythonW.exe
. 前者是默认的命令行解释器和Python shell, 而后者只是翻译, 哪个不会使用(或衍生)控制台窗口,如果调用, 因此适合运行GUI Python应用程序.
接下来,应该将Python添加到系统的PATH环境变量中. This is done in Advanced System Settings (or System Properties), in the Advanced tab, by clicking on the Environment Variables button. 要添加的目录有两个: C:\Python27
and C:\Python27\Scripts
. 这些应该添加到PATH列表中,以分号分隔(;
). PATH变量的结尾应该是这样的 ; C: \ Python27; C: \ Python27 \脚本
.
专业提示:您可能还需要安装 GOW一个轻量级的Unix命令行实用程序集合,类似于Cygwin. 它将为您提供工具,如
ls
,还有更有趣的,比如make
,wget
,curl
,ssh
,scp
,gzip
andtar
.
Django可以使用PIP安装,命令如下 pip install django
. 这个过程可能会引入一些额外的依赖项,如果它们还没有出现在您的系统上. 否则,它只会安装Django,输出如下所示:
下载/ django拆包
安装收集包:django
django安装成功
Cleaning up...
你可以通过启动一个新的Windows命令提示符来检查Python和Django for Windows是否正常工作, running the python
command, and entering the import django
命令. 如果工作正常,则应该没有输出或消息 import django
command; i.e.:
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v . c ..1500 32位(Intel)]在win32上
输入“帮助”、“版权”、“信用”或“许可”获取更多信息.
>>> import django
>>>
一个Django“项目”由一个或多个“应用”组成。. 项目的顶级目录通常包含一个特殊的项目子目录,其中包含设置和一些常规的项目级信息, one subdirectory per app, 命令行脚本名为 manage.py
. For example:
C:\Devel\djangoproject\src>dir
Volume in drive C is OS
卷序列号为6A3D-C1B8
目录:C:\Devel\djangoproject\src
22/12/2014 04:25 .
22/12/2014 04:25 ..
22/12/2014 04:19 project
22/12/2014 04:58 djangoapp
16/12/2014 03:30 templates
2014年12月16日00:50 250管理.py
1文件(s) 250字节
5个目录(s) 23,552,929,792字节空闲
Django项目可以通过归档整个项目目录并在另一台机器上解压缩来简单地分发. 在上面的示例中,项目包含 project
子目录下,应用程序目录命名 djangoapp
, and an auxiliary templates
subdirectory.
The manage.py
脚本是Django应用程序的“瑞士军刀”. 它从创建新应用程序无所不包, to database migrations, 运行测试(嵌入式)HTTP服务器甚至FastCGI服务器.
如果项目及其应用程序是功能性的, 你应该能够通过运行这个命令来启动默认的Django开发专用HTTP服务器 manage.py runserver
,输出结果如下所示:
C:\Devel\djangoproject\src>manage.py runserver
Performing system checks...
系统检查未发现任何问题(0沉默).
2014年12月23日- 01:19:02
Django version 1.7.1, using settings 'project.settings'
在http://127上启动开发服务器.0.0.1:8000/
使用CTRL-BREAK退出服务器.
从消息中可以看到,这会在本地主机上启动一个服务器,端口为8000. 您可以立即访问它与您的网络浏览器.
一个更有趣的选择是启用FastCGI服务器. With FastCGI, you can use IIS, Apache, or any other web server, 在生产环境中为应用程序服务. 要使其工作,您需要下载 fcgi.py (通过FastCGI在Windows上使用IIS运行Django的Django管理命令),并将其放入 management/commands
Django应用的子目录(不是项目的子目录)!) subdirectory. Both the management
and the commands
subdirectories must have an empty file named __init__.py
(将这些目录转换为Python模块).
fcgi.py
是一个非常简单和简约的WSGI到FastCGI适配器,做什么 not 支持监听TCP套接字或管道,并通过使用 stdin
and stdout`. 因此,它不能用于现代web服务器,如 nginx, but will work with IIS.
如果在IIS中加载了FastCGI模块(或者在IIS 7+中加载了CGI模块), IIS管理控制台将有“FastCGI设置”图标可用. Django是一个框架,它有自己的URL路由, 所以Django应用必须在IIS中以“handler”的形式安装. 在IIS上安装Django应用程序 Default Web Site,在管理控制台中选择它,然后打开 Handler mappings configuration feature. In it, click on the Add Module Mapping… 操作,并输入以下信息:
\*
用Django内部路由处理所有请求FastCgiModule
使用IIS的FastCGI模块python.exe
Path及其命令行参数需要使用管道字符(|
) as a separator. 该设置的示例值为: C:\Python27\python.exe|C:\app\src\manage.C:\app\src——settings project.settings
. 注意,您需要指定 fcgi
command for the manage.py
script, 并手动设置Python解释器的项目搜索路径, 以及项目设置模块的Python模块名称.你的配置对话框应该看起来像这样:
Next, click the Request restrictions button and edit the Mapping tab. 取消选中“仅当请求映射到…时调用处理程序”复选框(否则, IIS将在映射它认为是URL请求中的子目录时遇到问题:
在处理程序信息对话框中单击OK. 然后,IIS将要求您确认是否创建了一个匹配的FastCGI应用程序条目,您需要确认. 控件中可以看到该条目 FastCGI Settings 特性,可在IIS管理控制台的根屏幕上访问. IIS本身创建的默认条目就足够了, 但是有一些可选的设置,你可能想要利用:
现代web应用程序使用多个资源文件, such as CSS, JavaScript and others, Django应用也不例外. Django提供了一个非常方便的特性,允许开发人员将所需的资源集成到应用程序目录树中, 但是它可以被Django提取并复制到一个合适的, static directory. 这基本上是一个由开发人员控制的特性, Django存储静态文件的位置是在项目中控制的 settings.py
. 表现良好的项目将使用合理的路径来实现这一点,但它不是标准化的.
处理上传文件的应用程序将它们存储在一个类似的管理目录中, in Django, is traditionally named media
. The static
and media
目录需要作为虚拟目录添加到IIS配置中:
这里的重要步骤是重新配置 Handler Mappings 特性,并删除Django App处理程序,留下 StaticFile
Handler是最重要的.
Note that the static
目录必须是IIS可读的(以及Django项目中的所有其他文件和目录), but the media
目录也必须是IIS可写的. 最终的站点配置应该如下所示:
SQLite 默认情况下在Windows上工作,在类unix系统上也是如此. 大多数其他的开源数据库现在甚至可以在Windows上运行 PostgreSQL, which I recommend. 在现有的Windows安装上, though, 可能需要将Django与MS SQL Server一起部署. 可以使用 ODBC bridge driver or by using a native MS SQL driver. 理论上,这两种方法都有效,但我还没有测试过. 至少数据库连接参数(在项目的 settings.py
文件)需要更改以切换到新数据库. 数据迁移需要手动完成.
注意,如果使用SQLite数据库, 数据库文件和它所在的目录都需要是IIS可写的.
所描述的配置经过测试并证明是有效的, 但如果出了什么差错, 下面是一些解决Django for Windows安装问题的基本步骤:
C: \ inetpub \ \ FailedReqLogFiles日志
目录(或类似的目录,取决于您的配置). You then need to enable tracing for the particular web site (or a virtual directory) in the *Configure->Failed request tracing… action.To be sure, Django是为类unix环境量身定制的, 最广泛和最受支持的运行Django的方式是在Linux系统上.g., with uwsgi and nginx).
然而,正如本教程所示,让Django在Windows上运行并不需要太多的工作. 从纯粹的Windows角度来看,所描述的一些步骤似乎违反直觉, but they are necessary and, fortunately, 在配置中花费的精力是一次性的. Once configured, Django应用程序的行为应该和它在Linux平台上的行为差不多.
世界级的文章,每周发一次.
世界级的文章,每周发一次.
Join the Toptal® community.