Configuración para la aplicación Django WebSocket en Ubuntu Server

Este tutorial lo guiará a través de cada paso en detalle sobre cómo configurar su aplicación django websocket en un servidor Ubuntu 20.10 . Este artículo asume que está familiarizado con Django y tiene un servidor remoto ubuntu ejecutándose. Para obtener más información sobre Django, consulte – Tutorial de Django

Primero, veamos qué usaremos para poner esto en producción,

  1. Nginx : servidor web y proxy
  2. Daphne : nuestro servidor ASGI (interfaz de puerta de enlace de servidor asíncrono) que servirá a nuestra aplicación Django
  3. Redis Backend Server : que se encargará de nuestras conexiones de socket web ( ws:// )
 

Configuración de Nginx

Instalar Nginx y Supervisor

$ sudo apt install nginx supervisor

En su carpeta /etc/nginx/sites-available/ cree su servidor y agregue el contenido a continuación, 

upstream redis_backend_server{
server localhost:6379;
}

upstream app_server {
server localhost:9090;
}

server {
listen 80;
listen 443 ssl;
keepalive_timeout 700;

ssl_certificate <path to your cert>;
ssl_certificate_key <path to your key>;

server_name foo.com www.foo.com;
access_log <path to your access logs>;
error_log <path to your error logs>;

add_header X-Frame-Options SAMEORIGIN;
add_header Content-Security-Policy "frame-ancestors self https://foo.com";

location /static/ {

root /var/www/staticfiles/;

  }

if ($scheme = http) {
       return 301 https://$server_name$request_uri;
  }

location / {
       include proxy_params;
       proxy_pass http://app_server;
  }

location /ws {
   proxy_pass http://redis_backend_server;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";


   proxy_ssl_certificate <path to your cert>;
   proxy_ssl_certificate_key <path to your key>;

   proxy_redirect off;
   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;
   proxy_set_header X-Forwarded-Proto  $scheme;
   }
}

Nota : reemplace foo con su IP o su nombre de dominio.

Ahora guarda la configuración y reinicia Nginx,

$ sudo service nginx reload

Compruebe si las configuraciones se realizan correctamente como se muestra a continuación,

Una vez hecho esto, pasemos a nuestro servidor de aplicaciones real.

Configuración Dafne

Instalar Dafne

$ pip3 install daphne

Prueba si las cosas están funcionando,

$ daphne -p 8001 project.asgi:application

Debería ver algo similar en su terminal,

Vaya a <server-ip>:8001 en su navegador para comprobar si la aplicación funciona.

En la carpeta /etc/supervisor/conf.d/ cree django_server y agregue el contenido a continuación,

[fcgi-program:django_server]
# TCP socket used by Nginx backend upstream
socket=tcp://localhost:9090

# Directory where your site's project files are located
directory= <path>

# Each process needs to have a separate socket file, so we use process_num
# Make sure to update "mysite.asgi" to match your project name
command=<path to daphne> -u /run/daphne/daphne%(process_num)d.sock --endpoint fd:fileno=0 --access-log - --proxy-headers project.asgi:application

# Number of processes to startup, roughly the number of CPUs you have
numprocs=1
# Give each process a unique name so they can be told apart
process_name=asgi%(process_num)d

# Automatically start and recover processes
autostart=true
autorestart=true

# Choose where you want your log to go
stdout_logfile=<path to your asgi logs>
redirect_stderr=true

Nota : reemplace el proyecto con el nombre de su proyecto

una vez hecho esto, tenemos que crear un directorio para que se ejecuten nuestros sockets,

$ sudo mkdir /run/daphne/

Reiniciar y actualizar las configuraciones del supervisor,

$ sudo supervisorctl reread
$ sudo supervisorctl update

Sé que es mucho para asimilar, solo tenemos un paso más para poner en funcionamiento nuestro servidor. Así que quédate conmigo.

Configuración del servidor back-end de Redis

Este es el servidor que manejará todas nuestras conexiones de socket web que reenvía el servidor Daphne.

Instalar servidor redis

$ sudo apt install redis-server

Edite las configuraciones de Redis para ejecutar como un servicio con nuestro systemd

$ sudo nano /etc/redis/redis.conf

Cambie «supervised no» a «supervised systemd» en el archivo de configuración

$ sudo systemctl restart redis.service

Compruebe si el servidor está activo y en ejecución

sudo systemctl status redis

Debería obtener la siguiente respuesta

Finalmente, con todo en su lugar y funcionando, debería ver su aplicación en funcionamiento en su servidor. 

Publicación traducida automáticamente

Artículo escrito por santhoshkumar8 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *