Linux - 源码安装kong

这里我们通过kong-build-tools 来进行安装,仓库链接为:https://github.com/Kong/kong-build-tools,下载下来之后执行:

./openresty-build-tools/kong-ngx-build --prefix /opt/kong --work work --openresty 1.15.8.3 --openssl 1.1.1g --kong-nginx-module master --luarocks 3.3.1 --pcre 8.44 --jobs 6 --force

注意:--work 是软件下载目录,安装过程中下载的软件就放在这个目录。

安装之后到/opt/kong可以看到luarocks、openresty、openssl这3个目录,然后将下面的环境变量添加到/etc/profile中:

export KONG_DIR=/opt/kong
export OPENSSL_DIR=$KONG_DIR/openssl
export PATH=$KONG_DIR/openresty/bin:$KONG_DIR/openresty/nginx/sbin:$OPENSSL_DIR/bin:$KONG_DIR/luarocks/bin:$PATH

然后执行:source /etc/profile 然后分别执行下面的命令查看各个组件的版本

openssl version -a
nginx -V
resty -v
openresty -V
luarocks --version

确认没问题说明基础环境已经安装完成,然后需要安装libyaml-devel组件,否则接下来编译Kong会报错,centos8上面默认源没有libyaml-devel需要启用powertools才可以,centos7直接安装即可:dnf config-manager --set-enabled PowerTools     然后才可以开始安装:

dnf install libyaml-devel
# 或者用yum
yum install libyaml-devel

然后开始编译kong:

cd /opt/kong
git clone https://github.com/Kong/kong.git
cd kong
git checkout 2.1.0

这里选择的是2.1.0稳定版,直接下载master上面的代码其实也是可以的,如果克隆比较慢可以去仓库下载打好的tag, 然后解压到/opt/kong,再把目录名改为kong即可,总之最后的目录是:/opt/kong/kong,具体过程不再赘述,准备好之后直接安装kong:

make install

安装的过程其实就是下载了很多lua的模块然后进行安装,正常是安装到luarocks下,可能速度非常慢,需要耐心等待如果失败了可以再次执行会继续安装,再不行需要自行解决网络问题……,最后安装成功需要继续添加下面的环境变量:

export PATH=/opt/kong/kong/bin:$PATH

然后按照官网的说明查看kong的版本信息:kong version --vv

其实这里执行肯定会报错,socket或其他的模块找不到的错误,如果用rpm包安装是没问题的,原因就是lua模块安装到了/opt/kong/luarocks下,而这个路径不再默认的搜索路径下,于是继续添加下面的变量到profile:

export LUA_PATH="/opt/kong/luarocks/share/lua/5.1/?.lua;;"

保存并source之后,再执行上面的命令就可以看到输出的信息了

[root@localhost kong]# kong version -vv
2021/07/22 14:54:06 [verbose] Kong: 2.1.0
2021/07/22 14:54:06 [debug] ngx_lua: 10015
2021/07/22 14:54:06 [debug] nginx: 1015008
2021/07/22 14:54:06 [debug] Lua: LuaJIT 2.1.0-beta3

到这里kong就安装成功了,然后要正常使用还需要配置数据库,数据库支持postgresql以及cassandra,当然也可以不使用数据库,但是不使用数据库将无法添加服务以及路由,正常用于导出yml线上发布使用,这里使用的是postgresql。安装好之后:

然后进入到kong的目录编辑配置:

cd /opt/kong/kong
cp kong.conf.default kong.conf

然后编辑配置文件kong.conf,修改数据库部分的配置如下:

database = postgres
pg_host = 127.0.0.1
pg_port = 5432
pg_timeout = 5000
pg_user = kong
pg_password = kong
pg_database = kong

保存配置然后开始执行下面的命令初始化数据库:

kong migrations bootstrap -conf kong.conf

注意指定kong启动服务的时候要在目录/opt/kong/kong下,否则可能会报kong加载失败,如下:

 如果觉得每次进入目录麻烦,那么直接在刚才的环境变量LUA_PATH追加path:/opt/kong/kong/?/init.lua,/opt/kong/kong下面有1个kong目录保存了相关模块的源码,因此这么配置就可以在外部加载kong这个目录了:

export LUA_PATH="/opt/kong/luarocks/share/lua/5.1/?.lua;/opt/kong/kong/?/init.lua;;"

配置的时候要仔细看一下目录,如果你的和我这里的不一样,要根据实际的配置,然后可以启动一个独立的kong项目,kong项目启动的时候如果指定-conf会读取指定的配置如果不指定则默认会读取/etc/kong/kong.conf这个配置,所以这里我们可以将配置文件放到/etc/kong/kong.conf,之后改配置也要改这个,这样就不用每次指定配置文件了,可以方便操作:

mkdir /etc/kong
cp /opt/kong/kong/kong.conf /etc/kong

然后可以启动一个新的项目:

kong start --prefix /opt/kong-work:

这里--prefix指定工作目录的位置,就是和nginx默认的conf一样的结构,和上篇文章创建openresty项目的思路完全一样,如果不想指定可以修改kong.conf配置prefix参数,默认值是/usr/local/kong,修改之后就不用--prefix指定了,如果有多个项目的话其他的项目还是需要用--prefix单独指定的

    kong启动之后会监听如下4个端口:

    8000 - 这个是提供网关服务的端口,会侦听http客户端的流量然后转发到上游服务

    8443 - 和8000一样,只是这个是侦听https流量

    8001 - 配置kong admin api的端口,为了安全默认只监听127.0.0.1回环网卡

    8444 - 和8001一样,管理https admin api

启动之后可以使用下面的命令验证一下服务:

curl --include http://localhost:8001

默认正常返回json即表示启动成功。

停止kong服务和重新加载配置可以使用下面的命令:

kong stop --prefix <prefix>
kong reload --prefix <prefix>

最后创建一个简单的http proxy来验证kong的功能如下:

# 创建服务 代理到文档上的指定服务
curl -X POST --url http://localhost:8001/services --data 'name=test-service' --data 'url=http://mockbin.org' | json_pp
# 创建路由规则 支持hosts,paths,headers等
curl -X POST --url http://localhost:8001/services/test-service/routes --data 'paths[]=/test' | json_pp
# 访问网关测试
curl -X GET http://localhost:8000/test

 然后可以访问浏览器看一下:http://192.168.1.175:8000/test 。

转自:

https://www.cnblogs.com/freeweb/p/13492106.html

参考:

https://www.cnblogs.com/hssy/archive/2018/09/27/9715926.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值