Symfoware

Symfowareについての考察blog

Kong 0.9.7をDebian 8にインストール

オープンソースのAPIゲートウェイ「Kong」
https://getkong.org/


Kong 0.9.7をDebian 8.7にインストールしました。
0.8系の時と設定ファイルの記載方法が微妙に異なっていたので改めてメモしておきます。
API GatewayのKongをDebian 8にインストール



PostgreSQL 9.6のインストール



データベースはCassandraとPostgreSQLのいずれかが選択できます。
今回はPostgreSQL 9.6を使用することにしました。

インストールはこちら。
Debian 8.7(Jessie)にPostgreSQL 9.6をインストールし、外部接続を許可する

ユーザー:pgadmin
パスワード:P@ssw0rd
で接続できるようにしておきました。

事前に「kong」というデータベースを作成しておきます。


# psql -h localhost -U pgadmin -W -d postgres
ユーザ pgadmin のパスワード: [pgadminのパスワードP@ssw0rd]
psql (9.6.1)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: オフ)
"help" でヘルプを表示します.

postgres=# create database kong;
CREATE DATABASE
postgres=# \q






debパッケージの取得とインストール



こちらを参考にしました。
https://getkong.org/install/debian/


必要なライブラリをインストール


# apt-get update
# apt-get install netcat openssl libpcre3 dnsmasq procps perl




debパッケージを取得。
kong本体をインストールします。


# cd /usr/local/src/
# wget https://github.com/Mashape/kong/releases/download/0.9.7/kong-0.9.7.jessie_all.deb
# dpkg -i kong-0.9.7.*.deb






設定ファイルの編集



設定ファイルの雛形をコピーし、データベース接続情報を記載します。


# cp /etc/kong/kong.conf.default /etc/kong/kong.conf
# vi /etc/kong/kong.conf




以前はyml形式でしたが、conf形式に変わったようです。
100行目付近にデータベースの設定があります。
コメントを解除し、設定を変更します。


database = postgres
pg_host = 127.0.0.1
pg_port = 5432
pg_user = pgadmin
pg_password = P@ssw0rd
pg_database = kong





設定が終わったら「kong start」でkongサーバーを起動してみます。


# kong start
migrating core for database kong
core migrated up to: 2015-01-12-175310_skeleton
core migrated up to: 2015-01-12-175310_init_schema
core migrated up to: 2015-11-23-817313_nodes
core migrated up to: 2016-02-29-142793_ttls
migrating hmac-auth for database kong
hmac-auth migrated up to: 2015-09-16-132400_init_hmacauth
migrating rate-limiting for database kong
rate-limiting migrated up to: 2015-08-03-132400_init_ratelimiting
rate-limiting migrated up to: 2016-07-25-471385_ratelimiting_policies
migrating acl for database kong
acl migrated up to: 2015-08-25-841841_init_acl
migrating ip-restriction for database kong
ip-restriction migrated up to: 2016-05-24-remove-cache
migrating jwt for database kong
jwt migrated up to: 2015-06-09-jwt-auth
jwt migrated up to: 2016-03-07-jwt-alg
migrating galileo for database kong
galileo migrated up to: 2016-04-15_galileo-import-mashape-analytics
migrating key-auth for database kong
key-auth migrated up to: 2015-07-31-172400_init_keyauth
migrating oauth2 for database kong
oauth2 migrated up to: 2015-08-03-132400_init_oauth2
oauth2 migrated up to: 2016-07-15-oauth2_code_credential_id
oauth2 migrated up to: 2016-12-22-283949_serialize_redirect_uri
migrating response-ratelimiting for database kong
response-ratelimiting migrated up to: 2015-08-03-132400_init_response_ratelimiting
response-ratelimiting migrated up to: 2016-08-04-321512_response-rate-limiting_policies
migrating basic-auth for database kong
basic-auth migrated up to: 2015-08-03-132400_init_basicauth
3 migrations ran
Kong started





