-1

尝试在 Heroku 上部署我的 django 应用程序时,我遵循了官方指南并设法让示例 '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。这样做是为了我的但是,旧项目给了我与以前相同的错误。

4

2 回答 2

2

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

于 2016-01-11T08:19:20.793 回答
1

您可以安装 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-10-31T18:38:12.383 回答