##概览

下面列出了部署的一些方法:

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

将生成的文件部署至目标服务器。

Go Revel - Deployment(部署)的更多相关文章

  1. Kubernetes中Deployment部署故障排除

    Kubernetes中Deployment部署故障排除 字符型思维导图 排查pod状态(带标签):kubectl get pods,是否有等待处理的pod? 是?kubectl describe po ...

  2. idea使用Deployment部署项目到阿里云服务器的全过程

    一.前言 之前玩了一下 Alibaba Cloud Toolkit 一键部署插件 这里顺便再提一下idea原生的Deployment自动部署项目吧,该功能也很强大,也不需要离开idea就可以直接将项目 ...

  3. 浅入Kubernetes(7):应用部署实例,Deployment、Service、ReplicaSet

    目录 Deployment 创建 Deployment kubectl apply/create 网络端口映射和更新 Deployment ReplicaSet 在本文之前,你需要阅读: 尝试 kub ...

  4. 使用 WinAppDeployCmd 部署Win10 App 到移动设备

    WinAppDeployCmd是目前微软提供的Win10 App 部署工具,它和以前的Windows Phone Application Deployment 部署工具有所不同的是,WinAppDep ...

  5. OPENSHIFT V3 免费部署 Java-Web

    OpenShift是红帽的云开发平台即服务(PaaS).自由和开放源码的云计算平台使开发人员能够创建.测试和运行他们的应用程序,并且可以把它们部署到云中.Openshift广泛支持多种编程语言和框架, ...

  6. Docker集群管理工具 - Kubernetes 部署记录 (运维小结)

    一.  Kubernetes 介绍 Kubernetes是一个全新的基于容器技术的分布式架构领先方案, 它是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,Kubernete ...

  7. WebSphere部署Spring Boot

    WebSphere Application Server Network Deployment部署 Websphere版本: 8.5.5.12. 这里只简单做操作步骤介绍, 详细的信息请查看IBM的帮 ...

  8. 【三小时学会Kubernetes!(四) 】Deployment实践

    Deployment 部署 Kubernetes 部署可以帮助每一个应用程序的生命都保持相同的一点:那就是变化.此外,只有挂掉的应用程序才会一尘不变,否则,新的需求会源源不断地涌现,更多代码会被开发出 ...

  9. 二进制部署Kubernetes-v1.14.1集群

    一.部署Kubernetes集群 1.1 Kubernetes介绍 Kubernetes(K8S)是Google开源的容器集群管理系统,K8S在Docker容器技术的基础之上,大大地提高了容器化部署应 ...

随机推荐

  1. jooq实践

    用法 sql语句 SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*) FROM AUTHOR JOIN BOOK ON AUTHOR.ID = B ...

  2. Wamp修改端口

    WAMP装好之后默认的端口是80,但是这个80端口呢,可以热门端口啊,迅雷,IIS都挺喜欢,在WIN7下本来还有1个进程也点80,让人伤脑筋啊,所以把它改掉,方法如下: 一.修改APACHE的监听端口 ...

  3. 安卓 logcat设置 Android logcat Settings

    安卓 logcat设置 Android logcat Settings 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 3131 ...

  4. log4j.properties_配置

    参考:http://blog.csdn.net/qq_30175203/article/details/52084127 参考:http://zengxiantao.iteye.com/blog/18 ...

  5. Oracle取月份-不带前面的0

    出处:http://www.2cto.com/database/201208/145611.html   今天碰到只要取月份和天数,如果月份前面有0要去掉0.比如说2010-01-08 ,需要的结果是 ...

  6. ubuntu.windows桌面远程ubuntu的方法(附带安装图形桌面--可选)

    (1)首先通过Windows系统下连接Linux系统的命令行工具连接Ubuntu服务器,(工具:xshell,securecrt,putty等). (2)通过Windows下工具连接到Linux操作系 ...

  7. 分布式理论——从ACID到CAP再到BASE

    在传统的数据中,有ACID四大原则,在分布式中也有对应的CAP理论和BASE理论,这些都是分布式理论的基础. 更多内容参考:大数据学习之路 ACID ACID分别是Atomicity 原子性.Cons ...

  8. C# DES (ECB模式) 加密解密 --单倍长

    加密:  调用时: Encrypt_DES16("2AF349243535BCD3", "1111111111111111"); public static s ...

  9. Android-ContentProvider使用

    Android-ContentProvider使用 一 建立ContentProviderserver端 1 建立一个继承自ContentProvider的类并重写接口方法(这里仅打一些log做代表) ...

  10. [Android Pro] https://blog.csdn.net/gaugamela/article/details/79143309

    原文地址:https://blog.csdn.net/gaugamela/article/details/79143309 最近遇到这样一个问题: 第三方的SDK除了Jar包外,还提供了对应的so文件 ...