Как развернуть каналы django с Apache и Daphne?

Я пытаюсь развернуть это приложение django, которое использует каналы. Я использую Apache для обычных HTTP-запросов и хочу пересылать запросы веб-сокетов Дафне.

Вот некоторые из моих важных файлов:

конфигурация 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.js: 4 Соединение WebSocket с 'ws: //192.168.0.57/ws/chat/8/' не удалось: ошибка во время рукопожатия WebSocket: неожиданный код ответа: 403

Эта ошибка 403 возникает независимо от того, запускаю я Дафну или нет.

Что я здесь делаю не так? Примечание: приложение работает должным образом при использовании сервера разработки Django и докера для уровня канала, я думаю, проблема связана с моей конфигурацией Apache.


person dhsdshdhk    schedule 08.08.2020    source источник
comment
Я тоже делаю то же самое, но не могу найти никаких хороших подсказок, где его развернуть, каких-либо руководств или ссылок, которые вы можете дать для развертывания моих каналов асинхронный веб-сайт в Интернете   -  person Syed Bilal Ali    schedule 22.01.2021


Ответы (1)


Я понял. Чтобы включить перенаправление apache, нам необходимо:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel

Один из них не был включен, что вызвало ошибку 403 Forbidden.

person dhsdshdhk    schedule 10.08.2020