【问题标题】:Single Django Application, Multiple Instances单个 Django 应用程序,多个实例
【发布时间】:2012-12-02 02:42:47
【问题描述】:

我是 Django 新手,有一个关于 Django 应用程序设计的问题。

我想编写一个应用程序并运行多个实例,每个实例都在不同的 URL 下。每个实例都将其数据存储在自己的表中,并且每个实例都有一组不同的用户。不同的实例可以从不同的 URL 访问,但来自同一个域并在后台运行相同的应用程序代码。

例如,如果我有两个实例,则可以从以下 URL 访问它们:

我已经定义了我的模型,我可以运行一个应用程序,一个实例,并且有多个用户就好了。但是我不清楚如何支持多个实例。

我查看了站点框架,这几乎是我想要的,但我需要将所有内容都托管在同一个域下。

关于如何使用 Django 运行单个应用程序的多个实例的任何提示?

【问题讨论】:

  • 可以接受不同的子域而不是文件夹吗?这使得站点框架更易于使用。
  • 子域应该没问题,站点框架是否支持子域?
  • 我没有亲自尝试过,但是从Django的角度来看,子域应该等同于单独的域。我相信站点框架依赖于 Host 标头,每个子域都会有所不同。

标签: django web-applications django-models


【解决方案1】:

您可以简单地将 django 项目复制到另一个地方并创建一个新的 apache 站点。

例如:

在 /etc/apache2/sites-available/domain.eu_first 中创建一个虚拟主机

<VirtualHost *:80>
ServerName domain.eu
WSGIScriptAlias /first /var/www/first/wsgi

<Directory /var/www/first>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

/etc/apache2/sites-available/domain.eu_second 中的虚拟主机

<VirtualHost *:80>
ServerName domain.eu
WSGIScriptAlias /second /var/www/second/wsgi

<Directory /var/www/second>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

现在将您的项目复制到第一个和第二个。并通过a2ensite domain.eu_firsta2ensite domain.eu_second 激活您的apache 站点

你必须证明你在你的项目中只使用了相对链接。

答案未经验证,请检查一下。

【讨论】:

  • 这不会导致大量代码重复吗?每当我想进行更改时,我都必须在 n 位置进行更改,其中 n 是我正在运行的实例数。
  • 是的。只是一个解决方法(例如,只有 2 个实例)。我不知道,但似乎不可能在一个项目中拥有两个数据库(在设置中定义)。
  • 我不一定需要两个数据库,我想将我的实例分离到它们自己的表中,但如果这不可能,那也不是什么大问题。如果我放弃这个要求是他们这样做的一种方式吗?
猜你喜欢
  • 1970-01-01
  • 2021-08-08
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多