CData API ServerをAmazonLinux2の環境に構築する

2020.07.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

データアナリティクス事業本部のkobayashiです。

REST API構築ツール CData API Server を下記のエントリではWindowsの環境でAPIサーバーのインストールやドライバのインストールは行っていますが、今回はEC2のAmazonLinux2にインストールしAPIサーバーを立ててみました。

Windows版のCData API Serverのインストール方法やデータソースの設定方法は下記のエントリをご参照ください。

環境

  • Amazon Linux 2
  • CData API Server - 19.0.7362.0

CData API Serverのインストール

作業の流れは以下になります。

  1. CData API Serverのインストール
  2. 起動設定
  3. adminユーザーのパスワードの変更
  4. 外部データベースの接続設定
  5. ドライバのインストール

インストールファイルのダウンロード

Linux版はJava EdtionなのでCData社のサイトからzipファイルを入手します。

CDataAPIServer.zipがダウンロードできるのでこれをEC2に持っていきます。

インストール作業

Linux版のCData API ServerはJavaで動作するのでまずはじめにJavaをインストールする必要があります。

# yumのupdateを行う
$ sudo yum update -y

# yumリポジトリからjavaのパッケージを検索する
$ sudo yum search java

# yumリポジトリからjava-1.8.0-openjdkのパッケージをインストールする
$ sudo yum install -y java-1.8.0-openjdk.x86_64

次にCData API Serverをインストールします。

$ cd /home/ec2-user/

$ unzip CDataAPIServer.zip

すると以下のファイルが作成されます。

$ ls -l ./
-rw-rw-r-- 1 ec2-user ec2-user 85075260  2月 27 22:27 apiserver.war
-rw-rw-r-- 1 ec2-user ec2-user    18421  2月 27 22:16 readme.htm
-rw-rw-r-- 1 ec2-user ec2-user     8301  2月 27 22:16 readme.txt
-rw-rw-r-- 1 ec2-user ec2-user 94573315  2月 27 22:28 setup.jar

setup.jarがセットアップファイルなのでこれを使ってインストールします。

$ sudo java -jar setup.jar

インストールが始まるといくつか質問をされます。

ソフトウェア使用許諾契約書 

本ソフトウェア使用許諾契約書(「契約書」)はCDATA とあなたとの間に締結されます。
...
...
さらに、Oracle Corporation はOracle Instant Client ライブラリの特許においてのみ、本契約の第三者受益者です。 

(c) ADO.NET Providers およびCDATA FireDAC Components。 

press 1 to accept, 2 to reject, 3 to redisplay
> 1 <--- accept

Select target path [/opt/apiserver] <---- デフォルトで良いのでそのままEnter 

press 1 to continue, 2 to quit, 3 to redisplay
> 1 <--- accept

CData API Server 2019J (Java Edition) がシステムに正常にインストールされました。
CData API Server 2019J (Java Edition) を実行しますか?
press 1 for YES, 2 for NO, 3 to redisplay
> 1 <--- accept

以上でインストールとCData API Serverの実行が完了します。 ここまででCData API Serverが作成されログイン画面にアクセスできますが、先に起動設定やドライバもインストールします。

起動設定

CData API Serverをsystemctlコマンドで管理したいのでsystemdへ登録します。

# アプリケーションディレクトリに移動
$ cd /opt/apiserver/

# systemdに登録するスクリプトを実行
$ ./service 

# 状態を確認
$ sudo systemctl status apiserver.service 

# CData API Serverサービスを起動
$ sudo systemctl start apiserver.service 

# 自動起動設定
$ sudo systemctl enable apiserver.service

adminユーザーのパスワード変更

ブラウザからCData API Serverの設定を行うadminユーザーの設定はアプリケーションディレクトリのapiserverRealm.propertiesにありますので、最低限パスワードは変更します。

$ vi  /opt/apiserver/apiserverRealm.properties
admin:admin,cdata_admin
↓
admin:{パスワード},cdata_admin

外部データベースで各種データの管理設定

アプリケーションデータ、ユーザーデータ、ログデータはローカルのderbyで管理されていますが、こちらも外部データベースで管理したほうが何かと便利なのでローカルのMariaDBで管理する設定をします。

