信创麒麟V10操作系统安装Kong网关

news/2025/3/21 17:52:46/文章来源:https://www.cnblogs.com/db001/p/18782764

总览

随着国家对信息安全和自主可控技术的日益重视,信创改造正成为各大企业及政府部门的重要任务。公司目前在x86架构的Red Hat系统上部署了Kong网关2.2.1,并且通过官方RPM包实现了快速部署。为了顺应信创转型,现阶段需要在aarch64架构的信创麒麟v10系统上部署Kong网关。

由于官方未提供针麒麟v10的aarch64架构的RPM包,本文采用源码编译方式完成适配安装。在内网无外网访问的环境下,所有依赖包和源码需提前准备并离线安装。本文详细记录了环境准备、源码获取、编译配置、安装验证以及离线分发方案的过程。

环境准备

1.确认系统信息

在一台可以连接外网的虚拟机上执行 uname -a,确认信创机器系统内核和硬件信息,输出如下:
Linux ptvepqp1wZ 4.19.90-52.22.v2207.ky10.aarch64 #1 SMP Tue Mar 14 11:52:45 CST 2023 aarch64 aarch64 aarch64 GNU/Linux

2.获取kong编译工具

从GitHub克隆kong-build-tools工具(适用于3.0版本以下的Kong网关编译),使用默认的master即可:
git clone https://github.com/Kong/kong-build-tools.git

利用kong-build-tools可实现:

  1. 下载openresty、openssl、luarocks、pcre等依赖;
  2. 应用openresty补丁;
  3. 在openresty编译时添加lua-kong-nginx-module(增强OpenResty的功能,扩展Nginx的Lua API);
  4. 编译并安装上述依赖;

3.获取源码

下载kong网关源码,https://github.com/Kong/kong/releases

下载lua-kong-nginx-module,根据kong网关2.4发布的时间下载0.08的tag

4.安装必要依赖

  • 安装开发工具:
    yum groupinstall "Development Tools" -y
  • 安装zlib及开发包:
    yum install zlib zlib-devel -y
  • 安装libyaml:
    在安装libyaml-devel(必要依赖)的时候,报错yum源中找不到该组件,则要根据操作系统版本及其服务包版本到官网进行下载:libyaml-devel-0.2.5-1.ky10.aarch64.rpm,下载后传到机器上进行安装
yum install libyaml
yum localinstall libyaml-devel-0.2.5-1.ky10.aarch64.rpm

编译安装

准备工作

  • 进入kong-build-tools中的openresty-build-tools目录,创建work文件夹,并将已下载的lua-kong-nginx-module文件夹移入其中;
  • 修改openresty-build-tools目录下的kong-ngx-build文件
    • 将 DOWNLOAD_ONLY 设置为1,仅下载依赖,确认无误后再进行编译;
    • 设置 RESTY_LMDB 和 RESTY_EVENTS 为0(Kong 2.4不依赖这两个组件);
    • 注释掉以git方式下载lua-kong-nginx-module的部分(因已手动下载)。

依赖下载

  • kong 2.4的源码中的.requirements文件中描述了所需的主要组件的版本号
  • 执行/usr/bin/openssl version,可看到系统自带的OpenSSL版本为 1.0.2k-fips,因为系统中自带的openssl版本较低,所以我们也要安装kong网关所需的openssl。
  • 执行如下命令下载openresty、luarocks、openssl和pcre依赖:
    ./kong-ngx-build --prefix /opt/kong --work work --openresty 1.19.3.1 --openssl 1.1.1k --kong-nginx-module master --luarocks 3.9.2 --pcre 8.44
    依赖下载成功后在work文件中如下所示:

编译安装依赖

  • 将kong-build-tools文件中的DOWNLOAD_ONLY 重新设置为空,重新执行上述命令进行编译安装,所有组件均安装在/opt/kong目录下
    ./kong-ngx-build --prefix /opt/kong --work work --openresty 1.19.3.1 --openssl 1.1.1k --kong-nginx-module master --luarocks 3.9.2 --pcre 8.44

  • 安装成功后,/opt/kong目录下将包含openresty、openssl、luarocks等文件:

环境变量配置

设置环境变量,确保各组件正常调用:

export KONG_DIR=/opt/kong
export OPENSSL_DIR=$KONG_DIR/opensslPATH=$KONG_DIR/openresty/bin:$KONG_DIR/openresty/nginx/sbin:$OPENSSL_DIR/bin:$KONG_DIR/luarocks/bin:$PATH:$HOME/binexport PATH

验证依赖安装

openresty:
执行 openresty -V,应显示包含lua-kong-nginx-module、pcre等模块的详细编译信息。

