在Ubuntu服务器上配置Django WebSocket应用程序

在Ubuntu服务器上配置Django WebSocket应用程序

本教程将指导你详细了解如何在_Ubuntu 20.10服务器上配置你的Django websocket应用程序的每个步骤。本文假设你对Django很熟悉,并且有一台ubuntu远程服务器正在运行。要了解更多关于Django的信息,请查看 – Django教程

首先,让我们看看我们将用什么来把它投入生产。

1.Nginx – 网络和代理服务器
2.Daphne – 我们的ASGI(异步服务器网关接口)服务器,它将为我们的Django应用程序提供服务。
3.Redis后端服务器 – 它将处理我们的网络套接字连接 ( ws:// )

Nginx 配置

安装Nginx和监督员

$ sudo apt install nginx supervisor

在你的/etc/nginx/sites-available/文件夹中创建你的服务器并添加以下内容。

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_namerequest_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 Upgradehttp_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-IPremote_addr;
   proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Hostserver_name;
   proxy_set_header X-Forwarded-Proto  $scheme;
   }
}

注意 – 用你的IP或你的域名代替foo。

现在保存配置并重启Nginx。

$ sudo service nginx reload

检查配置是否正确,如下所示。

在Ubuntu服务器上配置Django WebSocket应用程序

一旦完成了这些,让我们转向我们的实际应用服务器。

Daphne 配置

Install Daphne

$ pip3 install daphne

测试事情是否在运作。

$ daphne -p 8001 project.asgi:application

你应该在你的终端看到类似的东西。

在Ubuntu服务器上配置Django WebSocket应用程序

在你的浏览器中进入:8001,检查应用程序是否正常。

在/etc/supervisor/conf.d/文件夹中创建django_server并添加以下内容。

[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

注意 – 用你的项目名称替换项目

一旦完成,我们就必须为我们的插座创建一个目录来运行。

$ sudo mkdir /run/daphne/

重新启动并更新监督器的配置。

$ sudo supervisorctl reread
$ sudo supervisorctl update

我知道这有很多东西需要接受,我们只需再走一步就能让我们的服务器启动和运行。所以,请跟着我。

Redis后端服务器配置

这台服务器将处理Daphne服务器转发的所有网络套接字连接。

安装redis服务器

$ sudo apt install redis-server

编辑Redis的配置,使其以服务的形式运行在我们的systemd上

$ sudo nano /etc/redis/redis.conf

将配置文件中的 “supervised no “改为 “supervised systemd”。

$ sudo systemctl restart redis.service

检查服务器是否处于活跃和运行状态

sudo systemctl status redis

你应该得到以下回应

在Ubuntu服务器上配置Django WebSocket应用程序

最后,在所有的地方和运行中,你应该看到你的应用程序在你的服务器上启动和运行。

在Ubuntu服务器上配置Django WebSocket应用程序

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程