如何将 Golang WebApp 部署到 Heroku?
Go,也称为“Golang”,近年来在 DevOps 专业人士中越来越受欢迎。有许多用 Go 编写的工具,包括 Docker 和 Kubernetes,但它们也可以用于 Web 应用程序和 API。虽然Golang的执行速度与编译语言一样快,但在其中编码感觉更像是使用编译器、运行程序等标准工具进行解释,您将获得开箱即用的完整体验。
当您将其与旨在充分利用当今多核或多 CPU 执行系统的强大且易于理解的并发框架相结合时,Go 社区发展如此迅速的原因就很清楚了。看似简单的设计使 Go 易于学习和掌握,但它的功能不受限制,因为它是根据特定目标创建的。在本文中,我们将学习如何在 go 中制作一个简单的 Web 应用程序并将其部署到 Heroku 中,而不会有任何麻烦。
将 Golang 应用程序部署到 Heroku
第 1 步:注册 Heroku 帐户。如果您没有 Heroku 帐户,请立即创建一个。无需注册信用卡即可免费托管多达 5 个应用程序。
第 2 步:下载并安装 Heroku 的命令行界面 (CLI)。使用 Heroku 的命令行界面 (CLI),您可以访问 Heroku 的服务。 Heroku 和 git 命令在安装后就可以从您的命令窗口中使用。
第三步:登录访问Heroku。我们需要做的第一件事是为项目创建一个目录,然后在go mod init命令的帮助下将其初始化为一个Go模块。使用您在创建 Heroku 帐户时使用的电子邮件地址和密码登录:
$ heroku login
Enter your Heroku credentials.
Email: muthuannamalai2002@gmail.com
Password (typing will be hidden):
Logged in as muthuannamalai2002@gmail.com
Heroku and Git require authentication in order to function.
第 4 步:创建项目目录。我们需要做的第一件事是为项目创建一个目录,然后使用 go mod init 命令将其初始化为 Go 模块。
mkdir app
cd app
go mod init muthuannamalai12/app
建议您使用您的 GitHub 帐户用户名,以便您的项目名称是唯一的,并且您的项目依赖项不会相互冲突。这不是必要条件,您也可以使用任何您想要的名称。
现在,您应该在目录中看到一个名为 go.mod 的文件。这是 Go 用来跟踪其项目依赖项的文件。当您查看文件的内容时,它应该看起来像这样:
module muthuannamalai12/app
go 1.14
第 5 步:熟悉 Git。通过在 Windows 中启动命令提示符来打开命令 shell。您现在必须向 Git 表明自己的身份,以确保它可以在将来正确标记您的提交。我在下面使用 muthuannamalai12 和 muthuannamalai2002@gmail.com:
$ git config –global user.name “muthuannamalai12”
$ git config –global user.email muthuannamalai2002@gmail.com
Change the user name and email address to your own.
第 6 步:开发 Web 应用程序。在这一步中,我们准备了一个可以部署的简单 Go 应用程序。在文件夹 app 中编写程序 app.go,如下所示:
Go
package main
import (
"github.com/gin-gonic/contrib/static"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/hello", func(c *gin.Context) {
c.String(200, "Hello")
})
api := r.Group("/api")
api.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "ping",
})
})
r.Use(static.Serve("/", static.LocalFile("./views", true)))
r.Run()
}
第 7 步:使用 Git 部署我们的 Heroku 应用程序。要将您的应用程序部署到 Heroku,您需要将其存储在 Git 中。在同一文件夹中,即 $GOPATH/src/github.com/muthuannamalai12/app 类型:
$ git init
$ git add -A .
$ git commit -m “code”
第 8 步:设置 Procfile。通过在应用程序的根目录中创建 Procfile 来指定启动应用程序的命令。 Procfile 看起来像这样:
网络:应用程序
在此,声明了单个进程类型 web,以及启动它所需的命令。网络名称至关重要。这种进程类型将能够处理 Web 流量,因为它附加到 Heroku 的 HTTP 路由堆栈。
第 9 步:下载并安装 Godep。 Heroku 建议使用 godep 来管理 Go 包的依赖关系,这使得通过修复依赖关系来更容易地构建应用程序的可重复性。现在让我们安装 Godep:
$ go get github.com/tools/godep
第 10 步:声明应用程序的依赖关系。 Heroku 通过位于应用程序根目录的 Godeps 目录中的 Godeps.json 文件来识别 Go 应用程序。 Godeps/Godeps.json 文件用于声明您的应用程序包含哪些依赖项以及用于编译的 Go 版本。每当部署应用程序时,Heroku 都会读取此文件,安装正确的 Go 版本,并使用godep go install ./... 编译代码
在我们的项目中使用 godep。在创建的文件夹应用程序中键入以下命令
$ godep save -r
依赖项将保存到文件 Godeps/Godeps.json 中。
第 11 步:将新文件添加到 git
$ git add -A .
$ git commit -m “dependencies”
现在已经为 Heroku 部署做好了准备。
第 12 步:创建应用程序并进行部署。此步骤涉及创建应用程序并将其部署到 Heroku。 Heroku 应用程序的创建使 Heroku 准备好接受您的源代码。
$ heroku create
Creating app… done, immense-reaches-34382
https://immense-reaches-34382.herokuapp.com/ | https://git.heroku.com/immense-reaches-34382.git
创建应用程序时还会创建一个远程 git 存储库(称为 heroku)。在此示例中,Heroku 为您的应用程序生成名称 huge-reaches-34382,或者您可以指定您自己的名称作为参数。
准备好后,使用git push heroku master 部署代码。您的应用程序现在已部署。要访问它,请转到应用名称生成的 URL。以下快捷方式打开该站点:
$ heroku open
就是这样!您的 Go 应用程序现在正在 Heroku 上运行!