Heroku Go 应用程序崩溃

按照本教程,一切都在本地进行。将我的应用程序部署到 Heroku 并在浏览器上访问该应用程序后,我收到503 错误和消息:


应用程序错误 应用程序发生错误,无法提供您的页面。请稍后重试。如果您是应用程序所有者,请检查您的日志以了解详细信息。


日志说:


2015-09-08T16:31:53.976824+00:00 heroku[web.1]: State changed from crashed to starting

2015-09-08T16:31:56.174376+00:00 heroku[web.1]: Starting process with command `mywebsite`

2015-09-08T16:31:59.312461+00:00 app[web.1]: Listening on port: 39461

2015-09-08T16:32:56.471550+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch

2015-09-08T16:32:56.471550+00:00 heroku[web.1]: Stopping process with SIGKILL

2015-09-08T16:32:57.390752+00:00 heroku[web.1]: Process exited with status 137

2015-09-08T16:32:57.404208+00:00 heroku[web.1]: State changed from starting to crashed

2015-09-08T16:32:57.645135+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=boiling-eyrie-6897.herokuapp.com request_id=ec26... fwd="xx.xxx.xxx.xxx" dyno= connect= service= status=503 bytes=

2015-09-08T16:32:58.233774+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=boiling-eyrie-6897.herokuapp.com request_id=ef40...fwd="xx.xxx.xxx.xxx" dyno= connect= service= status=503 bytes=

我明白错误是什么,但这么小的教程应用程序怎么会导致启动超时(R10)?


如何更好地调试并修复应用程序以使其运行?


江户川乱折腾
浏览 180回答 2
2回答

梵蒂冈之花

当您通过heroku部署应用程序时,它不允许您指定端口号。换句话说,您不能将 Web 服务的端口号指定为8000或其他,heroku 在运行时决定端口号。因此,您不能使用以下代码:    log.Fatal(http.ListenAndServe(":8000", router))您可以做的是获取heroku 的运行时端口。简而言之,只需使用以下代码:    log.Fatal(http.ListenAndServe(":" + os.Getenv("PORT"), router))

偶然的你

您的应用程序需要侦听所有网络连接。如果它只侦听本地主机,heroku 的进程观察器将无法检测到您绑定了端口,也无法向您的应用程序发送请求。这意味着而不是:http.ListenAndServe("127.0.0.1:"+port, nil)您需要致电:http.ListenAndServe(":"+port, nil)另请参阅 Heroku 开始使用 Go 应用程序:https : //github.com/heroku/go-getting-started/blob/master/cmd/go-getting-started/main.go#L27
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go