部署Django App的策略

时间:2015-04-15 00:05:54

标签: django apache web-deployment

我有一个问题可能比django相关的开发更普遍。背景很简单:

我正在开发一个项目,其页面主要与Web应用程序相关联(这就是我使用Django的方式)。然而,除了与应用程序相关的页面之外,还有相当多的辅助页面(如登录页面,常见问题页面,联系页面等)与Web应用程序基本无关。

部署此类项目的标准策略是什么?通过Django将请求路由到这些静态页面似乎是有缺陷的。似乎有意义的是运行两个服务器:一个负责运行Django应用程序,另一个服务器负责提供静态页面(可能包括网站应用程序部分使用的静态内容)。

做出这些决定时应采用哪些指导原则?

1 个答案:

答案 0 :(得分:4)

将Django与静态站点或其他CMS并排运行并不罕见。

您需要前端服务器将请求路由到静态内容或CMS。

有两种常见的策略:

  1. 使用URL前缀确定路由的位置(例如example.com/static/到静态文件,example.com到Django)。您需要一个前端服务器将请求路由到静态内容或用另一个框架/语言编写的Web应用程序/ CMS(在Apache中使用Alias指令配置)。

  2. 将应用程序服务器和静态文件服务器放在单独的域/子域(例如static.example.com到static和app.example.com到Django)。您可以通过将前端服务器配置为在单台计算机上配置(在Apache上配置VirtualHost)或单独的计算机来完成此操作。在任何一种情况下,您都需要将DNS配置为指向您的子域到正确的机器。

  3. 前者设置起来比较简单,但后者可以让你更好地扩展。

    通常用于前端应用程序服务器的服务器包括Apache,Nginx或uWSGI,但几乎所有生产质量的Web服务器都可以执行此操作。

    事实上,Django的部署文档(例如Apache)将始终指示您使用前端服务器提供静态文件,即使只在Django安装中也是如此,因为Django不是为有效提供静态内容而设计的前端Web服务器。

    django.contrib.staticfiles应用程序可以让Django引用托管在不同服务器上的静态文件,并在开发过程中轻松切换服务静态内容与Django的内置服务器,但使用前端服务器关于生产。

相关问题