wantianmin@gmail.com
|
2.0/chapter12/#197 |
2010-03-27 13:30:16
|
如果你把 PythonDebug 置 On,当mod_python出现某些错误,你的用户会看到丑陋的(也会暴露某些信息)Python的对错误的追踪的信息。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#620 |
2010-03-27 13:25:41
|
下面的章节集中在其他的一些Django特性上,你是否需要它们取决于你的应用项目。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#582 |
2010-03-27 13:23:05
|
这应该不是很困难,我们已经开发过一个站点上面有多于一百万条报刊文章,这个站点使用了不到2GB的空间。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#573 |
2010-03-27 13:19:14
|
最近即使那些昂贵的RAM也相对来说可以负担的起了。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#561 |
2010-03-27 13:15:57
|
注意
|
|
wantianmin@gmail.com
|
2.0/chapter12/#517 |
2010-03-27 13:15:20
|
memcached是同一个团队的人写的一个负载均衡和反向代理的程序.(见第15章)
|
|
wantianmin@gmail.com
|
2.0/chapter12/#499 |
2010-03-27 13:13:19
|
如果媒体是在另外一台服务器上的,你需要部署一种方法使得Django可以通过网络去写这些媒体。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#430 |
2010-03-27 13:08:23
|
你可以重新上传mysite.fcgi或者编辑这个文件以改变该文件的时间戳。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#280 |
2010-03-27 13:06:36
|
一个完整的概述超出了本书的范围,你可以从官方的Django文档查看到更多的信息。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#279 |
2010-03-27 13:05:18
|
作为一个mod_python模块的替代,你可以考虑使用mod_wsgi模块(http://code.google.com/p/modwsgi/),此模块开发的时间比mod_python的开发时间离现在更近一些,在Django社区已有一些使用。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#277 |
2010-03-27 13:00:15
|
mod_wsgi模块
|
|
wantianmin@gmail.com
|
2.0/chapter12/#104 |
2010-03-27 12:59:33
|
我们将会在依次解释这几种方式
|
|
simbas
|
2.0/chapter04/#192 |
2010-03-25 10:47:12
|
深度变量的查找
|
|
simbas
|
2.0/chapter14/#197 |
2010-03-25 10:00:35
|
这些实例尽量简单,这样你可以更容易看到发生了什么
|
|
wantianmin@gmail.com
|
2.0/chapter12/#160 |
2010-03-23 10:48:51
|
我们喜欢去的几个地方:
|
|
wantianmin@gmail.com
|
2.0/chapter12/#154 |
2010-03-23 10:47:31
|
Django 需要Apaceh 2.x 和mod_python 3.x支持。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#145 |
2010-03-23 10:46:45
|
比如,假设mysite是在你的Python路径中,DJANGO_SETTINGS_MODULE对于我们正在进行的例子就是'mysite.settings'。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#144 |
2010-03-23 10:45:10
|
DJANGO_SETTINGS_MODULE是你的配置文件的python的路径
|
|
wantianmin@gmail.com
|
2.0/chapter12/#142 |
2010-03-23 10:44:38
|
DJANGO_SETTINGS_MODULE指向你的配置文件,在你的配置文件中指向你的ROOT_URLCONF,在ROOT_URLCONF中指向了你的视图以及其他的部分。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#141 |
2010-03-23 10:41:39
|
在每一种环境中,你都需要告诉Web服务器你的DJANGO_SETTINGS_MODULE是什么,这是你的Django应用程序的进入点。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#140 |
2010-03-23 10:40:08
|
这些指令针对每一种环境都不同,但是有一件事情是相同的。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#139 |
2010-03-23 10:39:19
|
通过这种方式的代码改变后,本章的下一部分将集中在对具体环境(比如Apache)的发布所需要的指令上。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#137 |
2010-03-23 10:32:04
|
DJANGO_SETTINGS_MODULE
|
|
wantianmin@gmail.com
|
2.0/chapter12/#135 |
2010-03-23 10:31:39
|
那是由于它尝试从这个文件中导入一个叫做settings的模块,你可以通过修改manage.py 文件,将 import settings 语句改为导入你自己的模块,或者使用django-admin.py而不是使用manage.py,在后一种方式中你需要设置 DJANGO_SETTINGS_MODULE 环境变量为你的配置文件所在的python 路径.(比如'mysite.settings')。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#134 |
2010-03-23 10:25:56
|
但是如果你真的重命名了由django-admin.py startproject 命令创建的settings.py文件,你会发现manage.py会给出一个错误信息说找不到配置文件。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#132 |
2010-03-23 10:23:55
|
随便将你的settings.py重命名为settings_dev.py或settings/dev.py或foobar.py,Django 并不在乎你的配置文件取什么名字,只要你告诉它你使用的哪个配置文件就可以了。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#130 |
2010-03-23 10:21:32
|
重命名settings.py
|
|
wantianmin@gmail.com
|
2.0/chapter12/#128 |
2010-03-23 10:21:08
|
如果这个配置文件抛出任何的异常,Django都有可能会发生很严重的崩溃。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#127 |
2010-03-23 10:19:58
|
如果你打算按照这种方案走下去,请确定这些配置文件中的代码是足够安全(防弹)的。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#126 |
2010-03-23 10:17:40
|
一个关键是配置文件仅仅是包含python代码的文件。你可以从其他文件导入这些python代码,可以通过这些代码执行任意的逻辑判断等操作。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#124 |
2010-03-23 10:14:41
|
我们可以通过检查主机名来确认代码是否运行在产品服务器上。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#123 |
2010-03-23 10:12:27
|
在这里,我们从python标准库导入了socket 模块,使用它来检查当前系统的主机名。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#119 |
2010-03-23 10:11:22
|
一个达到这个目的的方法是检查当前的主机名。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#118 |
2010-03-23 10:10:46
|
最终,最精简的达到两个配置环境设定的方案是使用一个配置文件,在此配置文件中根据不同的环境进行设置。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#116 |
2010-03-23 10:07:44
|
(后者将向你演示你可以重新定义 任何 设置,并不只是象 DEBUG 这样的基本设置。)
|
|
wantianmin@gmail.com
|
2.0/chapter12/#116 |
2010-03-23 10:07:27
|
(后者将向你演示你可以重新定义 任何 设置,并不只是象 DEBUG 这样的基本设置。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#115 |
2010-03-23 10:05:09
|
在这个案例中,DEBUG 被设置为False,但是我们已经对产品模式设置了不同的数据库访问参数。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#114 |
2010-03-23 10:00:19
|
此处,settings_production.py 从settings.py 导入所有的设定,仅仅只是重新定义了产品模式下需要特殊处理的设置。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#110 |
2010-03-23 09:58:46
|
作为使用两个内容大部分相同的配置文件的替代方式,你可以使用一个文件为基本文件,另外一个文件从基本文件中导入相关设定。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#110 |
2010-03-23 09:57:47
|
与使用两个内容大部分相同的配置文件相反,你可以使用一个文件为基本文件,另外一个文件从基本文件中导入相关设定。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#107 |
2010-03-22 17:13:41
|
如果你是跟随之前的例子做下来的,那么你已经有了一个settings.py了,现在你只需要将它复制一份并命名为settings_production.py(文件名可以按照你自己的喜好定义),在这个新文件中改变DEBUG等设置。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#106 |
2010-03-22 17:09:18
|
首先,最基本的方法是定义两个单独的配置文件。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#102 |
2010-03-22 17:08:22
|
使用一个单独的配置文件,此配置文件包含一个Python的逻辑判断根据上下文环境改变设置。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#100 |
2010-03-22 17:06:19
|
设置一个基本的配置文件(比如,为了开发)和第二个(为了产品)配置文件,第二个配置文件仅仅从基本的那个配置文件导入配置,并对需要定义的进行复写.
|
|
wantianmin@gmail.com
|
2.0/chapter12/#96 |
2010-03-22 17:01:15
|
如果你想把你的配置文件按照产品设置和开发设置组织起来,你可以通过下面三种方法的其中一种达到这个目的。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#94 |
2010-03-22 16:58:12
|
比如,你可能不想每次在本地机器上测试代码改变的时候将DEBUG从False 改为True。Django通过使用多个配置文件而使得这种情况很容易得到避免。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#93 |
2010-03-22 16:52:37
|
settings.py文件由django-admin.py startproject命令生成。但是当你准备要进行配置的时候,你将发现你需要多个配置文件以使你的开发环境和产品环境相独立。
|
|
wantianmin@gmail.com
|
2.0/chapter12/#85 |
2010-03-22 16:47:56
|
MANAGERS使用和ADMINS 同样的语法.例如:
|
|
wantianmin@gmail.com
|
2.0/chapter12/#84 |
2010-03-22 16:46:34
|
如果你想激活这个特性,设置SEND_BROKEN_LINK_EMAILS 为True(默认为False),并设置你的MANAGERS为某个人或某些人的邮件地址,这些邮件地址将会收到报告连接中断错误的邮件.
|
|
wantianmin@gmail.com
|
2.0/chapter12/#83 |
2010-03-22 16:43:21
|
如果你安装有CommonMiddleware(比如,你的MIDDLEWARE_CLASSES设置包含了'django.middleware.common.CommonMiddleware'的情况下,默认就安装了CommonMiddleware),你就具有了设置这个选项的能力:有人在访问你的Django网站的一个非空的链接而导致一个404错误的发生和连接中断的情况,你将收到一封邮件.
|
|