如何将 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.txt
、Procfile
、package.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 工作?