微服务化是当前主流架构理念,谈到微服务离不开API网关和服务治理相关内容。目前使用较多的大概有以dubbo、spring cloud为代表的java系和以空openresty为代表的C系。
在安装KONG时遇到各种依赖问题,这里做部分整理,其中有一个问题比较有代表性,问题报错如下:
[root@localhost work]# luarocks install luaossl-20190731-0.src.rock luaossl 20190731-0 depends on lua (5.1-1 provided by VM) Applying patch config.h.diff... Hunk 1 found at offset 2... gcc -O2 -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1 -c src/openssl.c -o src/openssl.o -D_REENTRANT -D_THREAD_SAFE -DCOMPAT53_PREFIX=luaossl -D_GNU_SOURCE -I/usr/include -I/usr/include gcc -O2 -fPIC -I/usr/local/openresty/luajit/include/luajit-2.1 -c vendor/compat53/c-api/compat-5.3.c -o vendor/compat53/c-api/compat-5.3.o -D_REENTRANT -D_THREAD_SAFE -DCOMPAT53_PREFIX=luaossl -D_GNU_SOURCE -I/usr/include -I/usr/include gcc -shared -o _openssl.so src/openssl.o vendor/compat53/c-api/compat-5.3.o -L/usr/lib64 -L/usr/lib64 -Wl,-rpath,/usr/lib64 -Wl,-rpath,/usr/lib64 -lssl -lcrypto -lpthread -lm -ldl /usr/bin/ld: cannot find -lssl /usr/bin/ld: cannot find -lcrypto collect2: error: ld returned 1 exit status Error: Build error: Failed compiling module _openssl.so
报错的核心意思是gcc编译过程中在调用ld时,找不到-lssl和-lcrypto,通过man ld查看帮助,-l参数是在LD_LIBRARY_PATH下查找动态库,查找文件名规则实际是libXXX.so,对应到本例的报错信息,就是在LD_LIBRARY_PATH下找不到libssl.so和。
那么LD_LIBRARY_PATH到底是什么呢?
echo $LD_LIBRARY_PATH
返回的是空,也就是说不存在该环境变量,但是ld肯定是有默认加载路径的,怎么知道默认查找路径呢?man手册中也有说明:
root@localhost work]# ld lssl --verbose GNU ld version 2.27-43.base.el7 Supported emulations: elf_x86_64 ... using internal linker script: ================================================== /* Script for -z combreloc: combine and sort reloc sections */. OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("=/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); ......SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
以上的 SEARCH_DIR就是查找路径,按理说标准的系统中各种ssl等基础库应该是全的,那到底有没有呢?
[root@localhost kong-master]# find / -name libssl.so* /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.1.0.2k /usr/local/openssl/lib/libssl.so.1.1 /usr/local/openssl/lib/libssl.so /home/work/source/openssl-1.1.1g/libssl.so.1.1 /home/work/source/openssl-1.1.1g/libssl.so
系统中其实是有相应的动态库的,只不过版本还有差别.10就是版本号了,那剩下就容易了,如果不关注版本号,找一个建个软连接就可以了。
ln -s libcrypto.so.10 libcrypto.so
以上问题在linux下安装软件时经常会遇到,解决思路可参考本文。
相关推荐
本文将深入探讨如何在CentOS 7.1环境下离线安装Kong API网关及其依赖包。 首先,让我们了解Kong的基本概念。Kong是一个基于开放源代码的API Gateway,它使用了高性能的NGINX Web服务器作为基础。Kong的主要功能包括...
Kong是一个高可用、易扩展的API网关项目,其核心基于OpenResty构建,利用了Nginx的高性能和Lua语言的灵活性。Kong的设计允许它轻松应对大量网络请求,并且可以水平扩展,实现多个Kong服务器的集群部署。它通过负载...
基于centos 7.0,6.5 等安装测试,带网管配置界面,根据用户角色授权等。
本文档旨在提供一套详细的Centos7环境下部署Kong API网关(版本v0.14.x)的操作指南,包括单机部署以及必要的前置条件准备。通过本教程的学习与实践,读者将能够掌握Kong在Centos7下的安装与配置流程,从而快速搭建...
### API网关(ApiSixV2.1)使用指南 #### Apache APISIX 介绍 Apache APISIX 是一款基于 Nginx 网络库和 etcd 的高性能、动态、实时 API 网关,其提供了包括但不限于负载均衡、动态上游、灰度发布、服务熔断、身份...
本文档旨在介绍APISIX这一API网关解决方案的特点与优势,并通过对比其他主流API网关(如Kong),为组织提供一份详实的选型参考。 ##### 1.2 文档范围 本文将详细介绍APISIX的基本概念、安装部署过程以及其在实际...
ong 是在客户端和(微)服务间转发API通信的API网关,通过插件扩展功能。Kong 有两个主要组件: 1、Kong Server :基于nginx的服务器,用来接收 API 请求。 2、Apache Cassandra:用来存储操作数据。 你可以通过...
而Kong是一个基于OpenResty的API网关,支持插件架构,提供了RESTful API的管理和微服务架构的发现与连接,是处理边缘计算场景中API和服务发现的理想工具。 在边缘计算节点的部署中,OpenResty/Kong能够充分适应不同...
9. **中间件**:了解TYK、KONG、KARKEND等API网关和中间件的配置,提供安全的数据交换和接口管理。 10. **企业协作工具**:有企业微信或飞书等企业协作平台的集成经验,提升团队协作效率。 11. **语言能力**:英文...
10. **中间件**:熟悉TYK、KONG、KARKEND等API网关和微服务治理工具的配置。 11. **企业协作工具集成**:有企业微信或飞书等协作平台的集成经验,提升团队协作效率。 12. **语言能力**:英文作为工作语言,能有效...