ブラウザでhttp://[サーバーIP]:8001/にアクセスすると、ステータスが表示されるはずです。

727_01.png

関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/01/15(日) 22:50:35|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Debian 8.7(Jessie)にPostgreSQL 9.6をインストールし、外部接続を許可する

こちらを参考に、DebianへPostgreSQL 9.6をインストール。
外部からの接続を許可する設定を行います。

Debian 8(Jessie)にPostgreSQL 9.4をインストールし、外部接続を許可する


リポジトリの追加



/etc/apt/sources.list.d/pgdg.listを作成
リポジトリのパスを記載します。


# echo deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main > /etc/apt/sources.list.d/pgdg.list




認証キーを追加


# apt-get install wget ca-certificates
# wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -




リポジトリを更新


# apt-get update
# apt-get upgrade




インストール実行


# apt-get install postgresql-9.6




バージョン9.6.1がインストール出来ました。


# su - postgres
$ psql
psql (9.6.1)
"help" でヘルプを表示します.

postgres=#








外部接続許可



外部からの接続を許可します。

postgresql.confを編集。


# vi /etc/postgresql/9.6/main/postgresql.conf




60行目付近のlisten_addressesの記載を変更します。


# - Connection Settings -

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




続いて、pg_hba.confを編集。


# vi /etc/postgresql/9.6/main/pg_hba.conf




認証を受け付けるIPの範囲を追記します。


# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.1/24         md5




編集が終わったらサービスをリスタート。


# service postgresql restart



これで外部から接続できるようになります。





ユーザーの作成



接続用にユーザーを作成してみます。


# su - postgres
$ createuser --pwprompt --interactive pgadmin
新しいロールのためのパスワード: [パスワード入力]
もう一度入力してください:[上記とパスワード入力]
新しいロールをスーパーユーザにしますか? (y/n)y




関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/01/15(日) 22:31:54|
  2. PostgreSQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

java 8 jjsスクリプト sshトンネルを経由し、MariaDBのデータを取得する

java8から搭載されたjjsスクリプトを試しています。
OpenJDK 8 jjsコマンドでJavaScriptを実行する


SSHトンネルを経由してデータベースに接続できることを知りました。
HeidiSQL SSH tunnel経由でMySQL(MariaDB)に接続する

jjsスクリプトでデータベースに接続する方法もわかりました。
java 8 jjsスクリプト JDBCドライバを使用してデータベースに接続する


これらを踏まえ、jjsスクリプトを使用し、sshトンネル経由でMariaDBのデータを取得してみます。
こちらを参考にさせていただきました。
JDBCでSSHトンネルを経由してMySQLに接続する方法



jsch



javaでssh接続を行うには、jschを使用するのが良さそうです。
http://www.jcraft.com/jsch/

jsch-0.1.54.jarをダウンロードしました。

726_01.png


jsch-0.1.54.jarをこれから作成するjjsスクリプトと同じ階層にコピーしておきます。





サンプル




ホスト:192.168.1.103

sshユーザー:sshuser
sshパスワード:sshuser123
sshポート:22

データベースユーザー:root
データベースパスワード:P@ssw0rd
データベース名:sample
テーブル:test




上記の条件で接続してみます。

