如何在同一台服务器(Digitalocean 或 aws)上部署作为前端和 drf(django rest 框架)的反应

how to deploy react as frontend and drf (django rest framework) on same server( Digitalocean or aws )

我有 Django React 应用程序。我正在将 drf 用于 api 并作为前端做出反应。我想将它们分别部署在同一台服务器上的数字海洋上。有什么建议吗?

首先,我必须说我的主要堆栈是Django-uWSGI-NGNIX。有一个很棒的说明,您可以将其与 DigitalOcean 一起使用:

How To Serve Django Applications with uWSGI and Nginx

这是给 Gunicorn 的:

How To Set Up Django with Postgres, Nginx, and Gunicorn

我建议先尝试使用这些说明在服务器上部署 Django 应用程序。也许这只是一个简单的单页项目。 之后你可以修改你的 ngnix 配置。在我的例子中它将是:

upstream my_backend_server_name_or_whatever {
# server unix:///path/to/your/mysite/mysite.sock; -- if you want to use sockets
server 127.0.0.1:5000;
}

server {

    listen      80;
    server_name     yourdomain.com/api; #or /back, /backend, /what_you_like
    charset     utf-8;

    client_max_body_size 75M;  

    location /media #your locantions configs
    ....

    location / {
        uwsgi_pass  my_backend_server_name_or_whatever;
        include     /path/to/file/uwsgi_params;
    }
}

此外,您需要 运行 您的 CGI 服务器在端口 5000 上。之后,您可以通过 您的域访问您的 Django 应用程序。com/api它将向上游 localhost:5000。 使用您当前的 Django 应用程序尝试此步骤。之后,您可以配置您的 DRF 以使用这些链接。

如果可行,下一步。 运行 你的 NodeJS 服务器在另一个端口上,比如 5100。你可以为 Webpack 或原始 NodeJS 找到相同的说明。之后使用相同的技术,但用于 NodeJS 服务器。就我而言:

upstream my_frontend_server_or_whatever {
    server localhost:5100;
}

server {
    listen 80;
    server_name yourdomain.com;

    access_log /var/log/nginx/ide.access.log;
    error_log /var/log/nginx/ide.error.log;
    client_max_body_size 75M;

    location / {
        proxy_pass http://my_frontend_server_or_whatever;
        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-Proto https;
        proxy_redirect    off;
    }

}

现在你可以将这两个文件保存为 backend.conffrontend.conf, 运行 ngnix并按照上面的说明检查所有配置。之后,您可以在 React App 中使用 yourdomain.com/api 链接。

在我看来,这是尝试 React+DRF 最简单的方法。但这些配置仅用于开发!!不适用于生产。

希望对您有所帮助。