从源码构建&安装
测试环境
- MacBook Pro宿主机
- virtualbox虚拟机(centos7),ip: 192.168.56.107
apisix需要安装的依赖环境:
- 系统环境,包括git gcc openresty-openssl111-devel unzip pcre pcre-devel openldap-devel,以及luarocks等。在install-dependencies.sh中有定义。
- lua模块:在Makefile deps部分有定义,其实就是安装rocksspec下apisix-master-0.rockspec中定义的模块
软件版本
- Apisix:2.13.0
- etcd:3.4.13
- Dashboard:2.11.0
下载源码
⚠️apisix源码不要放在/root及其子目录下,见issue#3998
这里我们放到/opt下测试,首先下载apache官方源码或从github进行clone
wget https://archive.apache.org/dist/apisix/2.13.1/apache-apisix-2.13.1-src.tgz
or
git clone https://github.com/apache/apisix.git
解压之后的目录
# 源码目录
drwxr-xr-x 13 501 80 4096 4月 15 18:54 apisix
# 一个脚本程序
drwxr-xr-x 2 501 80 20 4月 15 18:54 bin
-rw-r--r-- 1 501 80 63454 4月 15 18:54 CHANGELOG.md
-rw-r--r-- 1 501 80 9632 1月 7 16:29 CODE_OF_CONDUCT.md
-rw-r--r-- 1 501 80 6873 1月 7 16:29 CODE_STYLE.md
# 配置文件相关
drwxr-xr-x 3 501 80 155 4月 15 18:54 conf
-rw-r--r-- 1 501 80 7509 4月 15 18:54 CONTRIBUTING.md
-rw-r--r-- 1 501 80 12109 1月 7 16:29 LICENSE
-rw-r--r-- 1 501 80 5195 4月 8 11:14 MAINTAIN.md
# Makefile
-rw-r--r-- 1 501 80 15746 4月 15 18:54 Makefile
-rw-r--r-- 1 501 80 167 4月 8 11:14 NOTICE
-rw-r--r-- 1 501 80 7448 4月 8 11:14 powered-by.md
-rw-r--r-- 1 501 80 18159 4月 15 18:54 README.md
# 管理lua模块
drwxr-xr-x 2 root root 70 4月 23 07:18 rockspec
-rw-r--r-- 1 501 80 2730 4月 8 11:14 THREAT_MODEL.md
Github repo 目录结构
[root@localhost apisix_github_source2]# cd apisix/
[root@localhost apisix]# ll
总用量 184
# 源码目录
drwxr-xr-x 13 root root 4096 4月 29 15:57 apisix
drwxr-xr-x 2 root root 58 4月 29 15:57 autodocs
drwxr-xr-x 4 root root 53 4月 29 15:57 benchmark
# 一个脚本程序
drwxr-xr-x 2 root root 20 4月 29 15:57 bin
-rw-r--r-- 1 root root 63654 4月 29 15:57 CHANGELOG.md
# 一些ci脚本
drwxr-xr-x 3 root root 4096 4月 29 15:57 ci
-rw-r--r-- 1 root root 9632 4月 29 15:57 CODE_OF_CONDUCT.md
-rw-r--r-- 1 root root 6873 4月 29 15:57 CODE_STYLE.md
# 配置文件相关
drwxr-xr-x 3 root root 119 4月 29 15:57 conf
-rw-r--r-- 1 root root 7834 4月 29 15:57 CONTRIBUTING.md
drwxr-xr-x 5 root root 40 4月 29 15:57 docs
drwxr-xr-x 3 root root 39 4月 29 15:57 example
-rw-r--r-- 1 root root 12109 4月 29 15:57 LICENSE
drwxr-xr-x 2 root root 31 4月 29 15:57 logos
-rw-r--r-- 1 root root 5249 4月 29 15:57 MAINTAIN.md
# Makefile
-rw-r--r-- 1 root root 16293 4月 29 15:57 Makefile
-rw-r--r-- 1 root root 167 4月 29 15:57 NOTICE
-rw-r--r-- 1 root root 7519 4月 29 15:57 powered-by.md
-rw-r--r-- 1 root root 18103 4月 29 15:57 README.md
# 管理lua模块
drwxr-xr-x 2 root root 4096 4月 29 15:57 rockspec
drwxr-xr-x 31 root root 4096 4月 29 15:57 t
-rw-r--r-- 1 root root 2730 4月 29 15:57 THREAT_MODEL.md
# 包行一些工具脚本
drwxr-xr-x 2 root root 4096 4月 29 15:57 utils
这里为了方便查看脚本内容,我们这里使用github的源码
安装系统依赖
安装依赖
utils/install-dependencies.sh里面大概包含两个步骤
- 安装apisix-base,openresty,以及一些编译工具和系统依赖
- 安装luarocks
# 直接使用脚本
curl https://raw.githubusercontent.com/apache/apisix/master/utils/install-dependencies.sh -sL | bash -
# 已经clone下github源码,可以看看这个脚本都做了什么install-dependencies.sh
cd utils
bash ./install-dependencies.sh
## 安装完毕
看下在centos下都安装了什么
依赖关系解决
=======================================================================================
Package 架构 版本 源 大小
=======================================================================================
正在安装:
apisix-base x86_64 1.19.9.1.5-0.el7 release 34 M
gcc x86_64 4.8.5-44.el7 base 16 M
openldap-devel x86_64 2.4.44-25.el7_9 updates 805 k
openresty-openssl111-devel x86_64 1.1.1n-1.el7 openresty 1.7 M
pcre-devel x86_64 8.32-17.el7 base 480 k
unzip x86_64 6.0-24.el7_9 updates 172 k
正在更新:
curl x86_64 7.29.0-59.el7_9.1 updates 271 k
为依赖而安装:
cpp x86_64 4.8.5-44.el7 base 5.9 M
cyrus-sasl x86_64 2.1.26-24.el7_9 updates 88 k
cyrus-sasl-devel x86_64 2.1.26-24.el7_9 updates 310 k
glibc-devel x86_64 2.17-325.el7_9 updates 1.1 M
glibc-headers x86_64 2.17-325.el7_9 updates 691 k
kernel-headers x86_64 3.10.0-1160.62.1.el7 updates 9.1 M
libmpc x86_64 1.0.1-3.el7 base 51 k
mpfr x86_64 3.1.1-4.el7 base 203 k
openresty-openssl111 x86_64 1.1.1n-1.el7 openresty 1.6 M
openresty-pcre x86_64 8.44-1.el7 openresty 164 k
openresty-zlib x86_64 1.2.12-1.el7 openresty 55 k
为依赖而更新:
cyrus-sasl-lib x86_64 2.1.26-24.el7_9 updates 156 k
glibc x86_64 2.17-325.el7_9 updates 3.6 M
glibc-common x86_64 2.17-325.el7_9 updates 12 M
libcurl x86_64 7.29.0-59.el7_9.1 updates 223 k
libgcc x86_64 4.8.5-44.el7 base 103 k
libgomp x86_64 4.8.5-44.el7 base 159 k
openldap x86_64 2.4.44-25.el7_9 updates 356 k
事务概要
=======================================================================================
安装 6 软件包 (+11 依赖软件包)
升级 1 软件包 (+ 7 依赖软件包)
接下来还会安装luarocks
+ install_luarocks
+ curl https://raw.githubusercontent.com/apache/apisix/master/utils/linux-install-luarocks.sh -sL
+ bash -
+ '[' -z ']'
+ OPENRESTY_PREFIX=/usr/local/openresty
# 写死的版本
+ LUAROCKS_VER=3.8.0
+ wget https://github.com/luarocks/luarocks/archive/v3.8.0.tar.gz
--2022-04-23 09:02:49-- https://github.com/luarocks/luarocks/archive/v3.8.0.tar.gz
正在连接 192.168.56.1:1087... 已连接。
已发出 Proxy 请求,正在等待回应... 302 Found
位置:https://codeload.github.com/luarocks/luarocks/tar.gz/refs/tags/v3.8.0 [跟随至新的 URL]
--2022-04-23 09:02:50-- https://codeload.github.com/luarocks/luarocks/tar.gz/refs/tags/v3.8.0
正在连接 192.168.56.1:1087... 已连接。
已发出 Proxy 请求,正在等待回应... 200 OK
长度:未指定 [application/x-gzip]
正在保存至: “v3.8.0.tar.gz”
[ <=> ] 5,389,112 1.75MB/s 用时 2.9s
2022-04-23 09:02:54 (1.75 MB/s) - “v3.8.0.tar.gz” 已保存 [5389112]
+ tar -xf v3.8.0.tar.gz
+ rm -f v3.8.0.tar.gz
+ cd luarocks-3.8.0
+ OR_BIN=/usr/local/openresty/bin/openresty
++ awk -F / '{print $2}'
++ awk -F . '{print $1"."$2}'
++ /usr/local/openresty/bin/openresty -v
+ OR_VER=1.19
+ [[ -e /usr/local/openresty/bin/openresty ]]
+ [[ 1.19 == 1.19 ]]
+ WITH_LUA_OPT=--with-lua=/usr/local/openresty/luajit
+ ./configure --with-lua=/usr/local/openresty/luajit
+ make build
+ sudo make install
+ cd ..
+ rm -rf luarocks-3.8.0
+ mkdir /root/.luarocks
+ OPENSSL_PREFIX=/usr/local/openresty/openssl
+ '[' -d /usr/local/openresty/openssl111 ']'
+ OPENSSL_PREFIX=/usr/local/openresty/openssl111
+ luarocks config variables.OPENSSL_LIBDIR /usr/local/openresty/openssl111/lib
Wrote
variables.OPENSSL_LIBDIR = "/usr/local/openresty/openssl111/lib"
to
/root/.luarocks/config-5.1.lua
+ luarocks config variables.OPENSSL_INCDIR /usr/local/openresty/openssl111/include
Wrote
variables.OPENSSL_INCDIR = "/usr/local/openresty/openssl111/include"
to
/root/.luarocks/config-5.1.lua
+ return
可在上述脚本执行完之后验证luarocks
[root@bogon utils]# luarocks --version
/usr/local/bin/luarocks 3.8.0
LuaRocks main command-line interface
[root@bogon utils]# yum list all | grep openresty
安装apisix依赖的lua module
# 看Makefile的源码发现主要是做luarocks installl
make deps
这个步骤可能时间久些,取决于你的网络环境,我的终端做了梯子代理,速度还可以,大概几分钟就完成了。
会安装依赖的lua模块
# 省略
nanoid 0.1-1 depends on lua >= 5.1 (5.1-1 provided by VM)
gcc -O2 -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1 -c src/nanoid.c -o src/nanoid.o
src/nanoid.c:9:0: 警告:“luaL_newlib”重定义 [默认启用]
#define luaL_newlib(L, l) (lua_newtable(L), luaL_register(L, NULL, l))
^
In file included from src/nanoid.c:2:0:
/usr/local/openresty/luajit/include/luajit-2.1/lauxlib.h:125:0: 附注:这是先前定义的位置
#define luaL_newlib(L, l) (luaL_newlibtable(L, l), luaL_setfuncs(L, l, 0))
^
gcc -shared -o nanoid.so src/nanoid.o
nanoid 0.1-1 is now installed in /root/apisix_source/apisix_github_source/apisix/deps (license: MIT)
Stopping after installing dependencies for apisix master-0
安装apisix【⚠️可选:only for luarocks】
# 文档中有注释,only for luarocks,这块有些歧义。这里其实是安装成为luarocks模块
make install
issue#6559有讨论doc中移除make install
这里我们不执行这个命令
安装etcd并启动
安装release版本
yum源的是3.3.11版本(使用yum info)
官方在文档中指出支持的etcd版本,最低版本要求为v3.4.0+
Apache APISIX 从 v2.0 开始不再支持
v2
版本的 etcd,并且 etcd 最低支持版本为 v3.4.0,因此请使用 etcd 3.4.0+。更重要的是,因为 etcd v3 使用 gRPC 作为消息传递协议,而 Apache APISIX 使用 HTTP(S) 与 etcd 集群通信,因此请确保启用 etcd gRPC gateway 功能。
wget https://github.com/etcd-io/etcd/releases/download/v3.4.13/etcd-v3.4.13-linux-amd64.tar.gz
tar -xvf etcd-v3.4.13-linux-amd64.tar.gz && \
cd etcd-v3.4.13-linux-amd64 && \
sudo cp -a etcd etcdctl /usr/bin/
# 启动
etcd --listen-client-urls 'http://0.0.0.0:2379' --advertise-client-urls 'http://0.0.0.0:2379'
安装dashboard并启动
[root@bogon apisix_dashboard]# wget https://github.com/apache/apisix-dashboard/releases/download/v2.11/apisix-dashboard-2.11-0.el7.x86_64.rpm
[root@bogon apisix_dashboard]# rpm -ivh apisix-dashboard-2.11-0.el7.x86_64.rpm 准备中... ################################# [100%]
正在升级/安装...
1:apisix-dashboard-2.11-0.el7 ################################# [100%]
# 或者如果yum源的包是最新的也可以直接使用yum安装最新的
启动dashboard
$ sudo nohup manager-api -p /usr/local/apisix/dashboard/ &
# or manager-api as a service
$ sudo manager-api start -p /usr/local/apisix/dashboard/
Without changing the configuration, visit http://127.0.0.1:9000 to use the dashboard with GUI, where the default username and password are admin.
配置dashboard允许外部访问,修改配置文件/usr/local/apisix/dashboard/conf/conf.yaml
启动etcd,apisix,dashboard并最终验证
运行apisix【先要启动etcd】
# 必须要在项目源码目录
[root@localhost apisix]# pwd
/opt/apisix_github_source2/apisix
[root@localhost apisix]# ./bin/apisix start
/usr/local/openresty/luajit/bin/luajit ./apisix/cli/apisix.lua start
Warning! Current maximum number of open file descriptors [1024] is not greater than 1024, please increase user limits by execute 'ulimit -n <new user limits>' , otherwise the performance is low.
[root@bogon apisix]# ./bin/apisix stop
/usr/local/openresty/luajit/bin/luajit ./apisix/cli/apisix.lua stop
访问dashboard,查看各个组件的版本
http://192.168.56.107:9000/serverinfo