【问题标题】:Python Shared HostingPython 共享主机
【发布时间】:2013-01-06 04:09:03
【问题描述】:

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

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

【问题讨论】:

  • 是的,有可能。对这个主题进行快速的 Google 搜索会找到这个问题的许多答案。
  • 使用 virtualenv 为每个网站创建“沙盒”,使用 Gunicorn 或 uWSGI 运行网站,使用 Nginx 作为前端服务器并将其配置为直接提供静态内容,因此您只需点击 wsgi 应用程序对于动态内容。使用 Google 和一些反复试验可以轻松找到详细信息。

标签: python django hosting shared


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    是的,这绝对是可能的。在我们的设置中,通常我们在mod_wsgiApachenginx 后面有django

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

    引用自 here - 请参阅 SO 帖子了解更多信息。

    至少有两种方法可以尝试从一个单一的服务 实例:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-12-09
        • 2018-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 2023-03-31
        • 2013-01-06
        • 1970-01-01
        相关资源
        最近更新 更多