从源码构建&安装

测试环境

  • 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 415 18:54 apisix
# 一个脚本程序
drwxr-xr-x  2  501   80     20 415 18:54 bin
-rw-r--r--  1  501   80  63454 415 18:54 CHANGELOG.md
-rw-r--r--  1  501   80   9632 17 16:29 CODE_OF_CONDUCT.md
-rw-r--r--  1  501   80   6873 17 16:29 CODE_STYLE.md
# 配置文件相关
drwxr-xr-x  3  501   80    155 415 18:54 conf
-rw-r--r--  1  501   80   7509 415 18:54 CONTRIBUTING.md
-rw-r--r--  1  501   80  12109 17 16:29 LICENSE
-rw-r--r--  1  501   80   5195 48 11:14 MAINTAIN.md
# Makefile
-rw-r--r--  1  501   80  15746 415 18:54 Makefile
-rw-r--r--  1  501   80    167 48 11:14 NOTICE
-rw-r--r--  1  501   80   7448 48 11:14 powered-by.md
-rw-r--r--  1  501   80  18159 415 18:54 README.md
# 管理lua模块
drwxr-xr-x  2 root root     70 423 07:18 rockspec 
-rw-r--r--  1  501   80   2730 48 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 429 15:57 apisix
drwxr-xr-x  2 root root    58 429 15:57 autodocs
drwxr-xr-x  4 root root    53 429 15:57 benchmark
# 一个脚本程序
drwxr-xr-x  2 root root    20 429 15:57 bin
-rw-r--r--  1 root root 63654 429 15:57 CHANGELOG.md
# 一些ci脚本
drwxr-xr-x  3 root root  4096 429 15:57 ci
-rw-r--r--  1 root root  9632 429 15:57 CODE_OF_CONDUCT.md
-rw-r--r--  1 root root  6873 429 15:57 CODE_STYLE.md
# 配置文件相关
drwxr-xr-x  3 root root   119 429 15:57 conf
-rw-r--r--  1 root root  7834 429 15:57 CONTRIBUTING.md
drwxr-xr-x  5 root root    40 429 15:57 docs
drwxr-xr-x  3 root root    39 429 15:57 example
-rw-r--r--  1 root root 12109 429 15:57 LICENSE
drwxr-xr-x  2 root root    31 429 15:57 logos
-rw-r--r--  1 root root  5249 429 15:57 MAINTAIN.md
# Makefile
-rw-r--r--  1 root root 16293 429 15:57 Makefile
-rw-r--r--  1 root root   167 429 15:57 NOTICE
-rw-r--r--  1 root root  7519 429 15:57 powered-by.md
-rw-r--r--  1 root root 18103 429 15:57 README.md
# 管理lua模块
drwxr-xr-x  2 root root  4096 429 15:57 rockspec
drwxr-xr-x 31 root root  4096 429 15:57 t
-rw-r--r--  1 root root  2730 429 15:57 THREAT_MODEL.md
# 包行一些工具脚本
drwxr-xr-x  2 root root  4096 429 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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