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

时间:2016-01-11 07:01:47

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

尝试在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。所以对于我的旧项目,给我的错误与以前一样。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以安装Heroku CLI。它包含一个名为“ heroku local”的工具-cli与基于Procfile的应用程序进行交互,就像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应用将在开发模式下启动并启用调试。因此,如果您在.env文件中设置“ DEBUG = True”,并使用“ heroku local”命令启动应用程序,则它将以开发人员模式启动。

希望这对从Google到这里的人有所帮助。


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

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

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