记录下如何部署应用到 Heroku。
注意: 本文只关注如何部署自己的 GitHub 代码到 Heroku。
先参考 Heroku 提供的 Demo 了解大概情况。
- 依赖 godep;
- 生成 godep 依赖。 godep save ./… 。不要用 -r 参数;
- 包括那些依赖包, 一并提交到github;
- 需要Procfile, web: app_name (二进制名称);
- 安装heroku cli, 可以看log。
调整代码, 主要是调整启动服务的端口。
1 | port := os.Getenv("PORT") |
先在本地试试能不能启动。如果本地都不能正常运行, 在 Heroku上也是会失败的。
1 | heroku local |
正常启动会看到类似下面的信息):
1 | forego | starting web.1 on port 5000 |
Heroku 默认使用 5000
端口。 heroku
命令行工具会自动提供 $PORT
环境变量,不用手动设置。
上述操作都是调整程序本身, 下面去 heroku 的 dashboard 创建应用。
- create new app;
- 填写app name (可选);
- 选择
Deploy
=>GitHub
; - GitHub 授权后,选择需要部署的 repo;
- 选择要部署的Branch, 然后点击
Deploy Branch
; - 看 Build 的日志;
- 如果一切正常就可以访问了。
上述操作都是很简单的, 打开Dashboard 一目了然,这里不再提供截图操作。
Trouble Shooting
如果访问遇到 application error
, 则
1 | heroku logs --tail --app you_app_name |
TIPS: 看日志往往能解决 99% 的问题。
如果发现是
1 | at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=initials.herokuapp.com request_id=4eea4848-47e9-4c78-baf2-1c90c1c98980 fwd="120.31.68.166" dyno= connect= service= status=503 bytes= |
查询文档, 发现是
H14 - No web dynos running
This is most likely the result of scaling your web dynos down to 0 dynos. To fix it, scale your web dynos to 1 or more dynos:
1 $ heroku ps:scale web=1
执行上面的命令修复即可。
参考: