本篇文章记录了通过源码构建 APISIX 的踩坑记录,ubuntu 环境使用的是 https://multipass.run/ 中的 Multipass 。
首先根据 官方文档 安装 APISIX 源码仓库。并且进入项目文件。
1 | cd apisix-2.11.0 |
1 | bash utils/install-dependencies.sh |
不出所料,没有成功跑完。通过错误提示我们知道,这里是未能成功安装 OpenResty
。原因是默认没有 arm 64
平台的源。
1 | sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates |
1 | wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add - |
成功:
1 | echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main" \ |
1 | echo "deb http://openresty.org/package/arm64/ubuntu $(lsb_release -sc) main" \ |
1 | sudo apt-get update |
然后就可以像下面这样安装软件包,比如 OpenResty
:
1 | sudo apt-get -y install openresty |
1 | sudo apt-get -y install --no-install-recommends software-properties-common |
成功安装 OpenResty
:
LUAROCKS_SERVER=https://luarocks.cn
命令安装依赖:运行下面命令即可:
1 | curl https://raw.githubusercontent.com/apache/apisix/master/utils/linux-install-luarocks.sh -sL | bash - |
又出现错误提示了。。。接着运行下面命令:
1 | sudo apt install wget sudo unzip |
接着我们重新运行一次:
1 | curl https://raw.githubusercontent.com/apache/apisix/master/utils/linux-install-luarocks.sh -sL | bash - |
然后我们继续运行安装依赖的命令:LUAROCKS_SERVER=https://luarocks.cn make deps
终于成功了,哭了,坑确实太多了。
大部分依赖已经成功安装好,但是又有新的错误提示了。
这里看起来是两个仓库未能成功克隆下来,没关系,先往后面运行试试:
1 | make install |
成功:
启动 APISIX 之前需要安装下 etcd,参考 官方文档
(由于该安装教程并不是针对 arm 写的,所以虽然成功安装了 etcd,但是未能成功将 etcd 运行起来,原因是因为默认使用的 x86 的二进制文件启动,所以无法运行。可以跳过该部分直接参考在 「docker 中运行 etcd 服务」部分)
1 | wget https://github.com/etcd-io/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz |
1 | tar -xvf etcd-v3.4.13-linux-amd64.tar.gz && \ cd etcd-v3.4.13-linux-amd64 && \ sudo cp -a etcd etcdctl /usr/bin/ |
成功:
1 | nohup etcd & |
然后我在后面运行 APISIX 时发现 etcd 报错了:
发现在 arm 上的 ubuntu 裸跑 etcd 坑太多了,各种各样的错误,后来决定还是跑 docker 吧~
1 | sudo apt install docker.io |
Tip: docker 常用的命令:(无权限错误在命令前添加 sudo)
1 | 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 |
注意:该镜像需要开代理。
成功:
验证是否运行:
1 | sudo docker ps -a |
这样,etcd 已经成功启动了。
所有的依赖项目已经准备完毕,现在我们可以启动 APISIX 拉~直接参考如何构建 APISIX 官方文档
1 | make deps |
1 | apisix init |
没有任何错误信息了,完美收工!
总体来说,有两个大坑是安装 APISIX 依赖部分和 arm 的 etcd 部分,etcd 部分可以直接用 docker 来解决,不过在拉取镜像的时候也会有一些坑,直接换别的镜像尝试就好。如果以后别人再问我用 M1 开发有什么建议吗,那我就建议:珍爱生命,远离 M1 😂 – 引自白泽平同学。