設定ファイルはアプリケーションディレクトリ配下のwebapp/apiserver.xmlなのでこの100行目辺りを修正します。

        <!--
          By default, APIServer will use a local derby database to store information on the transactions
          processed, as well as application and access logs. The APP_DB setting may be used to configure a database external
          to the applicaiton that will be used to store this information.
        <Call name="setInitParameter">
          <Arg>APP_DB</Arg>
          <Arg>jdbc:mysql:Server=MySQLServer;Port=3306;Database=mysql;User=user;Password=password</Arg>
        </Call>
        -->

ここで外部DBへの接続設定がコメントアウトされているのでアンコメントアウトして接続文字列を修正します。

  • APP_DB : アプリケーションデータ、ログデータの保存先
  • APP_USERS : ユーザーデータの保存先
        <!--
          By default, APIServer will use a local derby database to store information on the transactions
          processed, as well as application and access logs. The APP_DB setting may be used to configure a database external
          to the applicaiton that will be used to store this information.
         -->
        <Call name="setInitParameter">
            <Arg>APP_DB</Arg>
            <Arg>jdbc:mysql:Server=127.0.0.1;Port=3306;Database=cdata;User={ユーザー名};Password={パスワード}</Arg>
        </Call>
        <Call name="setInitParameter">
            <Arg>APP_USERS</Arg>
            <Arg>jdbc:mysql:Server=127.0.0.1;Port=3306;Database=cdata;User={ユーザー名};Password={パスワード}</Arg>
        </Call>

今回の設定ではローカルのMariaDBへ保存する設定ですがドライバをインストールし、接続文字列を適切な設定情報で書き換えれば他のデータベースでも各種データを管理できます。

ドライバのインストール

SQLite、Apache Derby、MySQL、Excel以外のデータソースを扱いたい場合にはドライバファイルのインストールが必要です。ドライバはCData社のサイト( CData Drivers )からドライバーの評価版がダウンロードできますのでこれを使用します。なおCData API ServerはJavaで動作しているのでJDBC版のドライバをダウンロードします。 今回は以下の2種類をインストールします。

  • Amazon Redshift
  • Snowflake

インストール手順は以下の通りです。

  1. ダウンロードしたドライバファイルをEC2へ送る。
  2. unzip AmazonRedshiftJDBCDriver.zipで解凍する。
  3. sudo java -jar setup.jarでインストールする。
ソフトウェア使用許諾契約書 

本ソフトウェア使用許諾契約書(「契約書」)はCDATA とあなたとの間に締結されます。
...
...
さらに、Oracle Corporation はOracle Instant Client ライブラリの特許においてのみ、本契約の第三者受益者です。 

(c) ADO.NET Providers およびCDATA FireDAC Components。 

press 1 to accept, 2 to reject, 3 to redisplay
> 1 <--- accept

Select target path [/home/ec2-user]  <---- デフォルトで良いのでそのままEnter 

ライセンスがアクティベーションされるまでお待ちください。
ライセンスファイルが正しくダウンロードされました。
インストールする機能を選択してください。

[<required>] クラスライブラリ(JARファイル) (CData JDBC Driver for Snowflakeのクラスライブラリをインストールします。)
[x] HTMLヘルプドキュメント (CData JDBC Driver for SnowflakeのWindows HTMLヘルプドキュメントをインストールします。)
input 1 to select, 0 to deselect:
> 1 <--- accept

[x] デモアプリケーション (CData JDBC Driver for Snowflakeのデモアプリケーションをインストールします。)
input 1 to select, 0 to deselect:
> 1 <--- accept

...pack selection done.
press 1 to continue, 2 to quit, 3 to redisplay
> 1 <--- accept
  1. 指定したターゲットパスにcdata.jdbc.redshift.jarcdata.jdbc.redshift.lic,cdata.jdbc.redshift.iniが作成されるのでこれらをアプリケーションディレクトリのlibディレクトリに移動する。

$ mv /home/ec2-user/cdata.jdbc.redshift.* /opt/apiserver/lib/

  1. Snowflake用のドライバも1-4の手順でインストールする。

以上でドライバファイルのインストールが終わるので後はCData API ServerにブラウザでアクセスすることでAPIが作成できます。

まとめ

CData API ServerのインストールをEC2のAamazon Linux2にインストールしました。Windows版と設定ファイルや設定内容がいくつか変わりますが大差なく構築できると思います。

最後まで読んで頂いてありがとうございました。