> ## Content Index
> Fetch the complete content index at: https://yonglun.me/llms.txt
> Use this file to discover other available public pages before exploring further.

# KONG 开源API网关安装手册
- URL: https://yonglun.me/kong-install-manual/
- Published: 2021-06-08T05:06:59.000Z
- Updated: 2025-04-22T08:04:11.000Z
- Author: Yonglun
- Tags: Open Source, #lang-zh

# 1\. 前言

kong 是一个开源的API网关，本文档描述在 Redhat 8 环境下安装部署api 网关的操作步骤。

# 2\. 软硬件环境准备

## 2.1\. 硬件环境

kong 安装需要两个角色的服务器：

- #### 网关服务器
- #### 数据库服务器

## 2.2\. 网络端口要求

kong 需要下面一些网络端口：

| 源     | 目标     | 端口   | 设置 | 备注                 |
| ----- | ------ | ---- | -- | ------------------ |
| any   | 网关服务器  | 80   | 允许 | kong的代理 http服务端口   |
| any   | 网关服务器  | 443  | 允许 | kong的代理 https服务端口  |
| any   | 网关服务器  | 1337 | 允许 | konga的http服务端口     |
| 网关服务器 | 数据库服务器 | 5432 | 允许 | postgresql serve端口 |

## 2.3\. 软件环境

kong 安装需要下面的组件：

- #### postgresql96-9.6.21  
kong网关及其图形管理界面konga 都需要数据库来支撑配置信息的持久化，需要 postgresql server 支持。
- #### node-v13.14.0  
图形管理界面konga 是一个nodejs 支撑的web 应用，需要nodejs 运行环境。
- #### kong-2.4.0  
kong api gateway 目前的最新发行版本。
- #### konga.0.14.9  
konga 是kong网关的图形管理界面，目前的最新发行版本是0.14.9

所有的安装介质可以在下面地址下载：

[http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86\_64/postgresql96-9.6.21-1PGDG.rhel8.x86\_64.rpm](http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86%5F64/postgresql96-9.6.21-1PGDG.rhel8.x86%5F64.rpm?ref=yonglun.me)

[http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86\_64/postgresql96-libs-9.6.21-1PGDG.rhel8.x86\_64.rpm](http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86%5F64/postgresql96-libs-9.6.21-1PGDG.rhel8.x86%5F64.rpm?ref=yonglun.me)

[http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86\_64/postgresql96-server-9.6.21-1PGDG.rhel8.x86\_64.rpm](http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86%5F64/postgresql96-server-9.6.21-1PGDG.rhel8.x86%5F64.rpm?ref=yonglun.me)

