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编译器成功安装后,就可以设置GOOSGOARCH环境变量来交叉编译:

$ 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   黑暗伯爵  阅读(2250)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示