×

概要

Revel 介绍Revel 概念Revel 项目结构

Revel 控制器

Revel 控制器概要Revel 路由routesRevel 参数绑定Revel 参数验证Revel Session / FlashRevel 国际化Revel Results

Revel 模板

Revel 拦截器Revel 缓存CacheRevel 过滤器Revel Websockets

Revel 模块

Revel 模块概要Revel 测试Revel 计划任务

Revel 操作

Revel 日志类型Revel 版本控制Revel 部署

Revel 参考资料

Revel 配置文件app.confRevel 命令行工具Revel 常见问题

Revel 部署


几种常见的部署方法如下:

  1. 本地编译代码,然后复制到服务器上运行
  2. 在服务器上拉取代码,然后编译、运行
  3. 使用 Heroku 进行部署

使用命令行演示互动部署 - 一般将web服务器作为守护程序运行。常用工具有:

本地编译

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

# 本地测试运行
$ revel run import/path/to/app
.. 测试程序 ..

# 打包程序
$ revel package import/path/to/app
打包的文件准备好了: app.tar.gz

# 复制到目标机器
$ scp app.tar.gz target:/srv/

# 在目标机器上运行
$ ssh target
$ cd /srv/
$ tar xzvf app.tar.gz
$ bash run.sh

如果您的本地机器与目标机器的架构相同,那么不会有什么问题。否则,你需要参考交叉编译来构建指定平台架构的程序。

增量部署

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

# 构建应用程序到一个临时目录
$ revel build import/path/to/app /tmp/app

# 将临时目录 Rsync 到服务器上的主目录
$ rsync -vaz --rsh="ssh" /tmp/app server

# 连接到服务器,并重新启动应用程序
...

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

# 一个使用自定义证书、登录名和目标目录的例子
$ rsync -vaz --rsh="ssh -i .ssh/go.pem" /tmp/myapp2 ubuntu@ec2-50-16-80-4.compute-1.amazonaws.com:~/rsync

在服务器上构建

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

$ ssh server
... 安装Go语言环境 ...
... 配置存储库 ...

# 进入你的应用程序所在的目录 (GOPATH环境变量), 拉取代码, 并运行。
$ cd gocode/src/import/path/to/app
$ git pull
$ revel run import/path/to/app prod

Heroku

Revel 维护了一个 Heroku Buildpack, 允许一条命令即可部署代码,请参考 自述文件 使用说明

交叉编译

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

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

$ cd /path/to/goroot/src
$ GOOS=linux GOARCH=amd64 ./make.bash --no-clean
$ GOOS=windows GOARCH=386 ./make.bash --no-clean

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

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

然后,将压缩包复制到目标平台。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)