环境准备, centos7.5, 虚拟机或docker镜像都可, 我是在docker镜像里做的. 安装包全了, 都在下面, 如果想傻瓜式安装, 执行本篇全部命令即可成功启动kong, konga, pgsql. 非docker的话就挑挑干货命令
链接: https://pan.baidu.com/s/1s5SRVjVIt0u9WcTfpAE_dg 密码: abfa
安装包内软件版本, kong2.1.0, konga0.14.9, postgresql96, centos7.5.1804, node v12.16.0.
先说下版本的问题, kong2.1是最新版,kong dashbaord不支持, 只能用konga, konga的最行版是0.14.9, 它只必须用postgresql9.5以上版本, 选择pg9.6是因为实验了下pg12, 与konga冲突, konga的官方推荐node12, 所以选了12.16的node
https://docs.konghq.com/ kong官网
https://github.com/pantsel/konga konga github
查看linux版本
cat /etc/redhat-release #CentOS Linux release 7.5.1804 (Core)
uname -a # Linux 39a8dda2b605 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
cat /proc/version #Linux version 4.19.76-linuxkit (root@4abe09437d05) (gcc version 8.3.0 (Alpine 8.3.0)) #1 SMP Tue May 26 11:42:35 UTC 2020
以docker镜像为例, 开始整, 先下载docker镜像,
docker pull centos:7.5.1804
启动容器
/Users/fengzhikui/docker/kong替换成自己下载的路径
docker run -d --name kong \
--privileged=true \
-v /Users/fengzhikui/docker/kong/data/profile:/etc/profile \
-v /Users/fengzhikui/docker/kong/data/npmrc:/root/.npmrc \
-v /Users/fengzhikui/docker/kong/data/kong.conf:/etc/kong/kong.conf \
-v /Users/fengzhikui/docker/kong/kongdata/usrlocalkong/:/usr/local/kong \
-v /Users/fengzhikui/docker/kong/kongdata/etckong:/etc/kong/ \
-v /Users/fengzhikui/docker/kong/pgsqldata/varlibpgsql96:/var/lib/pgsql/9.6/ \
-v /Users/fengzhikui/docker/kong/data:/data \
-p 1337:1337 \
-p 8000:8000 \
-p 8001:8001 \
-p 8443:8443 \
-p 5432:5432 \
-p 8002:8002 \
centos:7.5.1804 \
/usr/sbin/init
简单说一下端口, 1337konga对外暴露的dashboard端口, 8000和8443是kong监听的http和https的端口, 8001kong对外暴露api, 5432pgsql对外暴露服务. /var/lib/pgsql/9.6/是为了杀了容器的话, pgsql的数据还能保留,/usr/local/kong是为了保留kong的数据, 也可以在容器外看nginx的log, profile指定了一些环境变量, npmrc配置了国内源
执行完上面的命令, 容器没死, 重要的文件也映射到了容器内, 接下来去容器里边操作
docker exec -it kong /bin/bash
安装必要的程序
yum -y localinstall /data/kong/kong-2.1.0.el7.amd64.rpm \
&& yum -y localinstall /data/git/* \
&& yum -y localinstall /data/pg96/* \
&& yum -y localinstall /data/vim/* \
&& source /etc/profile \
&& ln -s /usr/lib64/libz.so.1.2.7 /usr/lib64/libz.so
命令摆着呢, ln -s /usr/lib64/libz.so.1.2.7 /usr/lib64/libz.so 这个的原因是centos7内没有这个名的库, 链接一下, 非docker不用这步.
现在kong, postgresql9.6装完了, 先把postgresql启动,
/usr/pgsql-9.6/bin/postgresql96-setup initdb && \
cp /data/pg_hba.conf /var/lib/pgsql/9.6/data/pg_hba.conf && \
cp /data/postgresql.conf /var/lib/pgsql/9.6/data/postgresql.conf && \
systemctl start postgresql-9.6
initdb就是把数据库初始化一下, 包括/var/lib/pgsql/9.6/data这个目录数据的创建, 把配置文件考过去, 就可以启动了pg_hba.conf配置了访问权限的事.然后初始化kong和konga需要的数据库和用户名
su - postgres
psql -U postgres -h 127.0.0.1 -p 5432
CREATE USER kong;CREATE DATABASE kong OWNER kong;ALTER USER kong WITH password 'kong';create user konga with password 'konga';alter role konga login;create database konga owner konga;grant all privileges on database konga to konga;
切换到postgres用户, 连接数据库, 创建数据库kong,用户kong,密码kong和数据库konga,用户konga,密码konga
数据库的准备工作完毕, 退出到自己的用户开始启动kong, 执行下面的命令之前先看一眼kong.conf是不是改对了, 这里目前只是配置了链接数据库的信息, 等着将来写插件的调试的时候还需要改这个配置.
kong migrations bootstrap && kong migrations up -c /etc/kong/kong.conf && kong start && kong health
bootstrap是初始化, up对应着插件里的up的sql语句的执行, 重启的话不需要在进行初始化的操作了.
重启的话命令如下, 调试插件时需要频繁重启
kong stop && kong start -c /etc/kong/kong.conf --vv && tail -f /usr/local/kong/logs/*.log
或者
kong restart
至此, kong安装配置完成, 是否安装成功执行 kong health 查看
开始安装konga
cd /data/konga/
git clone https://github.com/pantsel/konga.git
cd konga
npm i
npm install -g gulp bower sails dotenv-extended angular dotenv lodash async nn stable sails
node ./bin/konga.js prepare --adapter postgres --uri postgresql://konga:konga@你的本机ip别用localhost:5432/konga
npm run production
install之前保证npmnr放在/root/.npmrc了,理论上现在就可以启动了, 但是有时会报错
Uncaught ReferenceError: angular is not defined
需要执行如下命令, 如果执行完还报错, 你的浏览器缓存没跑了, 把disable cache勾上, 这点很重要啊, 特别是自己想扩展konga的代码的时候, disable cache, disable cache, disable cache
$ npm run bower-deps
至此, 安装完成, 几个有用的目录
/etc/kong/kong.conf kong的配置文件
/usr/local/share/lua/5.1/kong kong的lua脚本,plugin也在这, constants.lua用luarocks安装插件时, 需要在这里启用插件
/usr/local/kong/logs/ nginx的log,kong插件编写时需要看