2016-09-09 5 views
7

ロードバランサでAWS Elastic Beanstalkで動作するようにdjangoチャンネルのチャットアプリケーションを取得しようとしています。DjangoチャンネルでElastic Beanstalkを使用するとWebsocketエラーが発生する

私は基本的にhttps://github.com/jacobian/channels-exampleのコードをElastic Beanstalkで使用するように変更しています。私は、コマンドを使用して上で正常にローカルで実行することができる午前

python manage.py runserver 

問題であり、私はElastic Beanstalkででそれを展開するとき、私はチャットアプリが起動され、次のエラーを取得

WebSocket connection to 'wss://mydomain.com/test/' failed: Error 
during WebSocket handshake: Unexpected response code: 200 

私が試しました溶液はhttps://stackoverflow.com/a/29831723/3667089で提案が、それはちょうど私が既にTCP 80にロード・バランサ・リスナー・ポートを変更し、異なるエラーコード

WebSocket connection to 'wss://mydomain.com/test/websocket' failed: 
Error during WebSocket handshake: Unexpected response code: 404 

を示し、得られましたセキュア・リスナー・ポートをSSL 443に変更するためのSSL証明書。ただし、引き続き同じエラーが発生します。

私はWebsockets with socket.io on AWS Elastic Beanstalkも読んでいますが、Djangoのプロキシサーバーを設定するオプションはありません。私はApacheをデフォルトで使用していると思います。

Elastic Beanstalkの設定には何が欠けていますか?

これを変更する方法はありますか?daphneサーバーをasgiで実行するには?

+0

を再起動して、サーバーを起動し、私はAWS VPS上のチャンネルを実行している、と私はそれが仕事を得るためにスーパーバイザーを使用する必要がありました。チャンネルの文書では、動作させるためにサーバ( 'venv/bin/daphne app.asgi:channel_layer')とワーカー(' python manage.py runwoker')の両方を実行する必要があると言われています。あなたが望むなら、私は答えに自分のsupervisord.confを投稿することができますが、私はElastic Beanstalkでどのように動作するのか分かりません。 – Brobin

+0

@Brobinはい、それは非常に高く評価されます – user3667089

+0

申し訳ありませんが、私は遅すぎるが、あなたが使用しているロードバランサを知っているかもしれませんか?古典的であれば、ネイティブでウェブソケットをサポートしていません。 –

答えて

0

私はElastic Beanstalkではありませんが、ここではVPSの設定です。 Ubuntu 14.04とnginxおよびスーパーバイザー。スーパーバイザの仕事は、サーバーとワーカープロセスが常に実行されていることを確認することです。 nginxのは、ローカルホスト上のポート8000​​をリッスンし、8080にと443

# nginx.conf 
server { 
    listen 8080 default_server; 
    server_name example.com; 
    return 301 https://example.com$request_uri; 
} 

server { 
    listen 443 default_server ssl; 
    server_name example.com; 

    # ... SSL stuff 

    # Send root to the ASGI server 
    location/{ 
     proxy_pass http://localhost:8000; 
     proxy_http_version 1.1; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
     proxy_set_header Host $host; 
    } 

    # Static Files 
    location /static/ { 
     root /home/ubuntu/project; 
    } 

    # Media Files 
    location /media/ { 
     root /home/ubuntu/project; 
    } 
} 

がここに上司のための私の構成は次のようになりますことを転送します。私は単に監督sudo service supervisor restart

# supervisord.conf 
[program:project_server] 
directory=/home/ubuntu/project/ 
command=/home/ubuntu/project/venv/bin/daphne project.asgi:channel_layer --port 8000 --bind 0.0.0.0 

[program:project_worker] 
process_name=project_worker%(process_num)s 
numprocs=3 
directory=/home/ubuntu/project/ 
command=/home/ubuntu/project/venv/bin/python /home/ubuntu/project/manage.py runworker 

[group:project] 
programs=project_server,project_worker 
関連する問題