通过阅读本文,您将了解如何在 ARM Ubuntu 中通过源码构建 Apache APISIX(M1 芯片环境)。ARM Ubuntu 系统借助了 https://multipass.run/ 安装。
前提准备#
克隆源码#
首先根据 官方文档 克隆 Apache APISIX 源码仓库并进入项目目录。
git clone https://github.com/apache/apisix.gitcd apisixgit 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,具体安装步骤可参考官方文档
提示
由于该安装教程并不是针对 arm 写的,虽然成功安装了 etcd,但未能成功将 etcd 运行起来,原因是由于默认使用 x86 的二进制文件导致。具体踩坑部分这里就不再赘述,直接放上正确步骤供大家参考。
在 Docker 中运行 etcd 服务#
步骤一:安装 Docker#
sudo apt install docker.iotip
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 depsmake install步骤二:初始化依赖并启动 APISIX#
apisix init
# start APISIXapisix start
# stop APISIXapisix stop
Apache APISIX 已成功启动。更多安装搭建 Apache APISIX 的步骤细节可参考官方文档。
总结#
本文通过详细步骤,为大家展示了如何在 Macbook M1 芯片系统下进行 Apache APISIX 的部署与安装。总体实践下来,多多少少会出现一些踩坑的过程,但总体体验下来依旧是部署成功。
如果各位有更好的建议,欢迎大家为 Apache APISIX 构建文档 贡献,留下您的建议,来帮助更多的人。