xbwee
|
2.0/chapter14/#103 |
2010-04-21 10:47:47
|
<literal>False</literal> |
|
xbwee
|
2.0/chapter14/#94 |
2010-04-21 10:47:26
|
<literal>None</literal> |
|
xbwee
|
2.0/chapter14/#92 |
2010-04-21 10:47:13
|
<literal>domain</literal> |
|
xbwee
|
2.0/chapter14/#86 |
2010-04-21 10:46:56
|
<literal>"/"</literal> |
|
xbwee
|
2.0/chapter14/#84 |
2010-04-21 10:46:42
|
<literal>path</literal> |
|
xbwee
|
2.0/chapter14/#79 |
2010-04-21 10:46:26
|
<literal>None</literal> |
|
xbwee
|
2.0/chapter14/#77 |
2010-04-21 10:46:02
|
<literal>expires</literal> |
|
ySJ
|
2.0/chapter12/#517 |
2010-04-21 10:45:52
|
它是一个负载均衡和反向代理的程序,是由编写<literal>memcached</literal>的团队开发的(见第15章)。
|
|
xbwee
|
2.0/chapter14/#72 |
2010-04-21 10:45:42
|
<literal>None</literal> |
|
xbwee
|
2.0/chapter14/#70 |
2010-04-21 10:45:27
|
<literal>max_age</literal> |
|
ySJ
|
2.0/chapter12/#516 |
2010-04-21 10:37:21
|
Apaches 的 <literal>mod_proxy</literal> 是一个可以考虑的选择,但另一个更理想的选择是Perbal(<reference name="http://www.djangoproject.com/r/perlbal/" refuri="http://www.djangoproject.com/r/perlbal/">http://www.djangoproject.com/r/perlbal/</reference>):
|
|
ySJ
|
2.0/chapter12/#516 |
2010-04-21 10:36:55
|
Apaches 的 <literal>mod_proxy</literal> 是一个可以考虑的选择,但另一个配置更棒的选择是Perbal(<reference name="http://www.djangoproject.com/r/perlbal/" refuri="http://www.djangoproject.com/r/perlbal/">http://www.djangoproject.com/r/perlbal/</reference>):
|
|
ySJ
|
2.0/chapter12/#511 |
2010-04-21 10:35:15
|
在多台机器上同时运行多份Django站点的拷贝很容易,我们只需要拷贝多份代码到多台机器上,然后为每台计算机都启动Apache服务器。
|
|
ySJ
|
2.0/chapter12/#507 |
2010-04-21 10:30:52
|
请看图 12-3,一旦三个服务器中的任何一个发生了故障,你就得关闭整个站点。
|
|
ySJ
|
2.0/chapter12/#504 |
2010-04-21 10:28:35
|
这种三台服务器的构架可以承受很大的流量,比如每天1000万的点击率。如果还想再进一步的话,就需要数据冗余了。
|
|
ySJ
|
2.0/chapter12/#498 |
2010-04-21 10:26:46
|
如果你的应用牵涉到文件上载,Django需要能够向媒体服务器写入上载媒体。
|
|
ySJ
|
2.0/chapter12/#497 |
2010-04-21 10:25:51
|
这一步需要一点点技巧。
|
|
ySJ
|
2.0/chapter12/#495 |
2010-04-21 10:25:20
|
对于拥有大量静态内容(照片、视频等)的站点来说,将媒体服务器分离出去显然有着更加重要的意义,而且应该是扩大规模的时候所要采取的 <emphasis>第一</emphasis>步措施 。
|
|
ySJ
|
2.0/chapter12/#489 |
2010-04-21 10:23:40
|
图 12-3:
|
|
ySJ
|
2.0/chapter12/#486 |
2010-04-21 10:22:27
|
下一步,我们要把媒体资源(任何 <emphasis>不是</emphasis> 由Django视图产生的东西)分离到别的服务器上(请看图12-3)。
|
|
ySJ
|
2.0/chapter12/#468 |
2010-04-21 10:18:59
|
使用了一个独立的数据库服务器以后,我们的构架变成了图12-2。
|
|
ySJ
|
2.0/chapter12/#460 |
2010-04-21 10:14:09
|
通过把数据库服务器迁移到第二台主机上,可以很容易地解决这个问题。
|
|
ySJ
|
2.0/chapter12/#452 |
2010-04-21 10:11:10
|
图 12-1:
|
|
ySJ
|
2.0/chapter12/#449 |
2010-04-21 10:10:57
|
大多数的站点一开始都运行在单机服务器上,看起来像图12-1这样的构架。
|
|
ySJ
|
2.0/chapter12/#431 |
2010-04-21 10:06:32
|
当Apache服务器发现文件被更新了,它会自动为你重启Django应用。
|
|
ySJ
|
2.0/chapter12/#430 |
2010-04-21 10:05:53
|
而只需要重新上传<literal>mysite.fcgi</literal>或者编辑改文件,使得修改时间发生了变化。
|
|
ySJ
|
2.0/chapter12/#429 |
2010-04-21 10:05:24
|
但是,这不需要重启Apache。
|
|
ySJ
|
2.0/chapter12/#428 |
2010-04-21 10:03:27
|
如果你改变了站点上任何的Python代码,你需要告知FastCGI。
|
|
ySJ
|
2.0/chapter12/#414 |
2010-04-21 10:00:05
|
注意
|
|
ySJ
|
2.0/chapter12/#409 |
2010-04-21 09:52:15
|
在使用Apache的共享主机服务商处运行Django。
|
|
ySJ
|
2.0/chapter12/#406 |
2010-04-21 09:50:10
|
你也可以通过 <literal>fastcgi.server</literal> 中指定多个入口,在同一个站点上实现运行多个Django应用。
|
|
ySJ
|
2.0/chapter12/#395 |
2010-04-21 09:45:40
|
确保 <literal>mod_fastcgi</literal> 在模块列表中,它需要出现在 <literal>mod_rewrite</literal> 和 <literal>mod_access</literal> ,但是要在 <literal>mod_accesslog</literal> 之前。有可能也想使用<literal>mod_alias</literal>来提供媒体管理。
|
|
ySJ
|
2.0/chapter12/#387 |
2010-04-21 09:35:22
|
在这个例子里面,我们告诉Apache使用FastCGI来处理那些不针对文件系统上的文件以及不以<literal>/media/</literal>开头的请求。这可能是使用Django管理站点的最普遍情况了。
|
|
ySJ
|
2.0/chapter12/#379 |
2010-04-21 09:30:01
|
它仅仅是一个Web服务器内部使用的接口,这个URL决定了哪些URL请求会被FastCGI处理(下一部分详细讨论)。
|
|
ySJ
|
2.0/chapter12/#361 |
2010-04-21 09:27:09
|
在Apache和FastCGI上使用Django,你需要安装和配置Apache,并且启用mod_fastcgi。
|
|
ySJ
|
2.0/chapter12/#354 |
2010-04-21 09:25:48
|
<literal>$PIDFILE</literal> 就是你指定的那个 <literal>pidfile</literal>。
|
|
ySJ
|
2.0/chapter12/#349 |
2010-04-21 09:24:21
|
但如果是在后台运行的话,你就要使用Unix的<literal>kill</literal>命令来杀掉它。
|
|
ySJ
|
2.0/chapter12/#347 |
2010-04-21 09:23:39
|
如果你的FastCGI是在前台运行的,那么停止它就非常简单了:
|
|
ySJ
|
2.0/chapter12/#348 |
2010-04-21 09:22:56
|
简单地按Ctrl+C就可以退出FastCGI服务器。
|
|
ySJ
|
2.0/chapter12/#332 |
2010-04-21 09:16:36
|
你需要指定 <literal>socket</literal> 或者同时指定 <literal>host</literal> 和 <literal>port</literal> 。当你创建Web服务器时,你只需要将服务器指向当你在启动FastCGI服务器时确定的socket或者host/port。
|
|
ySJ
|
2.0/chapter12/#327 |
2010-04-21 09:15:09
|
启动你的服务器项目。首先进入你的项目目录下(你的 <literal>manage.py</literal> 文件所在之处),然后使用 <literal>manage.py runfcgi</literal> 命令:
|
|
ySJ
|
2.0/chapter12/#325 |
2010-04-21 09:14:14
|
具体使用哪一个,那就根据你的偏好而定了,但是TCP socket弄不好的话往往会发生一些权限上的问题。
|
|
ySJ
|
2.0/chapter12/#324 |
2010-04-21 09:11:33
|
使用Unix domain socket(在Win32里面是 <emphasis>命名管道</emphasis> )或者使用TCP socket。
|
|
ySJ
|
2.0/chapter12/#323 |
2010-04-21 09:00:48
|
Web服务器有两种方式与FastCGI进行交互:
|
|
ySJ
|
2.0/chapter12/#323 |
2010-04-21 09:00:30
|
Web服务器有两种方式与FastCGI进程交互:
|
|
ySJ
|
2.0/chapter12/#310 |
2010-04-20 19:06:14
|
地址是<reference name="http://www.djangoproject.com/r/flup/" refuri="http://www.djangoproject.com/r/flup/">http://www.djangoproject.com/r/flup/</reference>。
|
|
ySJ
|
2.0/chapter12/#309 |
2010-04-20 19:05:37
|
一些用户都抱怨 <literal>flup</literal> 的发布版太久了,老是不更新,这样你可以使用最新的SVN版本。
|
|
ySJ
|
2.0/chapter12/#306 |
2010-04-20 19:04:16
|
对于一个多人共用的系统来说,这个特性对于安全性是非常有好处的,因为你可以安全地与别人分享和重用代码了。
|
|
ySJ
|
2.0/chapter12/#306 |
2010-04-20 19:04:07
|
对于一个多人共用的系统来说,这个特性对于安全性是非常有好处的,因为你可以安全的与别人分享和重用代码了。
|
|
ySJ
|
2.0/chapter12/#300 |
2010-04-20 19:02:33
|
尽管这么做缩短了启动时间(因为不需要每次处理请求时都读磁盘),但是它占用了内存。
|
|