2

我希望能够在我工作的公司将 Python 和 Django 用于 Web 应用程序。我们目前使用 PHP 是因为每个人都熟悉它,并且易于为大量客户端部署。我们可以在单个虚拟服务器上托管 10 到 100 个网站。

是否可以通过单个 Apache 和 Python 安装为多个网站提供服务?每个网站都必须有自己的域,例如电子邮件帐户。

4

3 回答 3

3

我不会使用 Apache,目前的最佳实践是 Nginx 前端代理请求到 uWSGI 服务器。阅读有关 uWSGI Emperor 模式的信息。它用途广泛。http://uwsgi-docs.readthedocs.org/en/latest/Emperor.html。每个单独的应用程序都可以动态修改、删除添加。我们在PythonAnywhere使用它来服务数千个 Web 应用程序

您也可以使用其他 WSGI 服务器。根据我的经验,uWSGI 似乎是最具可扩展性的。

于 2013-01-22T20:49:19.327 回答
2

是的,这绝对是可能的。在我们的设置中,通常我们在django后面mod_wsgiApache并且nginx

您可以配置 apache 的 Virtualhost,以指向特定的mod_wsgi,而后者又指向特定的代码。

这里引用- 有关详细信息,请参阅 SO 帖子。

您可以尝试从单个实例提供至少两种方法:

  1. 使用 apache + mod_wsgi 并使用 WSGIApplicationGroup 和/或 WSGIProcessGroup 指令。我以前从来没有需要这些,所以不能完全确定它们会按照你想要的方式工作,但无论如何你绝对可以在守护进程模式下使用 mod_wsgi 来大大改善你的内存占用。

  2. 您可以使用 Django 中间件根据请求主机名拒绝/允许 URL(请参阅 Django 文档中的 HttpRequest.get_host() )。就此而言,即使它会对性能造成轻微影响,您也可以在所有视图上放置一个装饰器来检查传入的主机。

于 2013-01-22T20:51:07.857 回答
1

是的,您可以使用单个 Apache / mod_wsgi 安装轻松地为许多站点提供服务。通常,您会为每个网站使用单独的虚拟主机部分。请参阅虚拟主机文档。您想在每个虚拟主机配置中使用不同的 servername 指令来指定将哪些主机名路由到哪个配置。在基于名称的虚拟主机中查看更详细的文档

于 2013-01-22T20:53:27.437 回答