[https://nodejs.org/dist/v13.14.0/node-v13.14.0-linux-x64.tar.xz](https://nodejs.org/dist/v13.14.0/node-v13.14.0-linux-x64.tar.xz?ref=yonglun.me)

[https://download.konghq.com/gateway-2.x-rhel-8/Packages/k/kong-2.4.0.rhel8.amd64.rpm](https://download.konghq.com/gateway-2.x-rhel-8/Packages/k/kong-2.4.0.rhel8.amd64.rpm?ref=yonglun.me)

[https://github.com/pantsel/konga/archive/refs/tags/0.14.9.tar.gz](https://github.com/pantsel/konga/archive/refs/tags/0.14.9.tar.gz?ref=yonglun.me)

# 3\. kong安装步骤

## 3.1\. postgresql server 安装配置

### 3.1.1\. 数据库服务器安装

登陆 数据库服务器

下载 postgresql server 安装包

```bash
$ cd $HOME
$ wget http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-9.6.21-1PGDG.rhel8.x86_64.rpm
$ wget http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-libs-9.6.21-1PGDG.rhel8.x86_64.rpm
$ wget http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-server-9.6.21-1PGDG.rhel8.x86_64.rpm

```

安装postgresql server

```bash
$ sudo rpm -i postgresql96-libs-9.6.21-1PGDG.rhel8.x86_64.rpm
$ sudo rpm -i postgresql96-9.6.21-1PGDG.rhel8.x86_64.rpm
$ sudo rpm -i postgresql96-server-9.6.21-1PGDG.rhel8.x86_64.rpm

```

初始化postgresql server

```bash
$ sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
$ sudo systemctl enable postgresql-9.6
$ sudo systemctl start postgresql-9.6

```

对postgresql server 进行配置

```bash
$ sudo -u postgres psql
postgres=# --设置允许外部连接
postgres=# alter system set listen_addresses to '0.0.0.0';
postgres=# --回收所有用户拥有的public模式的权限
postgres=# revoke all privileges on schema public from PUBLIC;
postgres=# --创建kong数据库服务器账号，密码请替换为符合安全要求的密码
postgres=# create user kong with password 'XXXXXX';
postgres=# --创建kong数据库
postgres=# create database kong owner kong;
postgres=# --创建konga数据库服务器账号，密码请替换为符合安全要求的密码
postgres=# create user konga with password 'XXXXXX';
postgres=# --创建konga数据库
postgres=# create database konga owner konga;
postgres=# --退出psql
postgres=# \q

```

修改 /var/lib/pgsql/9.6/data/pg\_hba.conf 文件，设置一条如下的记录，允许客户端通过md5密码方式访问数据库服务器

```bash
# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             all                     md5

```

在防火墙中加入允许postgresql server端口的策略

```bash
$ sudo firewall-cmd --add-service=postgresql
$ sudo firewall-cmd --runtime-to-permanent

```

重启postgresql server

```bash
$ sudo systemctl restart postgresql-9.6.service

```

### 3.1.2\. 客户端安装

登陆 网关服务器

下载 postgresql 客户端 安装包

```bash
$ cd $HOME
$ wget http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-9.6.21-1PGDG.rhel8.x86_64.rpm
$ wget http://ftp.postgresql.org/pub/repos/yum/9.6/redhat/rhel-8-x86_64/postgresql96-libs-9.6.21-1PGDG.rhel8.x86_64.rpm

```

安装 postgresql 客户端

```bash
$ sudo rpm -i postgresql96-libs-9.6.21-1PGDG.rhel8.x86_64.rpm
$ sudo rpm -i postgresql96-9.6.21-1PGDG.rhel8.x86_64.rpm

```

### 3.1.3\. 数据库连接验证

登陆 网关服务器，验证通过账号密码可以正常连接 数据库：

输入下面的命令并按回车，（10.0.3.10 请替换为你的数据库服务器的IP地址）按提示输入kong账号的密码后，如果能成功连接到ｋｏｎｇ数据库，则表明数据库已经正常配置好了。

```bash
$ psql -h 10.0.3.10 -U kong -W
$ psql -h 10.0.3.10 -U konga -W

```

## 3.2\. nodejs 安装配置

登陆 网关服务器

下载nodejs 安装包

```bash
$ cd $HOME
$ wget https://nodejs.org/dist/v13.14.0/node-v13.14.0-linux-x64.tar.xz

```

安装nodejs

```bash
$ tar xvf node-v13.14.0-linux-x64.tar.xz
$ sudo ln -s $HOME/node-v13.14.0-linux-x64/bin/node /usr/bin/
$ sudo ln -s $HOME/node-v13.14.0-linux-x64/bin/npm /usr/bin/

```

验证node 及 npm 可以正常运行

```bash
$ node -v
v13.14.0
$ npm -v
6.14.4

```

## 3.3\. kong 安装配置

登陆 网关服务器

下载kong 安装包

```bash
$ cd $HOME
$ wget https://download.konghq.com/gateway-2.x-rhel-8/Packages/k/kong-2.4.0.rhel8.amd64.rpm](https://download.konghq.com/gateway-2.x-rhel-8/Packages/k/kong-2.4.0.rhel8.amd64.rpm

```

安装kong

```bash
cd $HOME
$ sudo yum localinstall kong-2.4.0.rhel8.amd64.rpm

```

创建kong 配置文件

```bash
$ sudo cp /etc/kong/kong.conf.default /etc/kong/kong.conf

```

修改 /etc/kong/kong.conf 文件，设置代理服务监听端口和 管理服务监听端口。pg\_host 设置为数据库服务器的IP地址，pg\_password修改为 3.1\. 设置的kong账号密码

```
proxy_listen = 0.0.0.0:80 reuseport backlog=16384, 0.0.0.0:443 http2 ssl reuseport backlog=16384
admin_listen = 127.0.0.1:8001 reuseport backlog=16384, 127.0.0.1:8444 http2 ssl reuseport backlog=16384

database = postgres
pg_host = 10.0.3.10
pg_port = 5432
pg_user = kong
pg_password = XXXXXX
pg_database = kong

```

初始化kong

```bash
$ sudo su kong
$ /usr/local/bin/kong migrations bootstrap -c /etc/kong/kong.conf
$ exit

```

设置防火墙规则

```bash
 $ sudo firewall-cmd --add-service=http
 $ sudo firewall-cmd --add-service=https
 $ sudo firewall-cmd --runtime-to-permanent

```

启动kong

```bash
$ sudo systemctl start kong

```

验证 kong 已经运行

```bash
$ curl http://127.0.0.1:8001
$ curl http://127.0.0.1

```

## 3.4\. konga 安装配置

登陆 网关服务器

下载konga 安装包

```bash
$ cd $HOME
$ wget http://10.100.30.44/rpm/konga-0.14.9.tar.gz
$ wget https://github.com/pantsel/konga/archive/refs/tags/0.14.9.tar.gz
$ mv 0.14.9.tar.gz konga-0.14.9.tar.gz

```

安装konga

```bash
$ tar xvf konga-0.14.9.tar.gz

```

修改运行环境变量文件 $HOME/konga-0.14.9/.env ，DB\_PASSWORD修改为 3.1\. 设置的konga账号密码，DB\_HOST 修改为数据库服务器的IP地址

```bash
PORT=1337
NODE_ENV=production
KONGA_HOOK_TIMEOUT=120000
DB_ADAPTER=postgres
DB_HOST=10.0.3.10
DB_PORT=5432
DB_USER=konga
DB_DATABASE=konga
DB_PASSWORD=XXXXXX
KONGA_LOG_LEVEL=warn
TOKEN_SECRET=some_secret_token

```

初始化konga数据库, 下面命令中XXXXXX替换为3.1\. 设置的konga账号密码， 10.0.3.10 替换为数据库服务器的IP地址

```bash
$ cd $HOME/konga-0.14.9
$ ./start.sh -c prepare -a postgres -u postgresql://konga:"XXXXXX"@10.0.3.10:5432/konga

```

启动 konga 服务

```$bash
$ cd $HOME/konga-0.14.9
$ nohup ./start.sh >/dev/null&

```

设置防火墙规则

```bash
$ sudo firewall-cmd --add-port=1337/tcp
$ sudo firewall-cmd --runtime-to-permanent

```

验证 konga 已经运行

```bash
$ curl http://127.0.0.1:1337

```

正常退出ssh 会话，避免运行konga的node 进程被终止

```bash
$ exit

```

- 在桌面电脑，使用浏览器访问 [http://网关服务器IP:1337](http://xn--ip-j04cu8bf4jo83amv1b:1337/?ref=yonglun.me) ，出现下面的画面

![image-20210503214049910](https://yonglun.me/content/images/2021/06/image-20210503214049910.png)

- 设置 KONGA 管理员账号、邮件地址和命名，按CREATE ADMIN 按钮创建管理员账号。 出现下面的登陆界面，如下图：

![image-20210503214109970](https://yonglun.me/content/images/2021/06/image-20210503214109970.png)

- 输入刚才登记的管理员账号密码，进入konga 管理界面，如下图：

![image-20210503214125597](https://yonglun.me/content/images/2021/06/image-20210503214125597.png)

- 登记需要管理的kong网关的地址，由于konga 和kong 安装在一起，可以输入[http://127.0.0.1:8001](http://127.0.0.1:8001/?ref=yonglun.me), 点击CREATEC ONNECTION 按钮，完成kong网关登记， 如下图：

![image-20210503214146989](https://yonglun.me/content/images/2021/06/image-20210503214146989.png)