部署

    • 本地编译代码,然后复制到服务器上运行
    • 在服务器上拉取代码,然后编译、运行
    • Ubuntu Upstart

    目标机器上不需要安装Go语言环境。Revel命令行工具 提供了包命令,用来编译和压缩应用程序, 如下所示:

    由于静态链接的二进制程序带有完整的资源文件,可能会变得相当大,所以支持增量部署。

    1. # 构建应用程序到一个临时目录
    2. $ revel build import/path/to/app /tmp/app
    3. # 将临时目录 Rsync 到服务器上的主目录
    4. $ rsync -vaz --rsh="ssh" /tmp/app server
    5. ...

    Rsync 支持ssh完整的复制操作。例如, 下面是一个更复杂的操作:

    这种方法依赖你的版本控制系统来分发、更新代码。你需要在服务器上安装Go语言环境。好处是,你避免了潜在的交叉编译。

    1. $ ssh server
    2. ... 安装Go语言环境 ...
    3. ... 配置存储库 ...
    4. # 进入你的应用程序所在的目录 (GOPATH环境变量), 拉取代码, 并运行。
    5. $ cd gocode/src/import/path/to/app
    6. $ git pull

    为了创建一个交叉编译环境,我们需要从源代码构建。参考 获取更多信息。你必须正确设置 $PATH 和 $GOPATH 环境变量, 否则,如果已经有一个二进制的Go语言包存在,你会陷入严重的错误。

    当Go编译器安装成功后,通过指定 GOOS 和 GOARCH 目标环境来建立交叉编译环境。参考 可用的环境变量 获取更多信息。

    在新的环境中安装Revel,然后设定目标架构,打包应用程序。

    1. $ GOOS=linux GOARCH=amd64 revel package import/path/to/app