课程表

Revel课程

工具箱
速查手册

Revel 版本/日志/部署

当前位置:免费教程 » 程序设计 » Revel

版本控制

nathany上已经给出了Go包版本控制的许多信息。然而, 那时还没有一个包版本管理的社区标准。因此, 只能由开发者确保软件安全与可重复构建。

如果你使用Revel构建应用程序, 开发者应避免由于不兼容造成的问题。你的构建过程不应当使用go get获取Revel的主分支。

处理这种情况最简单的方法是签出Revel和所有依赖包到你的代码库中。如果你使用git, 可以把这些库作为你项目的子代码库。

或者, 试试下面链接中的软件包管理器。


日志

Revel 支持四类日志信息:

  • TRACE - 调试信息
  • INFO - 一般信息
  • WARN - 警告信息
  • ERROR - 错误信息

下面是在Revel中使用日志的例子:

  1. now := time.Now()
  2. revel.TRACE.Printf("%s", now.String())

日志记录器默认使用 go 日志.

日志记录器在 app.conf中配置。例如:

  1. app.name = sampleapp
  2. [dev]
  3. log.trace.output = stdout
  4. log.info.output = stdout
  5. log.warn.output = stderr
  6. log.error.output = stderr
  7. log.trace.prefix = "TRACE "
  8. log.info.prefix = "INFO "
  9. log.trace.flags = 10
  10. log.info.flags = 10
  11. [prod]
  12. log.trace.output = off
  13. log.info.output = off
  14. log.warn.output = log/%(app.name)s.log
  15. log.error.output = log/%(app.name)s.log

开发环境中:

  • 显示详细日志
  • infotrace信息以app.conf中定义的前缀显示信息

生产环境中:

  • infotrace 日志将被忽略
  • 警告 和 错误信息被写入 log/sampleapp.log 文件

根据 标记常量修改日志格式,。例如, 01:23:23 /a/b/c/d.go:23 Message 格式,使用标记 Ltime | Llongfile = 2 | 8 = 10

开发状态:

  • 如果日志目录log不存在,Revel 会自动创建日志目录。

部署

概要

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

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

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

本地编译

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

  1. # 本地测试运行
  2. $ revel run import/path/to/app
  3. .. 测试程序 ..
  4. # 打包程序
  5. $ revel package import/path/to/app
  6. 打包的文件准备好了: app.tar.gz
  7. # 复制到目标机器
  8. $ scp app.tar.gz target:/srv/
  9. # 在目标机器上运行
  10. $ ssh target
  11. $ cd /srv/
  12. $ tar xzvf app.tar.gz
  13. $ bash run.sh

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

增量部署

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

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

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

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

在服务器上构建

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

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

Heroku

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

交叉编译

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

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

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

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

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

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

转载本站内容时,请务必注明来自W3xue,违者必究。
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号