0.背景
最近项目上需要实现动态注册Api并提供对外调用的能力,经过领导的深思熟虑和严谨的技术栈评估,最后选择了Kong网关
, 选什么不重要,但作为开发不但要搞代码,还得搞运维,就比较难受。最离谱的是基本上找不到离线安装相关的文档(要么就是互相抄,根本解决不了问题),因此做个记录~~~
1.准备pgsql 镜像
正常有网的情况下安装pg是很简单的,可以docker,yum等方式一键安装,但是在没有网或者网络不通的情况下就比较麻烦。前期梳理了两种方案:
-
yum: 下载rpm包上传到服务器挨个的安装,但是rpm安装的时候会自动拉取各种缺失的依赖,所以如果服务器上缺失的依赖比较多那这个就很难搞了,虽然我看也有大佬把依赖在别的服务器下载好然后上传,但如果依赖缺的很多,那就巨难受。。。因此不推荐。
-
docker: 这种是最方便的方法,找一个能下载docker镜像的服务器下载对应的pg镜像,然后把镜像打成tar包(根据实际情况修改命令):
docker save -o postgres-12.17-bullseye postgres:12.17-bullseye
- 切记 :在
centos7.x
版本上最好使用12版本的pg,我试过13-16版本的,基本都启动失败,可能是我菜,反正系统的兼容有不少问题,搞定不了就只能用12版本。
在上面准备好镜像后把镜像上传到对应的服务器,然后加载镜像,过程如下:
bash
#把pg的镜像加载到docker中
docker load -i postgres-12.17-bullseye.tar
#创建对应的目录
mkdir -p /home/postgres/data
#运行pg镜像
docker run -d -p 5432:5432 \
--restart=always \
-v /home/postgres/data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=konga2024 \
--name pg postgres:12.17-bullseye
2.连接到数据库中创建供kong使用的账号
sql
docker exec -it pg psql -U postgres
create user kong with password 'kong2024';
create database kong owner kong;
3.下载kong安装包并安装
提前下载安装包然后上传到服务器:
https://packages.konghq.com/public/gateway-35/rpm/el/7/x86_64/kong-3.5.0.el7.x86_64.rpm
sudo yum install -y kong-3.5.0.el7.x86_64.rpm
4.安装好后修改配置,3处需要修改:
- 说明:执行完上面的安装命令后,kong的配置默认会放在
/etc/kong
目录下,这时候先对kong.conf.default
进行copy得到kong.conf
,后续的修改都是基于kong.conf
。 - (1)开启数据库配置,通常在1231行左右,配置信息根据实际情况修改
ini
database = postgres # Determines the database (or no database) for
pg_host = 127.0.0.1 # Host of the Postgres server.
pg_port = 5432 # Port of the Postgres server.
pg_timeout = 5000 # Defines the timeout (in ms), for
# reading and writing.
pg_user = kong # Postgres user.
pg_password = kong2024 # Postgres user's password.
pg_database = kong # The database name to connect to.
- (2)端口监听范围修改为0.0.0.0,在618行左右
ini
admin_listen = 0.0.0.0:8001 # reuseport backlog=16384
- (3)开启可视化界面,按需修改对应的地址!! (可选!!!!)
ini
# The Admin GUI for Kong Gateway.
admin_gui_listen = 0.0.0.0:8002, 0.0.0.0:8445 ssl
admin_gui_url = http://10.10.10.10:8002/manager
admin_gui_path = /manager
5.修改完配置后开始初始化数据库
bash
kong migrations bootstrap -c /etc/kong/kong.conf
6.启动kong网关并验证
bash
kong start -c /etc/kong/kong.conf
# 执行下面的命令后会返回200状态码,或者在浏览器直接请求对应的地址也可以
curl -i http://localhost:8001
7.踩坑总结
-
访问不了可视化管理平台的时候记得检查一下防火墙是否开启,对应端口是否占用等
-
kong网关的下载地址可能会变或者失效,导致在服务器下载得到的rpm包是坏的,所以最好的办法就是直接在浏览器访问,然后下载再上传到服务器
-
如果安装后启动失败,需要看一下8001及相关的kong使用的端口是否被占用
-
ss -tuln |grep 8001
查看对应的端口是否监听在所有ip段ruby[root@localhost kong]# ss -tuln |grep 8001 tcp LISTEN 0 128 *:8001 *:*
如果是这样:
markdownss -tuln |grep 8001 tcp LISTEN 0 128 127.0.0.1:8001 *:* tcp LISTEN 0 128 127.0.0.1:8001 *:* tcp LISTEN 0 128 127.0.0.1:8001 *:*
那说明配置文件修改的不对,需要看看
admin_listen
是否修改!
非root账号安装会出现的异常问题记录:
-
非root账号安装的情况,kong的目录(
/usr/local/bin
)不能写入到环境变量中,从而导致执行kong命令的时候提示找不到,因此需要手动加到环境变量文件中,比如.bashrc
文件,文件位于~
目录下。yaml[root@localhost ~]# ll -a 总用量 76 dr-xr-x---. 9 root root 4096 10月 19 09:25 . dr-xr-xr-x. 18 root root 256 3月 25 2023 .. -rw-------. 1 root root 1639 2月 14 2022 anaconda-ks.cfg -rw-------. 1 root root 25308 10月 19 02:01 .bash_history -rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout -rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile -rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
直接修改.bashrc
,加入如下:
bash
export PATH=/usr/local/bin:$PATH
#然后刷新配置
source ~/.bashrc
#或者
. ~/.bashrc
#还不生效的话就重新进入终端
-
在上一步中把环境变量处理完后,有可能kong的安装目录
/usr/local/kong
没有权限,导致启动的时候不能创建对应的目录,因此先修改权限:bashsudo chmod -R 777 /usr/local/kong/
到这步基本上应该是可以启动了,如果还不行的话~~~~~~那就给爷死!