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

时间:2019-12-09 07:11:21

标签: django reactjs django-rest-framework digital-ocean

我有Django react应用。我将drf用于api并作为前端进行响应。我想将它们分别部署在同一服务器上的数字海洋中。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

首先,我必须说我的主堆栈是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;
    }
}

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

如果可以,请执行下一步。在另一个端口(例如5100)上运行NodeJS服务器。您可以找到有关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.conf frontend.conf ,运行ngnix并按照上面的说明检查所有配置。之后,您可以在React App中使用 yourdomain.com/api 链接。

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

希望有帮助。