如何将 django/react 应用程序部署到具有不同目录结构的 heroku

Posted

技术标签:

【中文标题】如何将 django/react 应用程序部署到具有不同目录结构的 heroku【英文标题】:how to deploy django/react app to heroku with different directory structure 【发布时间】:2020-12-22 04:18:44 【问题描述】:

我有一个使用本教程 here 创建的 django/react 应用程序

虽然略有不同,但我尝试使用本教程 here 将我的应用程序部署到 heroku

虽然教程后面的目录结构有所不同。我的目录结构如下...

django-todo-react/
  backend/
    backend/
    todo/
    manage.py
    ...
  frontend/
    all my react stuff...

在我的 django-todo-react 文件夹(项目根目录)中,我有 requirements.txtProcfilepackage.json 和 '.gitignore` 文件。

据我了解,Procfile 应该包含类似web: gunicorn backend.wsgi 的内容,但是因为我的Procfile 在根目录中,所以我改为使用下面的web: gunicorn backend/backend.wsgi,这看起来很奇怪,但基本上我进入我的后端文件夹有我的实际后端项目,我从django-admin startproject backend 开始并获得wsgi

我添加了我提到的第二个教程中的所有其他内容this one,但仍然没有这样的运气。我收到 COLLECT_STATIC 错误,如果我将错误静音,一切都会过去,但在打开我的 heroku 应用程序时我会收到 application error

我已经尝试使用第二个教程部署一个应用程序,一切正常,但具有第二个教程的目录结构。我认为将我的Procfile 更改为web: gunicorn backend/backend.wsgi 会指向正确的事情。

所以我基本上只想拥有一个服务器文件夹,在我的情况下是我的后端文件夹和一个客户端文件夹,对我来说它是前端。不过这对我不起作用。

【问题讨论】:

【参考方案1】:

Gunicorn 需要类似 Python 的路径,因此在您的情况下,在 Procfile 中使用 web: gunicorn django-todo-react.backend.backend.wsgi 应该可以工作。

【讨论】:

我明白了,谢谢。我改变了这一点,这当然是我的应用程序中的一个问题,但仍然有这个错误FileNotFoundError: [Errno 2] No such file or directory: '/tmp/build_5654aafc/backend/frontend/build/static',这与我一直看到的Error while running '$ python backend/manage.py collectstatic --noinput'. 错误相同【参考方案2】:

所以我一直在尝试找出解决问题的方法,并在仔细阅读控制台后发现collectstatic 找不到我的static 文件夹的任何错误。它从 Django 项目中查找我的静态文件夹,然后是前端文件夹、构建文件夹,最后是静态文件夹。

我的 Django 项目没有前端文件夹,因此我没有在我的目录的根目录中创建我的 react 应用程序,而是在我的 Django 项目中创建它并确保运行 yarn build 以便我的前端文件夹包含 build/static

这很好用,所以如果有人遇到类似问题,我希望这会有所帮助。此外,我的问题仍然是如何让它与两个单独的目录一起工作,一个用于我的后端,一个用于我的前端。我很确定这与STATIC_DIRS 有关,但这只是猜测

【讨论】:

以上是关于如何将 django/react 应用程序部署到具有不同目录结构的 heroku的主要内容,如果未能解决你的问题,请参考以下文章

Django React -- Heroku 上的部署错误(找不到页面 404)

使用 nginx gunicorn 在 digitalocean 上部署 django react

在 Heroku 上运行 Django/React 应用程序时,如何让 collectstatic 工作?

使用 Django + react-router 找不到 404 页面

Django,创建反应应用程序,Heroku

带有嵌套查询(Django + React)的 Graphql 瓶颈性能使前端应用程序无法使用。请帮忙 :'(