kong搭建

安装 postgersql

  • 安装,默认安装在/usr/pgsql-11

    1
    2
    3
    $ yum install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-6-x86_64/pgdg-centos11-11-2.noarch.rpm
    $ yum install postgresql11
    $ yum install postgresql11-server
  • 初始化 -D是指定的数据文件,-X是指定的wal目录,-U 是创建数据账户 -W 会提示输入密码

    1
    $ /usr/pgsql-11/bin/initdb -D /export/Data/postgres -X /export/Logs/postgres -U admin -W
  • 启动

    1
    $ /usr/pgsql-11/bin/pg_ctl -D /export/Data/postgres -l /export/Logs/postgres/postgres.log start
  • 本地登录数据

    1
    $ /usr/pgsql-11/bin/psql -d template1

升级openssl

  • 查看当前openssl版本,如果输出的版本低于:OpenSSL 1.0.2e则需要升级

    1
    $ openssl version
  • 下载

    1
    $ wget https://www.openssl.org/source/openssl-1.0.2-latest.tar.gz
  • 编译安装

    1
    2
    $ ./config --prefix=/usr --openssldir=/usr/openssl shared
    $ make && make install

安装openresty

  • 下载

    1
    $ wget https://openresty.org/download/openresty-1.13.6.2.tar.gz
  • 编译安装

    1
    2
    $ ./configure --with-pcre-jit --with-http_ssl_module --with-http_realip_module --with-http_stub_status_module --with-http_v2_module --prefix=/export/servers/openresty
    $ make && make install

安装luarocks

  • 下载源码
    1
    2
    $ wget http://luarocks.github.io/luarocks/releases/luarocks-3.0.4.tar.gz
    $ tar -xf luarocks-3.0.4.tar.gz

  • 编译安
  • 这里我们指定的安装目录是:/export/servers/luarocks-3.0.4
  • 注意这里设置–with-lua和–with-lua-include,需要制定openresty目录下的luajit

    1
    2
    $ ./configure --prefix=/export/servers/luarocks-3.0.4 --with-lua=/export/servers/openresty/luajit --with-lua-include=/export/servers/openresty/luajit/include/luajit-2.1
    $ make && make install
  • 设置环境变量

    1
    2
    3
    export LUAROCKS_HOME=/export/servers/luarocks-3.0.4
    PATH=$PATH:$LUAROCKS_HOME/bin
    export PATH
  • 验证luarocks命令是否可用

    1
    $ luarocks
  • 设置LUA_PATH

    1
    $ luarocks path
  • 把上一步输出的环境变量,写入profile中,示例如下:

1
2
export LUA_PATH='/home/admin/.luarocks/share/lua/5.1/?.lua;/home/admin/.luarocks/share/lua/5.1/?/init.lua;/export/servers/luarocks-3.0.4/share/lua/5.1/?.lua;/export/servers/luarocks-3.0.4/share/lua/5.1/?/init.lua;./?.lua;/usr/local/share/luajit-2.1.0-beta3/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua'
export LUA_CPATH='/home/admin/.luarocks/lib/lua/5.1/?.so;/export/servers/luarocks-3.0.4/lib/lua/5.1/?.so;./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so'

kong依赖的lua包

正常情况下,编译kong的源码时,luarocks会自动下载相关依赖,但在公司服务器上无法通过git下载github上多个lua module源码进行编译打包(连接github一直超时),这里记录了需要手动下载源码在编译安装的lua包。

  • lua-resty-jit-uuid

    1
    2
    3
    4
    $ wget https://codeload.github.com/thibaultcha/lua-resty-jit-uuid/tar.gz/0.0.7
    $ tar -xf 0.0.7
    $ cd lua-resty-jit-uuid-0.0.7
    $ luarocks make
  • kong-lapis

    1
    2
    3
    4
    $ wget https://github.com/Kong/lapis/archive/v1.6.0.1.tar.gz
    ...

    $ luarocks make kong-lapis-1.6.0.1-1.rockspec
  • lua-pack

    1
    2
    3
    $ wget https://github.com/Kong/lua-pack/archive/1.0.5.tar.gz
    ...
    $ luarocks make
  • lua-resty-cookie

    1
    2
    $ wget https://github.com/cloudflare/lua-resty-cookie/archive/v0.1.0.tar.gz
    ...
  • 由于该包解压后没有rockspec文件,无法通过luarocks打包,需要单独下载rockspec文件到解压后的目录下

