Как настроить apache для использования с asgi - PullRequest
0 голосов
/ 07 октября 2018

Я следовал некоторым руководствам по настройке каналов django и чтению документации на asgi, а также испытывал трудности с передачей запросов на websocket нужному слушателю daphne.

Вот что показывает daphne:

$ $ daphne -v2 -b 127.0.0.1 -p 8443 asgi:application

2018-10-07 03:48:33,533 INFO     Starting server at tcp:port=8443:interface=127.0.0.1
2018-10-07 03:48:33,534 INFO     HTTP/2 support not enabled (install the http2 and tls Twisted extras)
2018-10-07 03:48:33,534 INFO     Configuring endpoint tcp:port=8443:interface=127.0.0.1

(Примечание: я также пробовал версию SSL, с $ daphne -e ssl:8444:privateKey=privkey.pem:certKey=fullchain.pem asgi:application -b 127.0.0.1 -p 8443

И в моем файле apache.conf:

WSGIScriptAlias / home/david/data-py/wsgi.py
WSGIPythonPath /home/david/lib/python3.6/site-packages

RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* wss://127.0.0.1:8443%{REQUEST_URI} [P,L]
<VirtualHost *:80>
    ServerName d.data.com
    <Directory /home/david/data-py>
       Order allow,deny
       Allow from all
       Require all granted
    </Directory>
    RewriteCond %{SERVER_NAME} =d.data.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

И, наконец,, в реальном браузере я делаю:

new WebSocket('wss://d.data.com/ws/registration/asdf1')
# it was working on localhost at "wss://localhost:8000/ws/registration/02488"

И там все включено:

  • Перезапись a2enmod
  • прокси a2enmod
  • a2enmod proxy_wstunnel

Я что-то упускаю в вышеупомянутой конфигурации? Каждый раз, когда я захожу на страницу веб-сокета, это просто 404, так что это, очевидно, не "подхватывает" ws-запрос. Возможно, это связаноиспользовать https? В документации django-channel или asgi нет ничего, что я мог бы найти.

Наконец, если это будет полезно:

david@instance-3:~$ sudo netstat -ntlp | grep LISTEN
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      400/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1010/sshd           
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      3713/mysqld         
tcp6       0      0 :::80                   :::*                    LISTEN      14853/apache2       
tcp6       0      0 :::22                   :::*                    LISTEN      1010/sshd           
tcp6       0      0 :::443                  :::*                    LISTEN      14853/apache2      
...