源码编译 Baetyl

相比于快速安装 Baetyl,用户可以采用源码编译的方式来使用 Baetyl 最新的功能。

在编译源码前,用户应该进行编译环境的配置,所以本文将从 环境配置源码编译 两方面进行介绍。

环境配置

Linux 平台

Go 开发环境安装

前往 相关资源下载页面 完成相关二进制包下载。具体请执行:

  1. tar -C /usr/local -zxf go$VERSION.$OS-$ARCH.tar.gz # 解压 Go 压缩包至 /usr/local 目录,其中,VERSION、OS、ARCH 参数为下载包对应版本
  2. export PATH=$PATH:/usr/local/go/bin # 设置 Go 执行环境变量
  3. export GOPATH=yourpath # 设置 GOPATH
  4. go env # 查看 Go 相关环境变量配置
  5. go version # 查看 Go 版本

注意: Baetyl 要求编译使用的 Go 版本在 1.10.0 以上。

Docker 安装

docker 容器模式下,Baetyl 依赖于 docker 容器运行时。如果用户机器尚未安装 docker 容器运行时,可通过以下命令来安装 docker 的最新版本(适用于类 Linux 系统):

  1. curl -sSL https://get.docker.com | sh

安装结束后,可以查看 docker 的版本号:

  1. docker version

注意:根据 官方 Release 日志 说明,低于 18.09.2 的 Docker 版本具有一些安全隐患,建议安装/更新 Docker 版本到 18.09.2 及以上。

更多内容请参考 官方文档

Darwin 平台

Go 开发环境配置

  • 通过 HomeBrew 安装
  1. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" # 安装 HomeBrew
  2. brew install go

安装完成后编辑环境配置文件(例: ~/.bash_profile):

  1. export GOPATH="${HOME}/go"
  2. export GOROOT="$(brew --prefix golang)/libexec"
  3. export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin"

完成后退出编辑,执行以下命令使环境变量生效:

  1. source yourfile

完成后执行以下命令创建 GOPATH 指定目录:

  1. test -d "${GOPATH}" || mkdir "${GOPATH}"
  1. tar -C /usr/local -zxf go$VERSION.$OS-$ARCH.tar.gz # 解压 Go 压缩包至 /usr/local 目录,其中,VERSION、OS、ARCH 参数为下载包对应版本
  2. export PATH=$PATH:/usr/local/go/bin # 设置 Go 执行环境变量
  3. export GOPATH=yourpath # 设置 GOPATH
  4. go env # 查看 Go 相关环境变量配置
  5. go version # 查看 Go 版本

注意: Baetyl 要求编译使用的 Go 版本在 1.10.0 以上。

Docker 安装

前往 官方页面 下载所需 dmg 文件。完成后双击打开,将 docker 拖入 Application 文件夹即可。

../_images/docker-install-on-mac.pngInstall On Darwin

安装完成后使用以下命令查看所安装版本:

  1. docker version

源码编译

源码下载

按照对应环境完成编译环境配置后,前往 Baetyl Github 下载 Baetyl 源码

  1. go get github.com/baetyl/baetyl

本地镜像构建

容器模式下 docker 通过运行各个模块对应的 镜像 来启动该模块,所以首先要构建各个模块的镜像,命令如下:

  1. cd $GOPATH/src/github.com/baetyl/baetyl
  2. make clean
  3. make image # 在本地生成模块镜像

注意: 在 Darwin 系统下,因为编译出的镜像本身基于 Linux 系统,需要指定编译参数:

  1. env GOOS=linux GOARCH=amd64 make image

通过上述命令编译生成如下镜像:

  1. baetyl-agent:latest
  2. baetyl-hub:latest
  3. baetyl-function-manager:latest
  4. baetyl-remote-mqtt:latest
  5. baetyl-timer:latest
  6. baetyl-function-python27:latest
  7. baetyl-function-python36:latest
  8. baetyl-function-node85:latest

通过以下命令查看生成的镜像:

  1. docker images

编译

  1. cd $GOPATH/src/github.com/baetyl/baetyl
  2. make rebuild

注意: 因为 Node 8.5 运行时模块在 make 阶段会调用 npm install 命令安装依赖,所以需要事先安装 nodenpm, 具体可以参考 Nodejs 官网

编译完成后会在根目录及各个模块目录下生成如下六个可执行文件:

  1. baetyl
  2. baetyl-agent/baetyl-agent
  3. baetyl-hub/baetyl-hub
  4. baetyl-function-manager/baetyl-function-manager
  5. baetyl-remote-mqtt/baetyl-remote-mqtt
  6. baetyl-timer/baetyl-timer

除此之外,还会在各个模块目录下生成 package.zip 文件。

安装

默认路径:/usr/local

  1. cd $GOPATH/src/github.com/baetyl/baetyl
  2. make install # docker 容器模式安装并使用示例配置
  3. make install-native # native 进程模式安装并使用示例配置

指定安装路径,比如安装到 output 目录中。

  1. cd $GOPATH/src/github.com/baetyl/baetyl
  2. make install PREFIX=output

在 Darwin 平台上,需要设置 Baetyl 使用到的 /usr/local/var 目录可挂载到容器内。

../_images/docker-path-mount-on-mac.pngMount path on Mac

运行

如果程序已经安装到默认路径:/usr/local

  1. sudo baetyl start

如果程序已经安装到了指定路径,比如安装到 output 目录中。

  1. cd $GOPATH/src/github.com/baetyl/baetyl
  2. sudo ./output/bin/baetyl start

注意:启动方式根据安装方式的不同而不同,即,若选择 docker 运行模式安装,则上述命令会以 docker 容器模式运行 Baetyl。

提示

  • baetyl 启动后,可通过 ps -ef | grep "baetyl" 查看 baetyl 是否已经成功运行,并确定启动时所使用的参数。通过查看日志确定更多信息,日志文件默认存放在工作目录下的 var/log/baetyl 目录中。
  • docker 容器模式运行,可通过 docker stats 命令查看容器运行状态。
  • 如需使用自己的镜像,需要修改应用配置中的模块和函数的 image,指定自己的镜像。
  • 如需自定义配置,请按照 配置解读 中的内容进行相关设置。

卸载

如果是默认安装。

  1. cd $GOPATH/src/github.com/baetyl/baetyl
  2. make clean # 可用于清除编译生成的可执行文件
  3. make uninstall # 卸载 docker 容器模式的安装
  4. make uninstall-native # 卸载 native 进程模式的安装

如果是指定了安装路径,比如安装到 output 目录中。

  1. cd $GOPATH/src/github.com/baetyl/baetyl
  2. make clean # 可用于清除编译生成的可执行文件
  3. make uninstall PREFIX=output # 卸载 docker 容器模式的安装
  4. make uninstall-native PREFIX=output # 卸载 native 进程模式的安装