openresty -V
nginx version: openresty/1.19.3.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.1.1k  25 Mar 2021
TLS SNI support enabled
configure arguments: --prefix=/opt/kong/openresty/nginx --with-cc-opt='-O2 -I/opt/kong/openssl/include' --add-module=../ngx_devel_kit-0.3.1 --add-module=../echo-nginx-module-0.62 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../srcache-nginx-module-0.32 --add-module=../ngx_lua-0.10.19 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.9 --with-ld-opt='-Wl,-rpath,/opt/kong/openresty/luajit/lib -L/opt/kong/openssl/lib -Wl,--disable-new-dtags,-rpath,/opt/kong/openssl/lib' --with-pcre-jit --with-http_ssl_module --with-http_sub_module --with-http_realip_module --with-http_stub_status_module --with-http_v2_module --add-module=/root/software/kong-build-tools-master/openresty-build-tools/work/lua-kong-nginx-module --add-module=/root/software/kong-build-tools-master/openresty-build-tools/work/lua-kong-nginx-module/stream --with-stream_realip_module --with-stream_ssl_preread_module --with-pcre=/root/software/kong-build-tools-master/openresty-build-tools/work/pcre-8.44 --with-pcre-opt=-g --with-stream --with-stream_ssl_module

openssl:
执行 openssl version,应输出 OpenSSL 1.1.1k

openssl version
OpenSSL 1.1.1k  25 Mar 2021

LuaRocks
执行 luarocks --version,应显示 luarocks 3.9.2

luarocks --version
/opt/kong/luarocks/bin/luarocks 3.9.2
LuaRocks main command-line interface

安装Kong网关

  • 将Kong网关源码包解压至/opt/kong目录,根据 kong-2.4.1-0.rockspec 文件中dependencies部分定义的Lua依赖进行安装。
  • 在实际安装时发现luarocks无法从官网下载安装lua-messagepack,所以需要先到luarocks官网下载lua-messagepack依赖包后手动安装。
luarocks install lua-messagepack-0.5.2-1.src.rock lua-messagepack 0.5.2-1 depends on lua >= 5.1 (5.1-1 provided by VM)
lua-messagepack 0.5.2-1 is now installed in /opt/kong/luarocks (license: MIT/X11)

*进入kong网关源码目录,执行 make install,即可完成kong网关的安装。

配置Lua环境变量

执行 luarocks path 获取Lua路径设置,然后将LUA_PATH、LUA_CPATH以及Kong的bin目录添加到环境变量中,并写入.bash_profile

luarocks path
export LUA_PATH='/opt/kong/luarocks/share/lua/5.1/?.lua;./?.lua;/opt/kong/openresty/luajit/share/luajit-2.1.0-beta3/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/opt/kong/openresty/luajit/share/lua/5.1/?.lua;/opt/kong/openresty/luajit/share/lua/5.1/?/init.lua;/root/.luarocks/share/lua/5.1/?.lua;/root/.luarocks/share/lua/5.1/?/init.lua;/opt/kong/luarocks/share/lua/5.1/?/init.lua'
export LUA_CPATH='./?.so;/usr/local/lib/lua/5.1/?.so;/opt/kong/openresty/luajit/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so;/root/.luarocks/lib/lua/5.1/?.so;/opt/kong/luarocks/lib/lua/5.1/?.so'
export PATH='/root/.luarocks/bin:/opt/kong/kong/bin:/opt/kong/openresty/bin:/opt/kong/openresty/nginx/sbin:/opt/kong/openssl/bin:/opt/kong/luarocks/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin'

验证kong网关安装

执行:
kong version --vv
输出:

2025/03/20 15:25:07 [verbose] Kong: 2.4.1
2025/03/20 15:25:07 [debug] ngx_lua: 10019
2025/03/20 15:25:07 [debug] nginx: 1019003
2025/03/20 15:25:07 [debug] Lua: LuaJIT 2.1.0-beta3
2.4.1

安装包分发

在内网无外网环境下,可通过以下方式分发已安装的Kong网关及其依赖:

打包kong-build-tools目录

将包含所有依赖的kong-build-tools-master目录打包,移至新机器后通过如下命令安装openresty等依赖:
./kong-ngx-build --prefix /opt/kong --work work --openresty 1.19.3.1 --openssl 1.1.1k --kong-nginx-module master --luarocks 3.9.2 --pcre 8.44

Lua依赖打包

  • 利用luarocks pack将已安装的Lua依赖打包成rock文件;
  • 内网机器通过luarocks install进行安装,这里在安装的时候要注意lua包的依赖关系,避免出现安装某个lua包时找不到依赖。
    使用luarocks list查找所有安装的lua依赖
Rocks installed for Lua 5.1
---------------------------ansicolors1.0.2-3 (installed) - /opt/kong/luarocks/lib/luarocks/rocks-5.1binaryheap0.4-1 (installed) - /opt/kong/luarocks/lib/luarocks/rocks-5.1date2.2.1-1 (installed) - /opt/kong/luarocks/lib/luarocks/rocks-5.1......
  • 使用luarocks show查看lua包的依赖关系,如luarocks show lua-resty-acme,显示如下:

  • lua包依赖打包和安装示例脚本

#!/bin/bash# 打包lua依赖,lua_dependency.log为按照依赖关系整理的lua包名称
# lua_dependency.log中内容为:
#                luafilesystem
#                lua-resty-openssl
#                lpeg
#                lua_pack
#                lua-protobuf
#                lua-resty-httpawk '!seen[$0]++ && NF' lua_dependency.log | while IFS= read -r line; doif [[ -n "$line" ]]; thenecho "Packing $package..."luarocks pack "$line"fidone# 安装lua包依赖
awk '!seen[$0]++ && NF' lua_dependency.log | while IFS= read -r package; dorock_file=$(ls "$package"-*.rock 2>/dev/null)if [ -n "$rock_file" ]; thenecho "luarocks install $rock_file"luarocks install "$rock_file"elseecho "Warning: $package rock file not found!"fi
done

