源码编译 Baetyl¶
相比于快速安装 Baetyl,用户可以采用源码编译的方式来使用 Baetyl 最新的功能。
在编译源码前,用户应该进行编译环境的配置,所以本文将从 环境配置 和 源码编译 两方面进行介绍。
环境配置¶
Linux 平台¶
Go 开发环境安装¶
前往 相关资源下载页面 完成相关二进制包下载。具体请执行:
tar -C /usr/local -zxf go$VERSION.$OS-$ARCH.tar.gz # 解压 Go 压缩包至 /usr/local 目录,其中,VERSION、OS、ARCH 参数为下载包对应版本
export PATH=$PATH:/usr/local/go/bin # 设置 Go 执行环境变量
export GOPATH=yourpath # 设置 GOPATH
go env # 查看 Go 相关环境变量配置
go version # 查看 Go 版本
注意: Baetyl 要求编译使用的 Go 版本在 1.10.0 以上。
Darwin 平台¶
Go 开发环境配置¶
- 通过 HomeBrew 安装
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" # 安装 HomeBrew
brew install go
安装完成后编辑环境配置文件(例: ~/.bash_profile):
export GOPATH="${HOME}/go"
export GOROOT="$(brew --prefix golang)/libexec"
export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin"
完成后退出编辑,执行以下命令使环境变量生效:
source yourfile
完成后执行以下命令创建 GOPATH 指定目录:
test -d "${GOPATH}" || mkdir "${GOPATH}"
- 通过二进制文件安装
前往 相关资源下载页面 完成二进制包下载。具体请执行:
tar -C /usr/local -zxf go$VERSION.$OS-$ARCH.tar.gz # 解压 Go 压缩包至 /usr/local 目录,其中,VERSION、OS、ARCH 参数为下载包对应版本
export PATH=$PATH:/usr/local/go/bin # 设置 Go 执行环境变量
export GOPATH=yourpath # 设置 GOPATH
go env # 查看 Go 相关环境变量配置
go version # 查看 Go 版本
注意: Baetyl 要求编译使用的 Go 版本在 1.10.0 以上。
源码编译¶
本地镜像构建¶
容器模式下 docker 通过运行各个模块对应的 镜像 来启动该模块,所以首先要构建各个模块的镜像,命令如下:
cd $GOPATH/src/github.com/baetyl/baetyl
make clean
make image # 在本地生成模块镜像
注意: 在 Darwin 系统下,因为编译出的镜像本身基于 Linux 系统,需要指定编译参数:
env GOOS=linux GOARCH=amd64 make image
通过上述命令编译生成如下镜像:
baetyl-agent:latest
baetyl-hub:latest
baetyl-function-manager:latest
baetyl-remote-mqtt:latest
baetyl-timer:latest
baetyl-function-python27:latest
baetyl-function-python36:latest
baetyl-function-node85:latest
通过以下命令查看生成的镜像:
docker images
编译¶
cd $GOPATH/src/github.com/baetyl/baetyl
make rebuild
注意: 因为 Node 8.5 运行时模块在 make
阶段会调用 npm install
命令安装依赖,所以需要事先安装 node
和 npm
, 具体可以参考 Nodejs 官网 。
编译完成后会在根目录及各个模块目录下生成如下六个可执行文件:
baetyl
baetyl-agent/baetyl-agent
baetyl-hub/baetyl-hub
baetyl-function-manager/baetyl-function-manager
baetyl-remote-mqtt/baetyl-remote-mqtt
baetyl-timer/baetyl-timer
除此之外,还会在各个模块目录下生成 package.zip
文件。
安装¶
默认路径:/usr/local
。
cd $GOPATH/src/github.com/baetyl/baetyl
make install # docker 容器模式安装并使用示例配置
make install-native # native 进程模式安装并使用示例配置
指定安装路径,比如安装到 output 目录中。
cd $GOPATH/src/github.com/baetyl/baetyl
make install PREFIX=output
在 Darwin 平台上,需要设置 Baetyl 使用到的 /usr/local/var
目录可挂载到容器内。
Mount path on Mac
运行¶
如果程序已经安装到默认路径:/usr/local
。
sudo baetyl start
如果程序已经安装到了指定路径,比如安装到 output 目录中。
cd $GOPATH/src/github.com/baetyl/baetyl
sudo ./output/bin/baetyl start
注意:启动方式根据安装方式的不同而不同,即,若选择 docker 运行模式安装,则上述命令会以 docker 容器模式运行 Baetyl。
提示:
- baetyl 启动后,可通过
ps -ef | grep "baetyl"
查看 baetyl 是否已经成功运行,并确定启动时所使用的参数。通过查看日志确定更多信息,日志文件默认存放在工作目录下的var/log/baetyl
目录中。 - docker 容器模式运行,可通过
docker stats
命令查看容器运行状态。 - 如需使用自己的镜像,需要修改应用配置中的模块和函数的
image
,指定自己的镜像。 - 如需自定义配置,请按照 配置解读 中的内容进行相关设置。
卸载¶
如果是默认安装。
cd $GOPATH/src/github.com/baetyl/baetyl
make clean # 可用于清除编译生成的可执行文件
make uninstall # 卸载 docker 容器模式的安装
make uninstall-native # 卸载 native 进程模式的安装
如果是指定了安装路径,比如安装到 output 目录中。
cd $GOPATH/src/github.com/baetyl/baetyl
make clean # 可用于清除编译生成的可执行文件
make uninstall PREFIX=output # 卸载 docker 容器模式的安装
make uninstall-native PREFIX=output # 卸载 native 进程模式的安装