Implementé una aplicación simple de Django en un VPS, aquí está mi entorno:
virtualenv gunicorn nginx systemdTodo funciona perfectamente, puedo ver mi plantilla cargando. También agregué una pequeña función de Django Channels, pero esa parte no funciona; así que, aunque puedo usarlo en WSGI sin ningún problema, si trato de comunicarme con un Consumidor, obtendré un error. Entonces mi pregunta es: ¿cómo puedo ejecutar canales también en producción?
Esto es lo que hice actualmente:
/etc/nginx/sitios-disponibles/miproyecto
server { listen 80; server_name 54.39.20.155; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /WaitingRoomVenv/WaitingRoom/WaitingRoom/static; } location / { include proxy_params; proxy_pass http://unix:/WaitingRoomVenv/WaitingRoomEnv.sock; } }/etc/systemd/system/gunicorn.servicio
[Unit] Description=gunicorn daemon After=network.target [Service] User=root Group=www-data WorkingDirectory=/WaitingRoomVenv/WaitingRoom ExecStart=/WaitingRoomVenv/WaitingRoomEnv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/WaitingRoomVenv/WaitingRoomEnv.sock WR.wsgi:application [Install] WantedBy=multi-user.target Para iniciar gunicorn: sudo systemctl start gunicorn Para iniciar nginx: sudo systemctl restart nginx
Para acceder al canal, debe ejecutar a través de un servidor ASGI como daphne (que se envía con canales) en lugar de WSGI geunicorn que está utilizando, consulte:
https://channels.readthedocs.io/en/latest/deploying.html
para iniciar el servidor daphne -p 8001 myproject.asgi:application luego en su nginx necesita pasar el proxy al puerto 8001