前言:本文的安装环境是CentOS7 64位,虽然有官方安装demo,但实际依葫芦画瓢时,还是遇到一些问题,所以根据自身经验,重新整理一下
附:官方各环境下的KONG安装索引
方式一:docker方式
-
创建一个Docker网络
实现容器间的网络通信docker network create kong-net
-
安装数据库
此处我采用的9.6版本的postgres docker run -d --name kong-database \ --network=kong-net \ -p 5432:5432 \ -e "POSTGRES_USER=postgres" \ -e "POSTGRES_PASSWORD=postgres" \ -e "POSTGRES_DB=postgres" \ postgres:9.6 数据库安装后,可进入postgres容器,创建kong用户及数据库kong,操作步骤如下: # 切换用户 su postgres # 进入命令 psql; # 创建用户kong及密码 create user kong with password 'kong'; # 创建数据库kong create database kong owner kong;
-
初始化数据库
docker run --rm \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_PASSWORD=kong" \ kong:0.13.1 kong migrations up 或者 docker run --rm \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_PORT=5432" \ -e "KONG_PG_USER=kong" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_PG_DATABASE=kong" \ kong:0.13.1 kong migrations up
这里有两点需要注意:
1. kong:latest 表示安装最新版本,但是由于前端管理工具Dashboard目前只支持到0.14.x,如果管理kong版本过高,界面有点bug,所以我实际安装时这里选择kong:0.13.1
2. 如果kong版本低于0.15时,kong migrations bootstrap应改为kong migrations up,>=0.15时使用 bootstrap -
安装kong镜像并启动kong
数据库安装好了,并按指定kong版本进行对应的初始化后,现在可以通过docker拖取镜像并启动kong了docker run -d --name kong \ --network=kong-net \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong:0.13.1 如果数据库是本地化部署,可以直接写IP及相关信息,注意这样写后面启动dashbord时不需要--network kong-net了,且url里直接写IP docker run -d --name kong \ -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=172.20.10.4" \ -e "KONG_PG_PORT=5432" \ -e "KONG_PG_USER=kong" \ -e "KONG_PG_PASSWORD=kong" \ -e "KONG_PG_DATABASE=kong" \ -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 8444:8444 \ kong:0.13.1
启动成功后我们可以看到两个运行中的容器
可以在浏览器输入:http://IP:8001,查看结果
或者服务器上执行,是否正常响应:curl -i http://localhost:8001/
这里注意下,IP地址选择本地可以,但是其他IP也可以的前提是ADMIN_LISTEN参数设置为0.0.0.0:8001,否则adminAPI只能本机调用。
-
安装管理工具
kong有官方的管理工具,但是收费,开源的有kong-dashboard和kongA,这里先选择官方推荐的dashboard
但是按官方来,启动一直报错,类似这样:
应该是网络的问题,解决方法是可以这样执行:docker run --rm --network kong-net -p 8080:8080 \ --name kong-dashboard \ pgbi/kong-dashboard start --kong-url http://kong:8001
界面如下
由于该工具列表不支持分页查询和筛选查询,最终放弃!使用KONGA:1.先初始化konga自身表,注意先创建用户konga和数据库konga,此处省略不写了 docker run -it --rm \ --name kong_dashboard_a \ -e "DB_ADAPTER=postgres" \ -e "DB_HOST=172.20.10.4" \ -e "DB_PORT=5432" \ -e "DB_USER=konga" \ -e "DB_PASSWORD=konga" \ -e "DB_DATABASE=konga" \ -e "NODE_ENV=development" \ pantsel/konga 2.启动 docker run -d \ --name kong_dashboard_konga \ -p 1337:1337 \ -e "DB_ADAPTER=postgres" \ -e "DB_HOST=172.20.10.4" \ -e "DB_PORT=5432" \ -e "DB_USER=konga" \ -e "DB_PASSWORD=konga" \ -e "DB_DATABASE=konga" \ -e "NODE_ENV=production" \ pantsel/konga
方式二:Node+npm方式
我一开始使用的是这种方式安装,后来发现docker会方便快捷一些,踩的坑也少些,但是可能对服务的配置相关理解就少了,所以建议先使用npm方式安装一下
-
环境准备
安装gcc编译环境yum install -y gcc gcc-c++
pcre安装
pcre(Perl Compatible Regular Expressions) 是一个 Perl 库,包括 perl 兼容的正则表达式,nginx 的 http 库使用 pcre 解析正则表达式。yum install -y pcre pcre-deve
openssl安装
openssl 是一个请打的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议yum install -y openssl openssl-devel
-
数据库安装(此处选择postgresql)
PostgreSQL是完全由社区驱动的开源项目,由全世界超过1000名贡献者所维护。它提供了单个完整功能的版本。可靠性是PostgreSQL的最高优先级。Kong 默认使用 postgresql 作为数据库。安装步骤可以参考简书,以下是我整理的,请笑纳:1.下载yum源文件 yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm 2.安装PostgreSQL客户端 yum install postgresql96 3.安装PostgreSQL核心服务端、附加模块 yum install postgresql96-server postgresql96-contrib 4.安装PostgreSQL拓展包(可选) yum install postgresql96-devel 5.检安装是否成功 rpm -aq| grep postgres 6.设置开机自启 chkconfig postgresql-9.6 on 7.自选数据库存放路径(可选,怕麻烦就采用默认) 为方便进行统一管理,可以建立统一的路径进行存放,这里有两种方式,一种直接编辑环境变量文件/etc/profile,一种是修改postgresql文件修改初始化参数,如下 #这里的初始化配置文件路径根据版本或docker安装可能存在不同 vi /etc/init.d/postgresql-9.6 #修改属性PGDATA、PGLOG为你指定的路径,这里我没有修改 PGDATA=/var/lib/pgsql/9.6/data 假如你想修改的话,假设PGDATA=/data/pg/data,那么你在初始化数据库前请预先执行: #存放数据库的文件夹 mkdir -p /data/pg/data #为新创建的pg文件夹分配数据库服务的操作权限 chown -R postgres:postgres /data/pg #为存放数据库的文件夹分配权限 chown -R postgres:postgres /data/pg/data chmod 750 /data/pg/data 8.初始化数据库 service postgresql-9.6 initdb 9.启动数据库服务 service postgresql-9.6 start 10.修改postgresql配置,重要! 修改上面data目录下配置文件postgresql.conf 和 pg_hba.conf,如果你指定数据存放目录,那默认路径应该是:/var/lib/pgsql/9.6/data #配置监听所有服务器请求 vim postgresql.conf listen_addresses=‘localhost’将localhost改为 * ,记得注释打开 #配置允许远程访问 vim pg_hba.conf #将第80行、82行、85行METHOD参数修改为trust; #IPv4 local connections新增一条记录 host all all 0.0.0.0/0 trust 11.创建用户及数据库 #切换数据库初始化的默认用户postgres su postgres; #进入数据库命令行 psql; (注意命令结尾处加上分号';') create user 用户名 WITH PASSWORD 密码 ; create database 数据库名 OWNER 用户 ; #这里创建kong用户及kong数据库,如 create user kong with password 'kong'; create databse kong OWNER kong; #退出命令 \q
至此,数据库安装、初始化、kong数据库用户及数据库已创建。
-
kong安装及启动
1.安装 yum install epel-release yum install -y https://kong.bintray.com/kong-community-edition-rpm/centos/7/kong-community-edition-0.13.1.el7.noarch.rpm 2.初始化数据库 #这里bootstrap请根据kong版本选择是up还是bootstrap,上面docker安装有描述 kong migrations bootstrap 3.配置kong.yml 这里有两处改动,必改的是配置数据库连接信息,如下图,可选的是admin_listen参数修改,决定是否只能本地调用api接口,可以修改为:0.0.0.0/8001,0.0.0.0:8444 ssl 4.启动 kong start [-c /path/to/kong.conf] 5.验证 curl -i http://localhost:8001/
成功安装kong验证界面:
-
管理界面安装
选用dashboard,安装比较简单,直接贴上官方说明# Install Kong Dashboard npm install -g kong-dashboard # Start Kong Dashboard kong-dashboard start --kong-url http://kong:8001 # Start Kong Dashboard on a custom port kong-dashboard start \ --kong-url http://kong:8001 \ --port [port] # Start Kong Dashboard with basic auth kong-dashboard start \ --kong-url http://kong:8001 \ --basic-auth user1=password1 user2=password2 # See full list of start options kong-dashboard start --help
这里有点需要说明的就是这种启动方式切换命令后服务会停止,以后台进程启动方式即可,如
nohup kong-dashboard start --kong-url http://kong:8001 &
到此两种安装方式都已介绍完,相信你们在照例安装时肯定会遇到一些其他问题,自己再研究研究~~~
参考文档:
1.https://blog.csdn.net/qq_30553235/article/details/79004961
2.https://blog.csdn.net/jiangyu1013/article/details/80195583
3.https://www.jianshu.com/p/cc5bc168e5e1
4.https://www.linzepeng.com/2018/06/22/kong-dashboard-note/