1
2
   $ wget --no-check-certificate https://raw.githubusercontent.com/cloudflare/lua-resty-cookie/master/rockspecs/lua-resty-cookie-0.1.0-1.rockspec
$ luarocks make
  • lua-resty-mlcache

    1
    2
    3
    $ wget https://github.com/thibaultcha/lua-resty-mlcache/archive/2.2.0.tar.gz
    ...
    $ luarocks make
  • kong-plugin-serverless-functions

    1
    2
    $ wget https://github.com/Kong/kong-plugin-serverless-functions/archive/0.1.0.tar.gz
    ...
  • 由于该包的rockspec文件命名与需要的不符,需要单独下载rockspec文件到解压后的目录下

    1
    2
    3
    $ wget http://webmail.luarocks.org/manifests/kong/kong-plugin-serverless-functions-0.1.0-0.rockspec
    luarocks make kong-plugin-serverless-functions-0.1.0-0.rockspec
    $ luarocks make
  • kong-plugin-prometheus

    1
    2
    wget https://github.com/Kong/kong-plugin-prometheus/archive/0.1.0.tar.gz
    ...
  • 需要修改rockspec配置文件,把dependencies注释掉

    1
    $ luarocks make

安装kong

  • 下载

    1
    $ wget https://github.com/Kong/kong/archive/0.14.1.tar.gz
  • 解压

    1
    2
    3
    $ tar -xf 0.14.1.tar.gz
    $ mv kong-0.14.1 /export/servers
    $ cd /export/servers/kong-0.14.1
  • 编译

    1
    $ make install

配置kong

  • 拷贝默认配置文件
    1
    $ cp /export/servers/kong-0.14.1/kong.conf.default /export/servers/kong-0.14.1/kong.conf

需要修改的配置文件内容如下:

  • kong安装的目录

    1
    prefix = /export/servers/kong-0.14.1/
  • 日志级别

    1
    log_level = notice
  • 日志目录,注意确保启动kong的账户有日志目录的写权限,否则会启动失败,建议直接执行

    1
    2
    3
    4
    5
    mkdir -p /export/Logs/kong/logs/
    proxy_access_log = /export/Logs/kong/logs/access.log
    proxy_error_log = /export/Logs/kong/logs/error.log
    admin_access_log = /export/Logs/kong/logs/admin_access.log
    admin_error_log = /export/Logs/kong/logs/error.log
  • 启动nginx的账户

    1
    nginx_user = admin admin
  • 8000是对外提供访问服务的

    1
    proxy_listen = 0.0.0.0:8000, 0.0.0.0:8443 ssl
  • 8001是admin接口使用,进行配置相关操作的

    1
    admin_listen = 0.0.0.0:8001, 127.0.0.1:8444 ssl
  • 数据库相关配置,数据库主要存放配置的信息

    1
    2
    3
    4
    5
    6
    database = postgres
    pg_host = 127.0.0.1
    pg_port = 5432
    pg_user = kong
    pg_password =
    pg_database = kong

创建kong的数据库账户,注意和kong.conf的数据库配置相匹配(注意: 只有安装第一个节点需要初始化数据库)

1
$ /usr/pgsql-11/bin/psql -d template1

  • 执行的sql
    1
    CREATE USER kong; CREATE DATABASE kong OWNER kong;

修改kong默认启动的nginx路径
kong会默认从几个路径寻找nginx命令来启动openresty,如果openresty安装的目录不再这几个目录下,机会启动失败,这里我们手动修改成我们自己安装的目录。

1
$ vi /export/servers/kong-0.14.1/kong/cmd/utils/nginx_signals.lua

  • 上面文件中,这个部分需要修改

    1
    2
    3
    4
    5
    local nginx_search_paths = {
    "/usr/local/openresty/nginx/sbin",
    "/opt/openresty/nginx/sbin",
    ""
    }
  • 修改后的

    1
    2
    3
    local nginx_search_paths = {
    "/export/servers/openresty/nginx/sbin"
    }

初始化和启动kong

  • 会连接数据库,创建kong需要的表

    1
    $ /export/servers/kong-0.14.1/bin/kong migrations up -c /export/servers/kong-0.14.1/kong.conf
  • 启动kong(root账户下)

    1
    $ /export/servers/kong-0.14.1/bin/kong start --vv -c /export/servers/kong-0.14.1/kong.conf
  • 验证kong的admin接口

    1
    $ curl -i http://localhost:8001/
  • 停止kong

    1
    $ /export/servers/kong-0.14.1/bin/kong stop -p /export/servers/kong-0.14.1/