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,
- Nginx : servidor web y proxy
- Daphne : nuestro servidor ASGI (interfaz de puerta de enlace de servidor asíncrono) que servirá a nuestra aplicación Django
- 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