【问题标题】:Deploying Django app on Heroku: Error [R10]在 Heroku 上部署 Django 应用程序:错误 [R10]
【发布时间】:2016-04-15 10:11:04
【问题描述】:

尝试在 Heroku 上部署我的 django 应用程序,我关注了官方 guide 并设法让示例 'hellodjango.app' 工作。

现在下一步是部署我自己的项目,但是这样做会在 Heroku 上显示以下错误:

日志文件:

2016-01-11T06:25:15.235676+00:00 app[web.1]: Performing system checks...
2016-01-11T06:25:15.235697+00:00 app[web.1]: 2016-01-11T06:25:15.235697+00:00 app[web.1]: 
2016-01-11T06:25:15.244321+00:00 app[web.1]: System check identified no issues (0 silenced).
2016-01-11T06:25:15.276207+00:00 app[web.1]: January 11, 2016 - 06:25:15
2016-01-11T06:25:15.276211+00:00 app[web.1]: Django version 1.8, using settings 'bittania.settings'
2016-01-11T06:25:15.276212+00:00 app[web.1]: Starting development server at http://127.0.0.1:8000/
2016-01-11T06:25:15.276213+00:00 app[web.1]: Quit the server with CONTROL-C.
2016-01-11T06:25:42.412857+00:00 heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path="/" host=shjdhjsd.herokuapp.com request_id=781298dc-bc3d-4ad8-8da8-1a49ffb7d983 fwd="**MYIPADDRESS**" dyno= connect= service= status=503 bytes=
2016-01-11T06:26:12.694810+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2016-01-11T06:26:12.694810+00:00 heroku[web.1]: Stopping process with SIGKILL
2016-01-11T06:26:13.522957+00:00 heroku[web.1]: State changed from starting to crashed
2016-01-11T06:26:13.509271+00:00 heroku[web.1]: Process exited with status 137

我已经设置了一个 Procfile、gitignore 和 wsgi.py

我做错了什么?

编辑

将 Procfile 更改为 "`web: gunicorn sitename.wsgi --log-file -- 。是的,这适用于新应用程序,它向我显示 Django 欢迎屏幕 __> pure-depths-4933.herokuapp.com。正在做所以对于我的旧项目,给我和以前一样的错误。

【问题讨论】:

  • 你的 procfile 里有什么?
  • web: python manage.py runserver 8000 --noreload
  • 请按照指南中的说明正确配置您的生产应用程序。

标签: django python-2.7 heroku web-deployment django-deployment


【解决方案1】:

在那些关于如何部署到 Heroku 的非常好的说明中,没有任何地方提到将 runserver 放在你的 Procfile 中。您需要合适的服务器,例如 gunicorn。

【讨论】:

  • 将 Procfile 更改为 "`web: gunicorn sitename.wsgi --log-file -- 。是的,这适用于新应用程序,它显示了 Django 欢迎屏幕 __ > pure-depths-4933.herokuapp.com。但是,对我的旧项目这样做,会出现与以前相同的错误。
  • 最后的双连字符对我不起作用。将其更改为单个连字符有效。
【解决方案2】:

您可以安装 Heroku CLI。它包含一个名为“heroku local”的工具——一个与基于 Procfile 的应用程序交互的 cli,就像 Heroku dyno 启动你的应用程序一样。

从 app 文件夹中,您应该始终尝试使用

在本地运行应用程序

heroku 本地

该工具将读取您的 Procfile 并尝试执行每个进程(实际上是文件中的一行)并使用您在 .env 文件中设置的值设置环境变量。您可以启用调试或详细日志记录。 您甚至可以使用以下命令获取 heroku 应用程序的所有环境变量:

heroku 配置 --app mysuperdjango >> .env.heroku

您可以将所需的任何内容复制粘贴到 .env。

以下是给 Django 的提示:

DEBUG = bool("True" == os.environ.get('DEBUG', False))

这一行将搜索环境变量“DEBUG”。如果它不存在,如果默认为 False,但如果它是“True”,则 Django 应用程序将以开发模式启动并打开调试。因此,如果您在 .env 文件中设置“DEBUG=True”并使用“heroku local”命令启动应用程序,它将以开发模式启动。

希望这可以帮助任何从谷歌到这里的人。


https://devcenter.heroku.com/articles/heroku-cli

https://devcenter.heroku.com/articles/config-vars

https://devcenter.heroku.com/articles/heroku-local

【讨论】:

  • 请详细说明你的答案
  • 更新了答案! :)
猜你喜欢
  • 2018-04-07
  • 2015-09-22
  • 2019-01-29
  • 1970-01-01
  • 2020-08-08
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多