Django VirtualHosting:如何在一个 VPS 上托管具有不同域的多个 django 项目

Posted

技术标签:

【中文标题】Django VirtualHosting:如何在一个 VPS 上托管具有不同域的多个 django 项目【英文标题】:Django VirtualHosting: How to host multiple django projects with different domains on one VPS 【发布时间】:2016-01-14 04:52:05 【问题描述】:

因为我听说您可以在一个 VPS 上托管多个网站,所以我尝试使用 django(未安装在 VEnvironment 中)以及使用 mod_wsgi 和 apache 来实现它。

当我第一次得到这个 VPS 时,我是真正开始使用 django,并且按照 django 官方网站的一些教程,我得到它现在可以工作了,问题如下 -

1.不同的教程假设 apache 有不同的目录结构 在我从 digiocean 购买的 Ubuntu 服务器上安装 apache 后得到的结构是这样的。

/etc/apache2/

   |-- apache2.conf
   |       `--  ports.conf
   |-- mods-enabled
   |       |-- *.load
   |       `-- *.conf
   |-- conf-enabled
   |       `-- *.conf
   `-- sites-enabled
           `-- *.conf

按照教程(官方),我的第一个项目(site1)开始工作。 现在我有了这个新站点,它也是基于 django 的。所以我想也许有一种不错的方式将它们都托管在一个引擎盖下。

2。 apache中的许多.conf文件

我知道这听起来像是一个蹩脚的问题,但是当我使用 mod_wsgi 在 apache 上阅读 django 时,我发现说明我必须在 httpd.conf中进行更改> 文件让我想知道为什么站点可用文件夹中有任何虚拟主机文件。

3.托管两个站点之间的区别说 (.php ) 和 django

我读到有很多关于 VirtualHost 配置下的 DocumentRoot 配置的参考资料,而我的所有文档都在

/home/django/

如果托管 django 以外的两个站点之间存在差异,也许有人会很乐意回答。

现在进入正题

一个。我应该将我的项目文件夹移动到 /var/www/ 如果是这样为什么以及符号链接会起到作用

b.正如 django 教程建议的那样,我应该在 httpd.conf 中配置 WSGISCriptAlias 和其他设置,我应该这样做还是应该做什么,这对我来说非常重要,要理解也许有人可以指出我可以了解它的方向.

c。我有一个系统范围的 django 安装在虚拟主机中会产生这种效果。

d。我应该使用不同的端口来运行不同的网站吗?如果是,我将如何配置。

e。建议我使用 apache 和 mod_wsgi 测试的方法(请)

提前致谢。

【问题讨论】:

【参考方案1】:

我会尽量简洁。

    您真的需要阅读docs(甚至是this),而且您阅读的越多越好,因为您不会在这里得到关于如何在 apache 上服务 django-sites 的明确答案详细信息和示例。 你的项目是否上线取决于你,换句话说,它不应该放在/var/www/ 为了同时拥有 2 个以上的 django 项目,请尝试使用单独的 wsgi 守护进程。有一个look。这将不允许不同的应用程序相互干扰。然而,我建议在 /etc/apache2/sites-available 文件中为您的项目(作为虚拟主机)设置配置(通常每个文件一个)。 我强烈建议您不要使用全局安装的 django,而是为每个项目单独设置(使用 venv 或以其他方式取决于您)。这样您就可以使升级包和 django 的过程更加安全。

【讨论】:

我只改变了几行就让它工作了。我在两个虚拟主机块中都添加了 ServerAlias 并且它起作用了。

以上是关于Django VirtualHosting:如何在一个 VPS 上托管具有不同域的多个 django 项目的主要内容,如果未能解决你的问题,请参考以下文章

nginx配置多个站点

如何在 Django 之外使用 Django 模型?

Django:如何在 Django 表单中多次包含相同的字段?

Django:如何告诉 Django 它应该在哪里寻找应用程序?

如何在双连接关系之后在 Django 中执行查询(或:如何绕过 Django 对多对多“通过”模型的限制?)

如何在django查看一个group里的所有user