Go应用部署指南 ############### 入门指南 =========== 准备工作 ----------- 首先,我们从github上clone一个go示例程序。 .. code-block:: console $ git clone https://github.com/sinacloud/go-getting-started.git $ cd go-getting-started $ ls Godeps Procfile README.md main.go static templates 这个示例程序是一个使用 `Gin `_ Web框架写的HTTP Web服务器。我们依次来看下每个文件的作用,首先,main.go文件。 .. code-block:: go package main import ( "net/http" "os" "github.com/gin-gonic/gin" ) func main() { port := os.Getenv("PORT") if port == "" { port = "5050" } r := gin.Default() r.StaticFile("/favicon.ico", "./static/favicon.ico") r.LoadHTMLGlob("templates/*.tmpl.html") r.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "Hello, World") }) r.GET("/ping", func(c *gin.Context) { c.HTML(http.StatusOK, "ping.tmpl.html", nil) }) r.Run(":" + port) } 这段程序就是设置了一些HTTP Handler,最后启动一个Web服务器,监听在环境变量 ``PORT`` 指定的端口上。 上面这段程序依赖于 `Gin` 这个包, ``Godeps`` 目录下就是通过 ``godep save -r ./...`` 保存下来的所有依赖包。 最后通过 :ref:`Procfile` 文件指定了如何启动这个应用的程序。 :: web: go-getting-started .. include:: ./deploy-to-sinacloud.snippet.rst 构建和运行说明 ================= 如何识别应用是Go应用? ------------------------ Go通过应用根目录下的 ``Godeps/Godeps.json`` 文件来判断一个应用是否是Go应用,所以即使应用没有任何依赖,您也必须执行 ``godep save`` 来生成这个文件,该命令也会记录下本地使用的Go版本,服务端会使用对应版本的Go来完成应用的构建。 指定Go版本 ------------- 您可以使用 ``Godeps/Godeps.json`` 中的 ``GoVersion`` 来指定服务端构建和运行的时候使用的Go版本。 .. code-block:: json { "ImportPath": "...", "GoVersion": "go1.6" } .. note:: 建议使用 **1.5.3** 以上的版本。 构建说明 --------- 服务端使用下面的命令来编译你的Go应用程序: .. code-block:: console godep go install ./... 静态文件处理 ------------- 所有通过git提交的文件在应用运行的时候都可以直接访问,您可以直接使用Go的 ``http.FileServer`` 来处理这些静态文件的访问请求。