通过阅读本文,您将了解如何在 ARM Ubuntu 中通过源码构建 Apache APISIX(M1 芯片环境)。ARM Ubuntu 系统借助了 https://multipass.run/ 安装。
前提准备
克隆源码
首先根据 官方文档 克隆 Apache APISIX 源码仓库并进入项目目录。
git clone https://github.com/apache/apisix.git
cd apisix
git checkout release/2.11
安装 OpenResty
首先通过脚本一键安装项目所需要的依赖,在项目根目录运行如下命令。
bash utils/install-dependencies.sh
通过错误提示可知,是由于未能成功安装 OpenResty
导致。根本原因是默认没有 ARM 64
平台的源。
所以需要我们手动安装 OpenResty
,具体安装步骤可参考 https://openresty.org/cn/linux-packages.html#ubuntu。
步骤一:安装导入 GPG 公钥时所需的依赖包
具体代码示例可参考下方(整个安装过程完成后可以随时删除它们)。
sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates
步骤二:导入 GPG 密钥
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
如下图所示,出现导入成功提示。
步骤三:添加 OpenResty 官方 APT 仓库
对于 x86_64 或 amd64 系统,可以使用以下命令。
echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main" \
| sudo tee /etc/apt/sources.list.d/openresty.list
而对于 ARM64 或 aarch64 系统,则可以使用下面的命令(在 M1 上运行可运行该命令,上个命令会报错)。
echo "deb http://openresty.org/package/arm64/ubuntu $(lsb_release -sc) main" \
| sudo tee /etc/apt/sources.list.d/openresty.list
步骤四:更新 APT 索引
sudo apt-get update
之后可以按照下方代码来安装软件包,这里我们以 OpenResty
为例。
sudo apt-get -y install openresty
步骤五:删除对应关联包(可选)
最后,我们可以通过以下命令来删除该包和其对应的关联包。
sudo apt-get -y install --no-install-recommends software-properties-common
至此,OpenResty
安装完毕。
安装项目依赖
首先,重新运行安装依赖脚本。并运行 LUAROCKS_SERVER=https://luarocks.cn
命令安装依赖。
bash utils/install-dependencies.sh
之后运行下述命令。
curl https://raw.githubusercontent.com/apache/apisix/master/utils/linux-install-luarocks.sh -sL | bash -
根据上图反馈发现错误提示,然后执行以下命令。
sudo apt install wget sudo unzip
接着我们再重新运行下述命令。
curl https://raw.githubusercontent.com/apache/apisix/master/utils/linux-install-luarocks.sh -sL | bash -
最后运行安装依赖指令 LUAROCKS_SERVER=https://luarocks.cn make deps
。
至此,大部分依赖都已成功安装完毕,但又有新的错误提示出现(看起来是两个仓库未能成功克隆下来)。没关系,暂时没什么影响,这里可以先执行 APISIX 的安装命令。
make install
// 如果出现权限不足的提示,用 sudo make install
安装 etcd
启动 Apache APISIX 之前需要先安装 etcd,具体安装步骤可参考官方文档
note
由于该安装教程并不是针对 arm 写的,虽然成功安装了 etcd,但未能成功将 etcd 运行起来,原因是由于默认使用 x86 的二进制文件导致。具体踩坑部分这里就不再赘述,直接放上正确步骤供大家参考。
在 Docker 中运行 etcd 服务
步骤一:安装 Docker
sudo apt install docker.io
tip
docker 常用的命令(如果出现无权限错误,请在命令前添加 sudo):
- 查看所有容器列表
docker ps -a
- 查看正在运行的容器列表
docker ps
- 查看镜像列表
docker image list
- 删除所有容器
docker container prune
- 删除所有镜像
docker image prune -f -a
更多关于 Docker 的使用可参考Docker 入门教程 - 阮一峰的网络日志。
步骤二:拉取并运行 etcd
sudo docker run -d --name etcd -p 2379:2379 -e ETCD_UNSUPPORTED_ARCH=arm64 -e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 -e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379 gcr.io/etcd-development/etcd:v3.5.1-arm64
需要注意的是,该操作中镜像需要开启代理进行。
步骤三:验证 etcd 启动状态
sudo docker ps -a
通过上图反馈可知,etcd 已经成功启动。
启动 Apache APISIX
经过上述操作,目前所有依赖项目都已准备完毕,现在就可以启动 Apache APISIX 了。
步骤一:安装依赖
make deps
make install
步骤二:初始化依赖并启动 APISIX
apisix init
# start APISIX
apisix start
# stop APISIX
apisix stop
Apache APISIX 已成功启动。更多安装搭建 Apache APISIX 的步骤细节可参考官方文档。
总结
本文通过详细步骤,为大家展示了如何在 Macbook M1 芯片系统下进行 Apache APISIX 的部署与安装。总体实践下来,多多少少会出现一些踩坑的过程,但总体体验下来依旧是部署成功。
如果各位有更好的建议,欢迎大家为 Apache APISIX 构建文档 贡献,留下您的建议,来帮助更多的人。