【问题标题】:How to configure Apache to run ASGI in Django Channels? Is Apache even required?如何配置 Apache 以在 Django Channels 中运行 ASGI?甚至需要Apache吗?
【发布时间】:2016-09-03 01:39:38
【问题描述】:

我构建了一个 django-project 并使用 Apache-WSGI 组合将其部署到生产环境中。为此,我添加了 apache2.conf如下图:

WSGIScriptAlias / /home/ubuntu/MyProject/MyProject/wsgi.py
WSGIPythonPath /home/ubuntu/MyProject

<Directory /home/ubuntu/MyProject/MyProject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

所以这意味着并不是所有对我网站的请求都首先转到 Apache,然后才允许 WSGI 发挥作用。因此,如果我关闭 Apache,网站将无法运行。

我现在已经安装了 Django-Channels。根据文档 (https://channels.readthedocs.io/en/latest/deploying.html) 中的“部署”部分,我有:

  1. 已安装 Redis(在我的 Django 项目服务器上)
  2. 运行工作服务器
  3. 运行 Daphne(接口服务器)
  4. 我目前已停止 Apache,网站拒绝连接。

【问题讨论】:

    标签: django websocket django-channels


    【解决方案1】:

    目前 Apache 没有 ASGI 服务器实现。这意味着您可以继续使用 Apache,但您将需要 Daphne。从本质上讲,Apache 将从您的主要 Web 服务器变为反向代理。

    这样做可能有一些价值:Python 开发人员多年来一直在反向代理模式下运行 nginx。但是,Daphne 是一个非常强大的 Web 服务器,它构建在 Twisted 的 Web 服务器之上,因此当然不需要 Apache。

    那么,在那一刻,我建议只使用 Daphne:让 Daphne 监听您的主要端口并完全禁用 Apache。如果您发现仍然需要 Apache 的某些功能,则需要将 Apache 配置为反向代理:一篇推荐的配置文章是 this one from Digital Ocean

    【讨论】:

    • 这是有道理的。我目前正在尝试弄清楚如何配置达芙妮。周围的任何资源都可能非常受欢迎。正如我在启动时看到的服务器显示“在 127.0.0.1:8000 启动服务器,通道层 MyProject.asgi:channel_layer”。由于它在端口 8000 上侦听,因此我对服务器的 http 请求被拒绝。
    • 您可以更改调用 daphne 的方式。 daphne 采用 -p 命令行参数来控制它绑定到的端口。
    • 你可能不想要 Daphne 服务静态资产,难道你还不想让 apache 或 nginx 坐在前面吗?他们是否需要额外的配置来代理 websocket 流量?
    • Daphne 可以很好地提供静态资产。这是一个 Twisted Web 服务器,完全适合这种情况。但是,如果您更愿意使用完全没问题的 nginx 或 Apache:只需以普通的反向代理形式配置它们,就像在 gunicorn 或 uwsgi 应用程序前运行它们一样。
    【解决方案2】:

    正如 Lukasa 所说,我停止了 Apache 服务器,这首先阻止了我的 django 应用程序向世界发布。 然后我运行了以下命令:

    sudo daphne MyProject.asgi:channel_layer --port 80 --bind 0.0.0.0 -v2
    sudo python manage.py runworker -v2
    

    这两个命令开始将应用程序传递给来自服务器外部的 http 请求。除了问题帖子中提到的以外,不需要其他配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 2011-12-15
      相关资源
      最近更新 更多