前言
因公司有对该框架进行二次开发的需求,并且网上对于该框架的资料除了官方文档外确实不多,所以本人打算空闲之余写写一些源码阅读及二次开发的心得,如果过程中有些优化点提交到了官方仓库的话也会尽量以文章的形式记录下来,给自己一个回顾。
该系列文章会追踪最新的 RELEASE 版本进行源码解读,可能前后两篇文章依据的版本也不一致,但是文章更多的还是侧重源码理解,细微差距我个人觉得可以不用过于纠结。
本篇基于 RELEASE 2.12.1 编写。因本人开发过程都在 MacOS 上进行的,所以也仅会写一篇关于在 MacOS 上搭建源码开发环境的文章,至于 Windows 或者 Linux,读者可自行查阅资料。
依赖下载
首先我们先将 APISIX 源码克隆下来并切换到 2.12.1 分支,并且装上 MacOS 必备的工具 Homebrew
。
git clone git@github.com:apache/apisix.gitgit checkout 2.12.1/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
接下来我们看到源码中的 apisix/utils/install-dependencies.sh
文件中,其中有在 MacOS 上安装依赖的函数 install_dependencies_on_mac_osx()
,我们直接将命令复制出来即可。当然你也可以直接运行 ./install-dependencies.sh
文件自动安装依赖。
brew install openresty/brew/openresty luarocks lua@5.1 etcd curl git pcre openldap
由于 OpenResty
使用的是 Lua 5.1
版本,所以我们此处需指定具体的版本进行安装,否则会默认安装最新版本的 Lua 库。
上述依赖安装成功后,我们再切换到根目录中,运行 make deps
安装 APISIX 所需的 Lua 依赖包。(注:无论是 brew install
还是 make deps
都有可能出现需要科学上网的情况,请注意检查是否安装成功)
在老版本(笔者目前公司所用的为 2.10.2 版本)下,make deps
安装是不需要运行另外任何命令的,不过在最新的 RELEASE 版本,可能会遇到如下问题。
Error: Failed installing dependency: https://luarocks.org/lualdap-1.2.6-1.src.rock - Could not find header file for LDAPNo file ldap.h in usr/local/includeNo file ldap.h in usr/includeNo file ldap.h in includeYou may have to install LDAP in your system and/or pass LDAP_DIR or LDAP_INCDIR to the luarocks command.Example: luarocks install lualdap LDAP_DIR=/usr/localmake: *** [deps] Error 1
如果读者是通过 brew install openldap
安装的 LDAP,那么我们只需要先运行下列命令后再运行 make deps
即可。
luarocks --lua-version 5.1 config variable.LDAP_DIR /usr/local/opt/openldap/
安装完成后,因我们已通过 Homebrew
安装了 ETCD,所以只需要启动 ETCD 后再启动 APISIX 即可。
brew services start etcdmake run
至此,APISIX 在 MacOS 上的本地开发环境便搭建完毕。
我们再来验证服务是否正常启动(未配置任何路由)。

如果需要停止服务则运行下列命令即可。
brew services stop etcdmake stop
工具推荐
在开发过程中,笔者也尝试过 JetBrains + EmmyLua 和 VSCode 全家桶,但是开发过程体验下来感觉,针对 APISIX 这个框架来讲的话,还是 VSCode 体验更好。
笔者在这里推荐几个插件,可以供大家在开发过程中有更好的体验。
Gitlens
Indent-rainbow
Lua
Markdown All in One
NGINX Configuration
shellman
ShellCheck
当然如果读者有什么更好用的插件也欢迎推荐给笔者尝尝鲜,非常感谢!
结尾
我们可以看到 APISIX 的开发环境搭建其实还是很简单的,通篇文字较少,写本章的原因也确实是公司内有人会问起来,所以想了想还是先写了一篇搭建教程。后续文章我们将会从 APISIX 的初始化流程开始讲,包括配置文件生成、OpenResty 启动流程等等。欢迎大家关注。




