在Heroku上部署Django应用程序:错误[R10]

问题描述 投票:-1回答:2

试图在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。这样做是为了我的然而,旧项目给了我与以前相同的错误。

django python-2.7 heroku web-deployment django-deployment
2个回答
1
投票

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


1
投票

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

从app文件夹中,您应该始终尝试在本地运行应用程序

heroku本地

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

heroku config --app mysuperdjango >> .env.heroku

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

这是Django的提示:

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

该行将搜索环境变量“DEBUG”。如果它不存在,如果默认为False,但如果它为'True',则Django应用程序将以dev模式启动并启用调试。因此,如果您设置.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

© www.soinside.com 2019 - 2024. All rights reserved.