如何在同一台服务器(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.conf 和 frontend.conf, 运行 ngnix并按照上面的说明检查所有配置。之后,您可以在 React App 中使用 yourdomain.com/api 链接。
在我看来,这是尝试 React+DRF 最简单的方法。但这些配置仅用于开发!!不适用于生产。
希望对您有所帮助。
我有 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.conf 和 frontend.conf, 运行 ngnix并按照上面的说明检查所有配置。之后,您可以在 React App 中使用 yourdomain.com/api 链接。
在我看来,这是尝试 React+DRF 最简单的方法。但这些配置仅用于开发!!不适用于生产。
希望对您有所帮助。