源码编译
要想从源码运行或者编译GoEdge,需要分别编译EdgeAdmin、EdgeAPI、EdgeNode等组件。
当前文档中的”下载”可以使用zip下载的方式,也可以使用git clone
,建议使用后者更容易维护。
整体源码结构
从Github对应仓库下载各个组件的源码后,建议的整体源码结构为:
EdgeProject/
EdgeAdmin # 管理平台
EdgeAPI # API节点
EdgeNode # 边缘节点
EdgeCommon # 公共依赖
....
运行环境
- 操作系统:目前只支持Mac OS和Linux开发环境;
- MySQL:支持 v5.7.x 以上;
- Golang:支持 v1.16以上;
- Mac OS X上需要安装musl交叉编译工具链,安装方法当前文档的下一段会给出。
安装musl交叉编译工具链
由于边缘节点启用了CGO_ENABLED,所以如果你是在Mac OS X上交叉编译Linux上的边缘节点,需要先在系统中安装musl库:
brew install FiloSottile/musl-cross/musl-cross --with-x86_64 --with-aarch64 --with-arm-hf --with-i486 --with-arm --with-mips --with-mipsel --with-mips64 --with-mips64el
这个安装过程最长可能需要几个小时,需要耐心等待。
如果在安装过程中总是提示下载失败,可以使用一个代理:
export ALL_PROXY="127.0.0.1:7890”
其中 127.0.0.1:7890
换成你自己的代理地址。
如果已经安装过但是支持的平台或架构不全,可以卸载后再安装:
brew uninstall FiloSottile/musl-cross/musl-cross
brew install ...
安装完成后,可以在 /usr/local/bin
和 /usr/local/opt/musl-cross/bin
下找到对应的文件。
公共依赖源码
EdgeCommon
是各个组件公共依赖的源码,下载地址 https://github.com/TeaOSLab/EdgeCommon 。
编译各个组件
编译EdgeAdmin管理平台
- 从 https://github.com/TeaOSLab/EdgeAdmin下载EdgeAdmin源码;
- 从 https://github.com/TeaOSLab/EdgeCommon下载EdgeCommon源码,如果已经下载则不需要重复下载;
- 将EdgeAdmin和EdgeCommon放在同一目录下;
- 转到
EdgeAdmin
目录下; 执行
go mod download
下载项目依赖的源码;复制
build/configs/server.template.yaml
到build/configs/server.yaml
,如果server.yaml
已经存在则无需重复复制;这个文件里默认指定了管理平台的访问端口为7788
,可以根据自己的需要进行修改;复制
build/configs/api.template.yaml
到build/configs/api.yaml
;这个文件默认指定了API节点的端口为8003
,在启动API节点时如果修改了端口号,也要在这里进行同步的修改;运行
go run -tags community cmd/edge-admin/main.go
如果想编译整个项目,请参考 build/build.sh
,比如可以运行:
./build.sh linux amd64
来编译linux/amd64
版本的项目压缩包,编译后生成的压缩包可以在dist
目录下找到。
编译EdgeAPI API节点
API节点是唯一可以操作数据库的节点,所以需要在步骤中配置数据库,也是其他节点依赖运行的节点。
- 从 https://github.com/TeaOSLab/EdgeAPI下载EdgeAPI源码;
- 从 https://github.com/TeaOSLab/EdgeCommon下载EdgeCommon源码,如果已经下载则不需要重复下载;
- 将EdgeAdmin和EdgeCommon放在同一目录下;
转到
EdgeAPI
目录下;执行
go mod download
下载项目依赖的源码;- 复制
build/configs/api.template.yaml
到build/configs/api.yaml
,如果api.yaml
已经存在则无需重复复制;然后修改其中的配置nodeId
为API节点的ID,secret
为API节点的密钥;如果还没有创建过API节点,则可以在修改数据库配置(第7步)后,通过执行go run -tags community cmd/edge-api/main.go setup -api-node-protocol=http -api-node-host=127.0.0.1 -api-node-port=8003
初始化数据库,然后在执行后的控制台提示或者数据库edgeAPINodes
中获取节点ID(字段uniqueId
)和密钥(字段secret
); - 复制
build/configs/db.template.yaml
到build/configs/db.yaml
,并修改其中的数据库配置,通常是用户名、密码、MySQL数据库地址和端口 ; - 运行
go run -tags community cmd/edge-api/main.go
。
如果想编译整个项目,请参考 build/build.sh
,比如可以运行:
./build.sh linux amd64
来编译linux/amd64
版本的项目压缩包,编译后生成的压缩包可以在dist
目录下找到。
如果出现amd64之外的节点编译报错时,可以修改build.sh
脚本,修改其中的:
NODE_ARCHITECTS=("amd64" "386" "arm64" "mips64" "mips64le")
为:
NODE_ARCHITECTS=("amd64")
这样只编译amd64,大部分Linux系统应该是支持的。
编译EdgeNode边缘节点
- 从 https://github.com/TeaOSLab/EdgeNode下载EdgeNode源码;
- 从 https://github.com/TeaOSLab/EdgeCommon下载EdgeCommon源码,如果已经下载则不需要重复下载;
- 将EdgeNode和EdgeCommon放在同一目录下;
- 转到
EdgeNode
目录下; 执行
go mod download
下载项目依赖的源码;复制
build/configs/api.template.yaml
到build/configs/api.yaml
,如果api.yaml
已经存在则无需重复复制;然后修改其中的配置;如果你还没有边缘节点,需要先运行EdgeAdmin并通过界面创建一个节点后再修改配置后运行边缘节点;- 运行
go run -tags community cmd/edge-node/main.go
。
如果想编译整个项目,请参考 build/build.sh
,比如可以运行:
./build.sh linux amd64
来编译linux/amd64
版本的项目压缩包,编译后生成的压缩包可以在dist
目录下找到。
常见问题
下载依赖的Go模块失败
go mod download
操作可能因为网络原因失败,如果失败,建议使用网络代理尝试重新下载:
env https_proxy=127.0.0.1:7890 go mod download
其中的 127.0.0.1:7890
换成你自己的网络代理地址。