我希望能够在我工作的公司将 Python 和 Django 用于 Web 应用程序。我们目前使用 PHP 是因为每个人都熟悉它,并且易于为大量客户端部署。我们可以在单个虚拟服务器上托管 10 到 100 个网站。
是否可以通过单个 Apache 和 Python 安装为多个网站提供服务?每个网站都必须有自己的域,例如电子邮件帐户。
我不会使用 Apache,目前的最佳实践是 Nginx 前端代理请求到 uWSGI 服务器。阅读有关 uWSGI Emperor 模式的信息。它用途广泛。http://uwsgi-docs.readthedocs.org/en/latest/Emperor.html。每个单独的应用程序都可以动态修改、删除添加。我们在PythonAnywhere使用它来服务数千个 Web 应用程序
您也可以使用其他 WSGI 服务器。根据我的经验,uWSGI 似乎是最具可扩展性的。
是的,这绝对是可能的。在我们的设置中,通常我们在django
后面mod_wsgi
,Apache
并且nginx
您可以配置 apache 的 Virtualhost,以指向特定的mod_wsgi
,而后者又指向特定的代码。
从这里引用- 有关详细信息,请参阅 SO 帖子。
您可以尝试从单个实例提供至少两种方法:
使用 apache + mod_wsgi 并使用 WSGIApplicationGroup 和/或 WSGIProcessGroup 指令。我以前从来没有需要这些,所以不能完全确定它们会按照你想要的方式工作,但无论如何你绝对可以在守护进程模式下使用 mod_wsgi 来大大改善你的内存占用。
您可以使用 Django 中间件根据请求主机名拒绝/允许 URL(请参阅 Django 文档中的 HttpRequest.get_host() )。就此而言,即使它会对性能造成轻微影响,您也可以在所有视图上放置一个装饰器来检查传入的主机。
是的,您可以使用单个 Apache / mod_wsgi 安装轻松地为许多站点提供服务。通常,您会为每个网站使用单独的虚拟主机部分。请参阅虚拟主机文档。您想在每个虚拟主机配置中使用不同的 servername 指令来指定将哪些主机名路由到哪个配置。在基于名称的虚拟主机中查看更详细的文档