配置Django生产环境(Apache + mod_wsgi)

以下是在CentOS7_x86_64平台上的配置过程,其它平台类似。这里的Python版本是2.7.5,Django是1.7.1。

为方便描述,假设待部署的Django工程为"/home/XXXX",其目录结构如下所示:

安装mod_wsgi ...


基于Django构建Blog(14)-部署续

我们的Django工程至少有两个运行环境,即:"开发/调试环境"和"生产环境"。两种环境下的工程配置"settings.py"是不同的,同时,工程所需的依赖通常也是有区别的,即:"requirements.txt"文件也会不同。

这就导致了一个结果:每当我们把处于某一环境中的代码部署到另一个环境中时,就需要修改一次"settings.py"和"requirements.txt"文件,尤其是"settings.py",是必须要修改的。这样做不仅麻烦,而且更容易出错。

问题的根源就在于,"settings.py"和"requirements.txt"文件都只有一份,而我们的环境却不止一个。我们应该为不同的环境分别提供一份"settings.py"和"requirements.txt"文件。处于哪个环境,就使用哪套配置,不同环境下的配置不会互相污染。

针对这个问题 ...


基于Django构建Blog(13)-部署

到目前为止,一个简单的blog系统就完成了,下一步的工作就是想办法将这个系统部署到生产环境。主要有三个步骤:1. 配置生产环境;2. 配置待部署的Django工程;3. 把配置好的Django工程部署到生产环境(上线)。

配置生产环境

Django 1.7版的官方文档中提到了WSGIFastCGISCGIAJP技术。另外,还指出了在线电子书《The Django Book (2nd Edition)》第12章中提到的Apache + mod_python方案 ...


基于Django构建Blog(12)-其它

到目前为止,这个blog的基本功能就已经全部实现了。系统用例中的那个“备份”和“还原”其实是想做在admin页面中,用户登入admin后,点击按钮,就可完成内容的备份和还原,同时还可以将备份的数据保存到指定的云端服务中。我们讨论的重点不是内容的备份/还原,所以在系统用例中只做了简单描述,其相关实现可以参看xlog工程源码。

另外,还有一个问题就是:在编辑文章的时候如果需要插入图片或文档该怎么办?

对于这个问题 ...


基于Django构建Blog(11)-URL

View篇中描述了View的实现细节,不过,要想让这些View工作起来,还需要告诉Django,用户请求与这些View之间的对应关系,只有这样,Django才能把到来的请求交由相应的的View去处理。

方法是在"urls.py"文件中添加"url模式",其实就是用正则表达式来描述对应到某个View的url。打开xblog/settings.py文件,找到"ROOT_URLCONF",发现它的值是'xblog.urls',这就是说xblog目录下的urls.py是根配置文件,Django要加载的就是这个urls.py文件。

为使用一些第三方App,在前面几篇中已经加入了针对这些App的"urls模式",同理,加入针对blog的"urls模式":
使用 ...


基于Django构建Blog(10)-搜索

Haystack的方便之处在于,它为不同的搜索引擎提供了统一的接口,开发者可以使用不同的搜索引擎服务而无需改动代码。

Haystack主要支持SolrXapianWhooshElasticsearch,至于这四者在功能及性能上的差异可以去网上找一下。

这里选用Whoosh,考虑到它是用Python开发,安装使用简单方便,可以快速实现blog的站内搜索功能。

安装Haystack

pip ...