2

I am stuck at this problem and I need help. I am trying to configure nginx server with django-channels and I have the following configurations,
Nginx:

server {
       server_name {{ my_domain }};
       location = /favicon.ico {access_log off;log_not_found off;}

       client_max_body_size 32m;

    root /var/www/religion-python;

       location /static {
            alias /var/www/religion-python/static/;
       }

       location /media {
            alias /var/www/religion-python/media;
       }

       location / {
            include proxy_params;
            proxy_pass http://unix:/run/gunicorn.sock;
      }
      
      location /ws/ {
            proxy_pass http://0.0.0.0:9000;
            proxy_http_version 1.1;

            proxy_read_timeout 86400;
            proxy_redirect     off;

            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $server_name;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/api.agro.dots.md/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/api.agro.dots.md/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}


gunicorn:

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/var/www/religion-python
ExecStart=/var/www/religion-python/bin/gunicorn\
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          Agronomi.wsgi:application

[Install]
WantedBy=multi-user.target

I used this tutorial to configure gunicorn but for websocket I read on django-channel site that I have to setup daphne with supervisor which I don't know how and can't find how to do this. Can someone help me with some tutorials or tips on how to do this or maybe someone can explain me for what is need supervisor? I read that uvicorn is easy to install and configure with gunicorn and django-chanels but again I did found nothing about how to do this.

Community
  • 1
  • 1
Mindru Ion
  • 373
  • 5
  • 19
  • daphne is a different option for how to setup your asgi server as an alternative to uvicorn and gnuicorn. Supervisor is an alternative to using systemd to manage the process which can be used with daphne or gunicorn. – perelman Apr 11 '20 at 21:23
  • BTW, here's a blog post I made with my configuration files for doing this: https://aweirdimagination.net/2020/04/12/long-polling-in-django-channels/ (note my solution doesn't involve WebSockets, but you already have the `Upgrade` settings in your nginx configuration). – perelman Apr 14 '20 at 00:50

0 Answers0