Go Revel - Deployment(部署)

##概览 下面列出了部署的一些方法: 1、本地构建程序并拷贝至服务器 2、在服务器上获取更新代码,然后构建并运行 3、使用`Heroku`来管理部署 使用交互式的命令行会话来进行部署 - 通常需要一种工具来守护web服务器程序. 如以下工具: Ubuntu Upstart http://upstart.ubuntu.com/ systemd http://www.freedesktop.org/wiki/Software/systemd/ ##本地构建 revel应用可以部署在没有安装Go环境的机器上,revel工具使用`package`命令来编译应用并将它打包为zip文件。 # 运行并测试应用. $ revel run import/path/to/app .. test app .. # 打包 $ revel package import/path/to/app Your archive is ready: app.tar.gz # 拷贝至目标服务器 $ scp app.tar.gz target:/srv/ # 在目标服务器运行 $ ssh target $ cd /srv/ $ tar xzvf app.tar.gz $ bash run.sh 这只能工作在部署机器架构与开发机器架构相同的情况下,如果需要配置编译为不同架构,可以看看go的交叉编译。 ##增量部署 由于静态链接的二进制文件包含所有资源,可能会增长的十分迅速,这里支持增量部署。 # 在temp目录编译应用 $ revel build import/path/to/app /tmp/app # 使用Rsync工具将文件夹同步到服务器的home目录 $ 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的构建包允许一键部署 https://github.com/robfig/heroku-buildpack-go-revel ##交叉编译 为了创建交叉编译环境,需要以源码方式来编译安装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 将生成的文件部署至目标服务器。

posted on 2013-08-20 17:37  黑暗伯爵  阅读(2246)  评论(0编辑  收藏  举报

导航