在所有离线依赖安装完毕后,再对Kong网关源码进行编译安装,即可成功在内网环境下部署Kong网关。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/902565.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wsl kali 系统安装gvm (openVAS)

1. 更新系统 首先,确保系统是最新的: sudo apt update sudo apt upgrade -y2. 安装GVM(OpenVAS) Kali Linux官方仓库中已经包含了GVM(OpenVAS)的安装包。你可以通过以下命令安装: sudo apt install gvm3. 初始化GVM 安装完成后,需要初始化GVM。运行以下命令: sudo gvm…

day34 rsync备份任务的实战

06-备份任务实战 今天的任务主要以实际备份任务入手,完成综合练习,完成对rsync的综合运用。先看需求 再讲解 再次动手实践客户端需求 客户端需求: 1.客户端每天凌晨1点在服务器本地打包备份(/etc目录和/var/log目录) 2.客户端备份的数据必须存放至以 "主机名_ip地址_当…

dotnet-cnblogs-tool-cnblog

1. 解决的问题: 在本地编辑 md 后,如果有图像,直接复制该 md 到 博客园,或者使用 vscode 插件,会自动上传到博客园,但是上传后,因为没有真正上传图片,图片会无法显示。 2. 解决方法: 参考: dotnet-cnblogs-tool 本文环境为 linux 环境。直接下载 dotnet-cnblogs-tool…

可视化图解算法:链表相加( 两数相加)

对于链表的相关操作,我们总结了一套【可视化+图解】方法,依据此方法来解决链表相关问题,链表操作变得易于理解,写出来的代码可读性高也不容易出错。1. 题目 描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。 给定两个这种链表,请生成代表…

VUE中使用BroadcastChannel实现同源多页面实时通信

使用BroadcastChannel广播通信 准备工作:1.channel.js文件,内容如下const Channel = {/*** BroadcastChannel对象Map*/channelMap: new Map(),/*** 发送消息,重载方法,可直接调用,省略对象实例化操作* @param {*} channelName 通道名称,用以区分不同的通道* @param {*} o…

halcon 入门教程(五) 缺陷检测

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/18785484有兴趣可以多看其他的halcon教程halcon 学习教程目录本篇主要讲一些常见的缺陷检测方法,目前只会讲一些,后面有空的话会不断的补充完整。因为缺陷的种类实在太多太多了,各种各样的缺陷可能都要用各种…

万字长文详解SIFT特征提取

本文对 SIFT 算法进行了详细梳理。SIFT即尺度不变特征变换(Scale-Invariant Feature Transform),是一种用于检测和描述图像局部特征的算法。该算法对图像的尺度和旋转具有不变性,并且在一定程度上能够抵御亮度变化和视角变化,具备较强的鲁棒性。此外,SIFT检测流程还提出了…

记录---学习项目如何用Docker部署

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 写在前面 Docker对比传统虚拟机 Docker 是个划时代的开源项目,它彻底释放了计算虚拟化的威力,极大提高了应用的维护效率,降低了云计算应用开发的成本!使用 Docker,可以让应用的部署、测试和分发都变得前所未有的高效…

龙信年终技术考核wp

龙信年终技术考核wp 容器密码:MjAyNeWKoOayuQ== 假期里打的第一场取证比赛,一开始名次还挺高,后面服务器不太会做了,排名直接狂掉,获奖的名额太少了。其实上学期打的第一场取证也是龙信办的龙信杯,真的好难,还是这个友好。 1. 分析手机备份文件,该机主的QQ号为?(标准格…

规则系统|第二步 连接数据库

1.输出所有的数据库名2.问一下相关负责人这个需求放到哪个库里ssc: {ENGINE: django.db.backends.mysql, NAME: ssc, USER: star, PASSWORD: dpag5BoORZErhu4ttTju, HOST: 122.5.32.82, PORT: 19336} 3.下载dbeaver,连接相关库 4.用dbeaver手动创建需要的表,这里需要的表如下…

Excel甘特图

背景:领导让我在excel上填项目计划, 也就是分配未来的工时。有名称、开始时间、结束时间等。平时业务挺杂的, 其实没有办法准确的填写连贯的工时计划。需要稍微调整一下。甘特图比较直观, 但是MSProject又太大没装,还要收费。上网搜了一下还真有用wps office做的。 wps本身…

JMeter 一站式安装指南:跨平台详解与常见问题解析

前言 本教程为 macOS 与 Windows 用户提供 安全、高效 的 JMeter 安装方案,涵盖从基础安装到进阶配置的全流程。内容包含:✅ 双平台专属指南:针对 macOS 系统优化下载路径(附国内镜像直链),解决“身份不明开发者”警告;Windows 系统提供官方直装与快捷方式配置技巧。✅ …