(01)-Centos 7安裝 最新版本kong 1.4

Openresty是基於Nginx的,使用的語言是Lua。

依賴

  1. gcc
  2. pcre
  3. zlib
  4. openssl
  5. postgresql9.5+

 

gcc 安裝

安裝 gcc 編譯環境:

 

yum -y install gcc

pcre 安裝

pcre(Perl Compatible Regular Expressions) 是一個 Perl 庫,包括 perl 兼容的正則表達式,nginx 的 http 庫使用 pcre 解析正則表達式。

 

yum install -y pcre pcre-devel

zlib 安裝

zlib 庫提供多種壓縮和加壓縮的方式。

 

sudo yum install -y zlib zlib-devel

openssl 安裝

openssl 是一個請打的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協議。

 

yum install -y openssl openssl-devel

postgresql 安裝

PostgreSQL是完全由社區驅動的開源項目,由全世界超過1000名貢獻者所維護。它提供了單個完整功能的版本。可靠性是PostgreSQL的最高優先級。Kong 默認使用 postgresql 作爲數據庫。

 

// 添加 rpm
yum install -y https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm
// 安裝 postgresql 9.5
yum install -y postgresql95-server postgresql95-contrib
// 初始化數據庫
/usr/pgsql-9.5/bin/postgresql95-setup initdb

 

// 設置成 centos7 開機啓動服務
sudo systemctl enable postgresql-9.5.service
// 啓動 postgresql 服務
sudo systemctl start postgresql-9.5.service
// 查看 postgresql 狀態
suso systemctl status postgresql-9.5.service

配置 Postgresql

執行完初始化任務之後,postgresql 會自動創建和生成兩個用戶和一個數據庫:

linux 系統用戶 postgres:管理數據庫的系統用戶;
postgresql 用戶 postgres:數據庫超級管理員;
數據庫 postgres:用戶 postgres 的默認數據庫。
密碼由於是默認生成的,需要在系統中修改一下。

 

passwd postgres


爲了安全以及滿足 Kong 初始化的需求,需要在建立一個 postgre 用戶 kong 和對應的 linux 用戶 kong,並新建數據庫 kong。

 

 

// 新建 linux kong 用戶 
sudo adduser kong

// 使用管理員賬號登錄 psql 創建用戶和數據庫
// 切換 postgres 用戶
// 切換 postgres 用戶後,提示符變成 `-bash-4.2$` 
su postgres

// 進入 psql 控制檯
psql

// 此時會進入到控制檯(系統提示符變爲'postgres=#')
// 先爲管理員用戶postgres修改密碼
\password postgres

// 建立新的數據庫用戶(和之前建立的系統用戶要重名)
create user kong with password '123456';

// 爲新用戶建立數據庫
create database kong owner kong;

// 把新建的數據庫權限賦予 kong
grant all privileges on database kong to kong;

// 退出控制檯
\q


登錄命令爲:
psql -U kong -d kong -h 127.0.0.1 -p 5432
在 work 或者 root 賬戶下登錄 postgresql 數據庫會提示權限問題。

 

認證權限配置文件爲 /var/lib/pgsql/9.5/data/pg_hba.conf
常見的四種身份驗證爲:

trust:凡是連接到服務器的,都是可信任的。只需要提供psql用戶名,可以沒有對應的操作系統同名用戶;
passwordmd5:對於外部訪問,需要提供 psql 用戶名和密碼。對於本地連接,提供 psql 用戶名密碼之外,還需要有操作系統訪問權。(用操作系統同名用戶驗證)password 和 md5 的區別就是外部訪問時傳輸的密碼是否用 md5 加密;
ident:對於外部訪問,從 ident 服務器獲得客戶端操作系統用戶名,然後把操作系統作爲數據庫用戶名進行登錄對於本地連接,實際上使用了peer;
peer:通過客戶端操作系統內核來獲取當前系統登錄的用戶名,並作爲psql用戶名進行登錄。

psql 用戶必須有同名的操作系統用戶名。並且必須以與 psql 同名用戶登錄 linux 纔可以登錄 psql 。想用其他用戶(例如 root )登錄 psql,修改本地認證方式爲 trust 或者 password 即可。

 

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               trust

pgsql 默認只能通過本地訪問,需要開啓遠程訪問。
修改配置文件 /var/lib/pgsql/9.5/data/postgresql.conf ,將 listen_address 設置爲 '*'。

 

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'          # what IP address(es) to listen on;

執行 sudo systemctl restart postgresql-9.5.service 重啓 postgresql。

kong 安裝

參照官方的安裝方法[https://getkong.org/install/centos/]  

cat > /etc/yum.repos.d/kong.repo <<EOT

[kong]
baseurl=https://kong.bintray.com/kong-rpm/centos/7
gpgcheck=0

EOT

 

sudo yum install epel-release
sudo yum install kong-1.4.1

 

 

下面修改 kong 的配置文件,默認配置文件位於 /etc/kong/kong.conf.default

 

sudo cp /etc/kong/kong.conf.default /etc/kong/kong.conf

將之前安裝配置好的 postgresql 信息填入 kong 配置文件中:
sudo vi /etc/kong/kong.conf

 

#------------------------------------------------------------------------------
# DATASTORE
#------------------------------------------------------------------------------

# Kong will store all of its data (such as APIs, consumers and plugins) in
# either Cassandra or PostgreSQL.
#
# All Kong nodes belonging to the same cluster must connect themselves to the
# same database.

database = postgres              # Determines which of PostgreSQL or Cassandra
                                 # this node will use as its datastore.
                                 # Accepted values are `postgres` and
                                 # `cassandra`.

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 = 123456            # The password to authenticate if required.
pg_database = kong              # The database name to connect to.

pg_ssl = off                       # 如果不希望開放 8443 的 ssl 訪問可關閉

導入kong的數據到postgres

kong migrations bootstrap


如果啓動過程中,碰到提示 FATAL: Ident authentication failed for user "kong" 的問題,請確認在配置 postgresql 的認證文件時,採用了 password 或者 trust 連接方式。

Kong默認監聽下面端口:

8000,監聽來自客戶端的HTTP流量,轉發到你的upstream服務上。

8443,監聽HTTPS的流量,功能跟8000一樣。可以通過配置文件禁止。

8001,Kong的HTTP監聽的api管理接口。

8444,Kong的HTTPS監聽的API管理接口。

kong的管理端口8001默認監聽 127.0.0.1 修改爲監聽全部ip,修改/etc/kong/kong.conf ,取消admin_listen所在行的註釋,並改爲:admin_listen = 0.0.0.0:8001, 0.0.0.0:8444 ssl

 

 

發佈了68 篇原創文章 · 獲贊 9 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章