・sample.js


  1. var jsch = new com.jcraft.jsch.JSch()
  2. // ユーザー、サーバー名、ポートを指定
  3. var session = jsch.getSession('sshuser', '192.168.1.103', 22)
  4. // ssh接続のパスワードを指定
  5. session.setPassword('sshuser123')
  6. var config = new java.util.Properties()
  7. config.put("StrictHostKeyChecking", "no")
  8. session.setConfig(config)
  9. session.connect()
  10. // 3307 <-> 3036でsshトンネルを生成
  11. var remoteHost = "127.0.0.1"
  12. var localPort = 3307
  13. var remotePort = 3306
  14. session.setPortForwardingL(localPort, remoteHost, remotePort)
  15. // データベース接続
  16. var prop = new java.util.Properties()
  17. prop.setProperty('user', 'root')
  18. prop.setProperty('password', 'P@ssw0rd')
  19. // ポート番号の指定は「3307」であることに注意
  20. var url = "jdbc:mariadb://localhost:3307/sample"
  21. var driver = new org.mariadb.jdbc.Driver()
  22. var con = driver.connect(url, prop)
  23. var stmt = con.createStatement()
  24. var rs = stmt.executeQuery('select * from test')
  25. while(rs.next()){
  26.     print(rs.getInt('id') + ':' + rs.getString('item'))
  27. }
  28. session.disconnect()
  29. print('ok')





JDBCドライバーとjschのクラスパスを指定して実行。


$ jjs -cp mariadb-java-client-1.5.6.jar:jsch-0.1.54.jar sample.js
1:test1
2:test2
3:test3
4:test4
5:test5
ok




ちゃんとsshトンネル経由でデータベースに接続できたようです。



【参考URL】

JDBCでSSHトンネルを経由してMySQLに接続する方法

HeidiSQL SSH tunnel経由でMySQL(MariaDB)に接続する

java 8 jjsスクリプト JDBCドライバを使用してデータベースに接続する

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/01/15(日) 22:01:31|
  2. Java
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

java 8 jjsスクリプト http接続とjsonデータのデコード

java8から搭載されたjjsスクリプトを試しています。
OpenJDK 8 jjsコマンドでJavaScriptを実行する

http接続を実行し、json形式のデータを取得。
取得したjsonデータをパースし、表示してみます。


サーバー側のソース



phpで適当にJSONデータを返却するプログラムを準備しておきました。

・sample.php


  1. <?php
  2. $t = [
  3.     'a' => '日本語',
  4.     'b' => 'テストです',
  5.     'c' => [
  6.         'c-1' => 'テスト1',
  7.         'c-2' => 'テスト2',
  8.         'c-3' => 'テスト3',
  9.     ],
  10. ];
  11. echo json_encode($t);




アクセスすると、こんな表示になります。

725_01.png





jjsスクリプト




java.net.URLを使用してサーバー側のリソースを取得。
JavaでのHttpClientサンプル

JSON.parseで取得したjsonな文字列をデコードします。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON



・sample.js


  1. // サーバーからデータを取得
  2. var url = new java.net.URL('http://192.168.1.103/sample.php')
  3. var con = url.openConnection()
  4. con.setRequestMethod("GET")
  5. // 取得したデータを文字列として取得
  6. var isr = new java.io.InputStreamReader(con.getInputStream(), java.nio.charset.StandardCharsets.UTF_8)
  7. var reader = new java.io.BufferedReader(isr)
  8. var json_value = ''
  9. while ((line = reader.readLine()) != null) {
  10.     json_value += line
  11. }
  12. // 文字列からオブジェクトに変換し表示
  13. var json = JSON.parse(json_value)
  14. print(json['a'])
  15. print(json['b'])
  16. print(json['c'])
  17. print(json['c']['c-1'])
  18. print(json['c']['c-2'])
  19. print(json['c']['c-3'])




ちゃんとJSON形式の文字列が連想配列に変換できたようです。


$ jjs sample.js
日本語
テストです
[object Object]
テスト1
テスト2
テスト3





【参考URL】

JavaでのHttpClientサンプル

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/01/15(日) 21:27:59|
  2. Java
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

java 8 jjsスクリプト JDBCドライバを使用してデータベースに接続する

java8から搭載されたjjsスクリプトを試しています。
OpenJDK 8 jjsコマンドでJavaScriptを実行する

JDBCドライバをロードし、データベースに接続。
データの取得が行えるか試してみます。


JDBCドライバの入手



MariaDBへの接続を試してみます。

