Python 共享主机

Posted

技术标签:

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

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

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

【问题讨论】:

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

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

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于Python 共享主机的主要内容,如果未能解决你的问题,请参考以下文章

在共享主机中使用系统从 php 执行 python 脚本时显示错误(显示其他输出)

在没有 gcc 或 root 访问权限的共享主机上安装需要 gcc 的 python 模块

如何将文件从 docker 容器共享到主机

怎么设置虚拟机与主机共享文件夹

如何设置虚拟机系统与Mac主机不共享

WordPress主机和共享虚拟主机不同在哪?