[TOC]
### 前提说明
* 应用监听的网络默认为`0.0.0.0`,而不是`localhost`(`127.0.0.1`)。
* 平台默认支持5000端口,建议在go应用程序中指定端口为5000,Beego框架需在conf/app.conf添加`httpport=5000`
* 代码中需含有.go文件,用于平台识别为Go语言项目
### Web框架支持(以Beego为例)
这里以Beego为例说明,其他框架类似。
默认本地已经安装Go.
#### 初始化GOPATH
```
#个人推荐:在.zshrc里添加如下
function goinit() {
mkdir -p src bin pkg
export GOPATH=$PWD
}
保存后source ~/.zshrc 生效
```
在go目录下输入`goinit`就自动export了GOPATH。
#### 安装Godep
执行以下命令安装 Godep:
go get github.com/tools/godep
#### 使用Godep
Godep 要求项目存放的目录结构为标准的 [Go workspace](https://golang.org/doc/code.html#Workspaces),请务必保证自己的代码结构满足此条件。
初始状态项目结构:
~~~
├── bin
├── pkg
└── src
└── beego #项目目录
└── main.go
~~~
在beego目录下执行`godep save ./...`
如果提示`godep: Package (github.com/astaxie/beego) not found`
只需执行`go get github.com/astaxie/beego`即可,在执行`godep save ./...`
> 说明:执行`godep save ./...`命令后会把所有项目源码里 import 过的外部依赖代码和版本信息保存到 Godeps 目录的Godeps.json。
本地Beego项目结构大概如下:
~~~
.
├── bin
├── pkg
└── src
├── beego #上传到Git仓库
│ ├── Godeps
| ├── hello.go
│ ├── conf
│ └── vendor
│ └── github.com
│ └── astaxie
│ └── beego
└── github.com
~~~
Godep配置文件实例节选
```
{
"ImportPath": "beego",
"GoVersion": "go1.8",
"GodepVersion": "v79",
"Packages": [
"./..."
],
"Deps": [
{
"ImportPath": "github.com/astaxie/beego",
"Comment": "v1.8.0",
"Rev": "323a1c4214101331a4b71922c23d19b7409ac71f"
},
{
"ImportPath": "github.com/astaxie/beego/config",
"Comment": "v1.8.0",
"Rev": "323a1c4214101331a4b71922c23d19b7409ac71f"
}]
```
Demo结构:
提供的 [demo](http://code.goodrain.com/demo/go-hello/tree/master) 项目 go-hello 在本地的目录结构:
~~~
$GOPATH
└── src
└── rhino_go/
├── Godeps
│ ├── Godeps.json
│ ├── Readme
│ └── _workspace
├── hello
│ └── main.go
├── Procfile
├── README.md
└── static
└── index.html
~~~
>不同版本的go和godep命令会有所不同,比如上面的命令中godep save -r ./...在go1.6版本中就没有了 -r选项。另外,新版本的godep不会在Godeps目录中生成_workspace目录,而是会在与Godeps同级的目录中生成vendor文件夹,其作用根_workspace类似。详情可以参考[godep官网](https://github.com/tools/godep)
#### Godep配置说明
Godeps/Godeps.json 是 Godep 的配置文件,以 JSON 的形式保存了整个项目的依赖信息,下面简单介绍下此 JSON 的几个节点:
| 字段 | 值类型 | 值内容 |
| -- | -- | -- |
| ImportPath | 字符串 | 项目相对 GOPATH 的路径 |
| GoVersion | 字符串 | 执行 godep save |
| Packages | 数组 | 执行 godep save 时指定的参数 |
| Deps | 数组 | 项目源码里 import 过的外部依赖地址以及版本信息 |
注意事项:
* 编辑 GoVersion 的值可以指定部署时使用的 Go 版本。
* 在本地执行 go get 更新了已有的依赖后,需要重新执行 godep save 命令来让 Godep 更新已保存的依赖。
配置文件格式:
~~~
type Godeps struct {
ImportPath string
GoVersion string // Abridged output of 'go version'.
Packages []string // Arguments to godep save, if any.
Deps []struct {
ImportPath string
Comment string // Description of commit, if present.
Rev string // VCS-specific commit ID.
}
}
~~~
#### 平台部署操作
只需将项目上传到git仓库仓库即可.
```go
➜ beego ls
Godeps main.go vendor
#将beego目录上传到git仓库
```
##### 持久化操作
建议进行数据持久化操作,具体参考[高级设置-数据持久化](http://www.kancloud.cn/good-rain/manual/181966)
### **非web的go程序**
对于非web的go程序,平台打包运行时会生成bin文件夹,并将编译的golang程序的二进制包放入bin目录中。
>比如:一个名为hello-demo的golang程序,平台运行后会生成hello-demo的二进制文件。该文件存放在bin 目录下
此时如果要运行该二进制文件,可以使用如下的Procfile
~~~
web: bin/hello-demo
~~~
- 介绍
- 从这里开始
- 注册
- 登陆
- 云帮界面
- 功能介绍
- 新增应用
- 从镜像
- 从源码
- 应用市场
- 应用框架
- 我的应用
- 界面介绍
- 应用控制台
- 概览
- 依赖
- 监控
- 日志
- 设置
- 费用
- 端口
- 存储
- 扩容
- 总览
- 团队
- 财务中心
- 帐户充值
- 应用扣费
- 批量续费
- 语言支持
- 概述
- Java
- java-maven
- java-war
- java-jar
- web程序部署
- 使用Webapp Runner部署
- 使用Jetty Runner部署
- 示例代码
- gradle
- Scala
- play
- Ruby
- 语言支持
- ruby应用部署
- Rails 应用概述
- 部署Rails3.x应用
- 使用Puma 部署 Rails 应用
- 示例代码
- Python
- 语言支持
- Web框架支持
- 示例代码
- PHP
- 平台特性
- 语言支持
- 运行环境设置与调优
- 部署ThinkPHP框架程序
- 示例代码
- Go
- 语言支持
- 部署Beego等框架程序
- 示例代码
- Node.JS
- 语言支持
- 示例代码
- Html
- 语言支持
- 示例代码
- Dockerfile
- 语言支持
- 示例代码
- 相关文档
- Procfile
- Cron计划任务
- 参考知识
- 好雨Gogs使用说明
- Artifactory对接本地仓库
- 好雨如何对接Git Server
- Git使用技巧
- 服务框架支持
- dubbo
- springcloud
- 技术支持