【问题标题】:How to deploy django channels with Apache and Daphne?如何使用 Apache 和 Daphne 部署 django 频道?
【发布时间】:2020-11-28 21:26:09
【问题描述】:

我正在尝试部署这个使用频道的 django 应用程序。我使用 Apache 处理常规 HTTP 请求,并希望将 Web 套接字请求转发给 Daphne。

这是我的一些重要文件:

apache 配置:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://127.0.0.1:8001%{REQUEST_URI} [P,QSA,L]

Alias /static /home/anna/tchan/static
<Directory /home/anna/tchan/static>
Require all granted
</Directory>

Alias /media /home/anna/tchan/media
<Directory /home/anna/tchan/media>
Require all granted
</Directory>

<Directory /home/anna/tchan/tchan>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

WSGIScriptAlias / /home/anna/tchan/tchan/wsgi.py
WSGIDaemonProcess django_app python-path=/home/anna/tchan python-home=/home/anna/tchan/venv
WSGIProcessGroup django_app

</VirtualHost>

settings.py的最后几行:

ASGI_APPLICATION = 'tchan.routing.application'

CHANNEL_LAYERS = {
'default': {
'BACKEND': 'channels_redis.core.RedisChannelLayer',
'CONFIG': {
"hosts": [('127.0.0.1', 8001)],
},
},
}

asgi.py

import os
import django
from channels.routing import get_default_application

from django.core.asgi import get_asgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tchan.settings')
django.setup()
application = get_default_application()

有了这些,我运行daphne -p 8001 tchan.asgi:application,然后运行sudo service apache2 reload。 最后,在我的页面中测试 websocket 时,会发生以下情况:

websocket.js:4 WebSocket 连接到“ws://192.168.0.57/ws/chat/8/”失败:WebSocket 握手期间出错:意外响应代码:403

无论我是否在运行 daphne,都会发生此错误 403。

我在这里做错了什么? 注意:当使用 Django 的开发服务器和 docker 作为通道层时,应用程序按预期工作,我认为问题出在我的 Apache 配置上。

【问题讨论】:

  • 我也在做同样的事情,但找不到任何好的线索从哪里部署它,你可以提供任何教程或参考来部署我的渠道异步网站互联网

标签: django apache reverse-proxy channels daphne


【解决方案1】:

我想通了。要启用 apache 重定向,我们需要:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel

其中一个未启用导致 403 Forbidden。

【讨论】:

    猜你喜欢
    • 2019-12-17
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2021-08-21
    • 2020-06-09
    • 2018-05-25
    • 2017-07-14
    • 1970-01-01
    相关资源
    最近更新 更多