- 由 虚拟的现实创建于10月 07, 2023 需要 4 分钟阅读时间
一、准备内容
1、按标准完成操作系统安装及配置
2、按标准完成 PgSQL 数据库的安装、配置。https://wiki.waringid.me/x/RAES
3、新建 kong 数据库和用户
create user kong with password 'password'; create database kong owner kong;
二、kong 安装及配置
2.1 yum配置及安装
wget https://bintray.com/kong/kong-rpm/rpm -O bintray-kong-kong-rpm.repo export major_version=`grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release | cut -d "." -f1` sed -i -e 's/baseurl.*/&\/centos\/'$major_version''/ bintray-kong-kong-rpm.repo mv bintray-kong-kong-rpm.repo /etc/yum.repos.d/ yum update -y yum install -y kong kong version
2.2 配置 kong
1、修改 kong 配置文件
官方的配置文档请参考:https://docs.konghq.com/1.4.x/configuration/
cp /etc/kong/kong.conf.default /etc/kong/kong.conf
打开配置文件,修改数据库连接、用户名和密码
pg_host = 127.0.0.1 # The PostgreSQL host to connect to. pg_port = 5432 # The port to connect to. pg_user = kong # The username to authenticate if required. pg_password = password # The password to authenticate if required. pg_database = kong
2、修改 kong_defaults.lua 文件
进入/usr/local/share/lua/5.1/kong/templates目录,修改kong_defaults.lua里的pg_password=password
3、初始化数据库
kong migrations bootstrap -c /etc/kong/kong.conf
如果出现“Error: [PostgreSQL error] failed to retrieve PostgreSQL server_version_num: 致命错误: 用户 "kong" Ident 认证失败Run with --v (verbose) or --vv (debug) for more details”的失败提示,修改 vim /var/lib/pgsql/10/data/pg_hba.conf 的 ident 为 trust 并重启数据库。
4、启动 kong
kong start -c /etc/kong/kong.conf -vv curl -i http://localhost:8001/
8000:此端口是KONG用来监听来自客户端传入的HTTP请求,并将此请求转发到上有服务器;(kong根据配置的规则转发到真实的后台服务地址。)
8443:此端口是KONG用来监听来自客户端传入的HTTPS请求的。它跟8000端口的功能类似,转发HTTPS请求的。可以通过修改配置文件来禁止它;
8001:Admin API,通过此端口,管理者可以对KONG的监听服务进行配置,插件设置、API的增删改查、以及负载均衡等一系列的配置都是通过8001端口进行管理;
8444:通过此端口,管理者可以对HTTPS请求进行监控
5、kong 的日志
三、接口接入 kong 测试
下面的所有admin api操作,如果成功会写入postgreSQL中,按照官方的demo操作,数据保存到数据库。
3.1 服务转发
1、通过 api 增加 services
curl -i -X POST \ --url http://localhost:8001/services/ \ --data 'name=baidu-service' \ --data 'url=http://www.baidu.com'
2、给 services 增加 route
curl -i -X POST \ --url http://localhost:8001/services/baidu-service/routes \ --data 'hosts[]=baidu.com'
3、通过 kong 转发 请求
curl -i -X GET \ --url http://localhost:8000/ \ --header 'Host: baidu.com'
四、安装管理界面
通用的图形界面版本对新版本的支持有限,本例通过开源项目https://github.com/pocketdigi/kong-admin-ui实现图形化管理。该项目是全前端内容,自行编译后通过静态页面方式访问,需要自行维护页面安全。
4.1 安装 nodejs
其它版本的请参考:https://github.com/nodesource/distributions#debian-and-ubuntu-based-distributions
curl -sL https://rpm.nodesource.com/setup_8.x | bash - yum install -y nodejs
4.2 源码编译
git clone https://github.com/pocketdigi/kong-admin-ui cd kong-admin-ui/ npm install npm run build npm run test
4.3 配置
将编译完成的 “dist” 文件夹复制到对应的位置,例如 /usr/local/kong 并重命名为 kong-admin-ui
然后按照“增加静态页面”的方式完成解析配置
注意
1、不要随意修改文件名称和目录结构
2、如果出现 css、js 无法加载或报 404 错误的情况,检查文件结构和 nginx 的 default-type 类型设置
五、配置相关
5.1 配置文件
启动加载文件:/etc/kong/kong.conf
具体配置文件:/usr/local/kong/*.conf
openresty文件:/usr/local/openresty
5.2 修改配置文件
正常情况下 kong 的配置内容都通过 API 接口的方式完成设置,如果需要 kong 主机增加静态解析,需要修改模版文件。
/usr/local/share/lua/5.1/kong/templates/nginx.lua
/usr/local/share/lua/5.1/kong/templates/nginx_kong.lua
5.3 增加静态解析页面
打开 /usr/local/share/lua/5.1/kong/templates/nginx.lua 文件,在 include 'nginx-kong.conf'; 内容下增加以下的内容。完成后重启 kong 服务生效
server { listen 8005 default_server; include /usr/local/openresty/nginx/conf/mime.types; default_type application/octet-stream; index index.html; root /usr/local/kong; location / { try_files $uri $uri/ =404; auth_basic "Restricted Content"; auth_basic_user_file /etc/kong/.htpassd; } }
nginx 环境中增加页面认证功能可以使用 htpasswd的指令完成,如下所示:
yum install httpd-tools htpasswd -c /etc/kong/.htpassd admin cat /etc/kong/.htpassd
六、konga 管理界面
推荐使用,之前因为配置错误导致页面无法打开。
通过开源项目https://github.com/pantsel/konga konga实现。
6.1 安装 nodejs
其它版本的请参考:https://github.com/nodesource/distributions#debian-and-ubuntu-based-distributions
curl -sL https://rpm.nodesource.com/setup_8.x | bash - npm config set registry https://registry.npm.taobao.org yum install -y nodejs npm install sails brower -g npm install @angular/cli -g npm run bower-deps
6.2 下载源码,修改配置文件
git clone https://github.com/pantsel/konga.git chown -R postgres.postgres ./konga cd konga/config npm install --unsafe-perm=true --allow-root sails-postgresql cp local_example.js local.js vim local.js vi connections.js cd konga cp .env_example .env vim .env
修改关于数据库连接的部分。
vim local.js
models: {
connection: process.env.DB_ADAPTER || 'localDiskDb',
}
修改为 models: {
connection: process.env.DB_ADAPTER || 'postgres', // 'mysql', 'mongo', 'sqlserver' or 'postgres' 根据实际情况选择数据库
}
#修改数据库连接的配置文件
vi connections.js
postgres: {
adapter: 'sails-postgresql',
host: process.env.DB_HOST || 'localhost',
user: process.env.DB_USER || 'postgres',
password: process.env.DB_PASSWORD || 'admin1!',
port: process.env.DB_PORT || 5432,
database: process.env.DB_DATABASE ||'konga_database',
//poolSize: process.env.DB_POOLSIZE || 10,
ssl: process.env.DB_SSL ? true : false // If set, assume it's true
},
修改为:
postgres: {
adapter: 'sails-postgresql',
host: process.env.DB_HOST || 'localhost',
user: process.env.DB_USER || 'konga',
password: process.env.DB_PASSWORD || null,
port: process.env.DB_PORT || 5432,
database: process.env.DB_DATABASE ||'konga_database',
poolSize: process.env.DB_POOLSIZE || 10,
ssl: process.env.DB_SSL ? true : false // If set, assume it's true
},
PORT=1337 # Konga的Web服务监听端口 NODE_ENV=production # 环境代码,建议使用production KONGA_HOOK_TIMEOUT=120000 # Konga调用管理API的最长回调等待时间 DB_ADAPTER=postgres # 数据库类型,支持mongo,mysql,postgres,sqlserver DB_HOST=localhost DB_PORT=5432 DB_DATABASE=konga DB_USER=konga # 数据库用户名 DB_PASSWORD=konga # 数据库密码 KONGA_LOG_LEVEL=warn # 日志等级 TOKEN_SECRET=some_secret_token
6.3 配置数据库
create user konga with password 'password'; create database konga owner konga; grant all privileges on databse konga to konga;
6.4 安装依赖库
有关 pm2 的介绍和相关命令操作请参考“Nodejs pm2 应用指南”。
npm i npm install -g pm2 sudo -u postgres node ./bin/konga.js prepare --adapter postgres --uri postgresql://konga:konga@localhost:5432/konga sudo -u postgres npm run production sudo -u postgres pm2 start app.js --name konga sudo -u postgres pm2 startup sudo -u postgres pm2 save
6.5 配置及访问
按页面提示新建管理员用户并配置连接,完成后的效果如下
- 无标签
添加评论