まず、こちらを参考にJDBCドライバを入手しました。
MariaDB 10にJDBCドライバ(MariaDB Connector/J 1.1.9)で接続する

ダウンロードURLはこちら。


Download MariaDB Connector/Jをクリック

724_01.png


Download 1.5.6 Stable Now!をクリック

724_02.png


MariaDB Connector/J .jar をクリック

724_03.png


mariadb-java-client-1.5.6.jarをダウンロードしました。

724_04.png


ダウンロードしたjarファイルは、これから作成するスクリプトファイルと
同じ階層に保存しておきます。




サンプルプログラム




サーバー:192.168.1.103
ユーザー:admin
パスワード:P@ssw0rd
データベース:sample
テーブル:test



上記条件のデータベースに接続するサンプルを書いてみます。


・sample.js


  1. var url = "jdbc:mariadb://192.168.1.103:3306/sample"
  2. var con = java.sql.DriverManager.getConnection(url, 'admin', 'P@ssw0rd')
  3. var stmt = con.createStatement()
  4. var rs = stmt.executeQuery('select * from test')
  5. while(rs.next()){
  6.     print(rs.getInt('id') + ':' + rs.getString('item'))
  7. }
  8. print('ok')




jjsの引数を見ると「-cp」でクラスパスを指定できる模様。
ダウンロードした「mariadb-java-client-1.5.6.jar」を指定して実行するとエラーになります。


$ jjs -cp mariadb-java-client-1.5.6.jar sample.js
Exception in thread "main" java.lang.RuntimeException: java.sql.SQLException:
No suitable driver found for jdbc:mariadb://192.168.1.103:3306/sample




JDBCドライバは使用できないのかな?と悩んでいたところ、この記事を見つけました。
how to specify the CLASSPATH for for jjs/Nashorn javascript?


「-J-Djava.class.path=」でドライバのjarファイルを指定しろとのこと。
-Jオプションは、Java仮想マシン(JVM)に対するオプションのようです。
https://docs.oracle.com/javase/jp/8/docs/technotes/tools/windows/javac.html


オプションを変更して、再度実行。


$ jjs -J-Djava.class.path=mariadb-java-client-1.5.6.jar sample.js
1:test1
2:test2
3:test3
4:test4
5:test5
ok



ちゃんとデータベースに接続し、データの取得が行えました。






もうひとつのサンプル



せっかく-cpオプションがあるので、この指定だけでデータベースに接続できないか考えてみます。

以前、JDBCドライバについて調べた時のことが役に立ちました。
JDBC over Thriftを作成する その1(JDBCドライバの作り方)


DriverManagerを使用せず、直接対象のJDBCドライバーを生成。
コネクションを取得してやります。


  1. var prop = new java.util.Properties()
  2. prop.setProperty('user', 'admin')
  3. prop.setProperty('password', 'P@ssw0rd')
  4. var url = "jdbc:mariadb://192.168.1.103:3306/sample"
  5. var driver = new org.mariadb.jdbc.Driver()
  6. var con = driver.connect(url, prop)
  7. var stmt = con.createStatement()
  8. var rs = stmt.executeQuery('select * from test')
  9. while(rs.next()){
  10.     print(rs.getInt('id') + ':' + rs.getString('item'))
  11. }
  12. print('ok')




強引ですが、この書き方であれば-cpオプションにJDBCドライバのjarファイルを
指定することで実行可能となります。


$ jjs -cp mariadb-java-client-1.5.6.jar sample.js
1:test1
2:test2
3:test3
4:test4
5:test5
ok





【参考URL】

MariaDB 10にJDBCドライバ(MariaDB Connector/J 1.1.9)で接続する

how to specify the CLASSPATH for for jjs/Nashorn javascript?

https://docs.oracle.com/javase/jp/8/docs/technotes/tools/windows/javac.html

JDBC over Thriftを作成する その1(JDBCドライバの作り方)

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/01/15(日) 21:14:41|
  2. Java
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
次のページ