React 和 Django 部署

Posted

技术标签:

【中文标题】React 和 Django 部署【英文标题】:React and Django deployment 【发布时间】:2019-08-14 13:21:41 【问题描述】:

我开发了一个应用程序,我想将它部署在服务器上。对于后端,我使用 Django 和前端 React。 React 和 Django 之间的通信是通过 rest api 进行的。我还有一个 Arduino,它通过休息与 Django 通信。我在服务器上使用 nginx。如何部署此应用程序的最佳方式是什么?非常感谢

【问题讨论】:

【参考方案1】:

您需要一台服务器,租用服务器的流行选择是 AWS 或 Heroku。两者都有免费的有限试用版和向您解释如何部署项目的教程。 Heroku 应该更易于使用,而 AWS 提供了更多功能。链接:

-AWS Elastic Beanstalk:https://aws.amazon.com/it/elasticbeanstalk/

-Heroku:https://www.heroku.com

【讨论】:

我已经有一个带有 Debian 的 VPS,我在其中使用 Nginx 托管一些网站。我想在上面托管应用程序。【参考方案2】:

构建和编排工具有很多可用的替代方案。 例如Ansible 有许多用于 django、nginx、npm、数据库的模块...允许执行任何您想要的任何操作和命令。只需在您的存储库设置中配置一些 webhooks,这样您就可以通过推送新更改来触发自动部署,或者在需要时手动运行它。

【讨论】:

【参考方案3】:

我所做的是使用我的 VPS 来托管 Django 应用程序,然后使用 graphql(类似于 REST)从 React 与 Django 进行通信。

一般步骤是:

1) 在 VPS 服务器上,您将拥有一个包含 Django 应用程序的代码目录,就像在您的本地计算机上一样。只需使用 git 即可。

2) 在 VPS 服务器上创建一个 virtualenv,在您的代码目录中包含所有需要的 django/python 模块(通过 pip 添加)

3) 创建一个 nginx 配置文件。我使用 nginx 将 proxy_pass 传递给调用 python 应用程序的 apache。我的 nginx 在端口 80 上侦听,并且有这样一行:proxy_pass http://admin.mysite.com:81;。在 /etc/nginx/sites-enabled/ 中创建指向此配置的链接并重新启动 nginx。

4) 使用 <VirtualHost *:81> 创建一个 apache conf 文件,其中包含以下关键行:WSGIDaemonProcessWSGIScriptAlias,它们指向您的虚拟环境和 wsgi.py 文件。确保也启用此功能('a2ensite`)。

5) 您项目的 wsgi.py 文件将指向您应用的设置。

6) 重启 apache 和 nginx。

那是真正的粗略大纲,并且有编写的教程。只需搜索“django uwsgi nginx”,这将使您的 django 应用程序运行,并为您的反应应用程序调用适当的端点。

【讨论】:

以上是关于React 和 Django 部署的主要内容,如果未能解决你的问题,请参考以下文章

在 Heroku 上部署 React 和 Django

部署单独的 React 前端和 Django DRF API

如何在 AWS 上部署 Django Rest Framework 和 React

Heroku 在通过 Django 部署之前构建 React 应用程序

部署React前端和Django后端的3种方法

部署Django+React到Heroku - 未捕获的语法错误。意外的标记'<'