2016-09-09 8 views
7

मैं एक लोड बैलेंसर के साथ एडब्ल्यूएस लोचदार बीनस्टॉक पर काम करने के लिए django चैनलों द्वारा संचालित चैट एप प्राप्त करने का प्रयास कर रहा हूं।Django चैनलों के साथ लोचदार बीनस्टॉक का उपयोग करते समय वेबसाइट की त्रुटि

मैं मूल रूप से https://github.com/jacobian/channels-example से कोड को लोचदार बीनस्टॉक के साथ काम करने के लिए संशोधित कर रहा हूं। मैं आदेश के साथ पर सफलतापूर्वक स्थानीय स्तर पर यह चलाने के लिए सक्षम हूँ

python manage.py runserver 

समस्या है जब मैं लचीला बीनस्टॉक के साथ तैनात है, मैं जब चैट एप्लिकेशन शुरू की है निम्नलिखित त्रुटि मिलती है

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

मैंने कोशिश की समाधान https://stackoverflow.com/a/29831723/3667089 में प्रस्तावित लेकिन यह सिर्फ एक अलग त्रुटि कोड

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

मैं भी पहले से ही टीसीपी से 80 भार संतुलन श्रोता पोर्ट बदल दिखाया और प्राप्त एसएसएल प्रमाणपत्र सुरक्षित श्रोता बंदरगाह को एसएसएल 443 में बदलने के लिए है लेकिन फिर भी वही त्रुटि मिलती है।

मैंने Websockets with socket.io on AWS Elastic Beanstalk भी पढ़ा लेकिन Django के लिए प्रॉक्सी सर्वर को कॉन्फ़िगर करने का कोई विकल्प नहीं है, मुझे लगता है कि यह डिफ़ॉल्ट रूप से अपाचे का उपयोग कर रहा है।

इसे बनाने के लिए लोचदार बीनस्टॉक की कॉन्फ़िगरेशन के लिए मुझे क्या याद आ रही है?

क्या इसे बदलने का कोई तरीका है ताकि हम एग्गी के साथ डेफने सर्वर चला सकें?

+0

मैं एक एडब्ल्यूएस VPS पर चैनलों चल रहा हूँ द्वारा सर्वर प्रारंभ, और मैं पर्यवेक्षक उपयोग करने के लिए यह काम करने के लिए पाने के लिए था। चैनल दस्तावेज़ों का कहना है कि चीजों को काम करने के लिए आपको सर्वर ('venv/bin/daphne app.asgi: channel_layer') और श्रमिक (' python manage.py runwoker') दोनों चलाने की आवश्यकता है। अगर आप चाहें तो मैं अपने supervisord.conf को उत्तर में पोस्ट कर सकता हूं, लेकिन मुझे यकीन नहीं है कि चीजें लोचदार बीनस्टॉक पर कैसे काम करती हैं। – Brobin

+0

@ ब्रोबिन हां, इसकी बहुत सराहना की जाएगी – user3667089

+0

क्षमा करें अगर मुझे बहुत देर हो चुकी है, लेकिन क्या मुझे पता है कि आप किस लोड बैलेंसर का उपयोग कर रहे हैं? यदि यह क्लासिक है, तो यह मूल रूप से websockets का समर्थन नहीं करता है। –

उत्तर

0

मैं लोचदार बीनस्टॉक पर नहीं हूं, लेकिन यहां एक वीपीएस के लिए मेरी कॉन्फ़िगरेशन है। उबंटू 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 
संबंधित मुद्दे