インストールおよび管理ガイド

イントロダクション

このインストールおよび管理ガイドには、FIWARE release 6 に対応する Business API Ecosystem verision 6.4.0 が含まれています。バグ、誤植、含まれてはいけないと思われる事柄など、このドキュメントに対するフィードバックは非常に歓迎されます。この GEi のカタログページ に表示される”担当者”の電子メールにそれらを送信してください。または、GitHub Issues で問題を作成してください。

現在のバージョンのソフトウェアは、Ubuntu 14.04, Ubuntu 15.10, Ubuntu 16.04, Debian 7, Debian 8およびCentOS 7でテストされています。これらはサポートされているオペレーティングシステムとみなされています。

インストール

要件

GEri の概要で説明したように、Business API Ecosystem は単一のソフトウェアではなく、ビジネス機能を立証するために協力し合う一連のプロジェクトです。この点で、このセクションでは、Business API Ecosystem を構成するさまざまなコンポーネントの基本的な依存関係について説明します。

Note

これらの依存関係は、ドキュメント全体にインストールされるため、この手順で手動インストールすることを意味するものではありません

TM Forum の API と RSS の要件

  • Java 8
  • Glassfish 4.1
  • MySQL 5.5

Charging Backend の要件

  • Python 2.7
  • MongoDB
  • wkhtmltopdf

Logic Proxy の要件

  • NodeJS 4.5.0+ (NPM を含む)

基本的な依存関係のインストール

Java 8, Glassfish, MySQL, Python などの基本的な依存関係は、オペレーティングシステムが提供するパッケージ管理ツールを使用してインストールできます。ただし、インストールプロセスを簡単にするために、いくつかのスクリプトが提供されています。

Note

インストールスクリプトは、システムにすでにインストールされているパッケージの一部を上書きすることがあります。したがって、共通の依存関係を持つソフトウェアを使用している場合は、手動で解決することができます。

スクリプトを使った基本的な依存関係のインストール

基本的な依存関係のインストールを自動化するために、スクリプト setup_env.sh が提供されています。このスクリプトは、ルートディレクトリにあり、Ubuntu, Debian および CentOS システムに必要なすべてのパッケージをインストールします。

さらに、このスクリプトは、Glassfish 4.1 と Node 6.9.1 がダウンロードされるディレクトリ /opt/biz-ecosystem を作成し、後でプロパティファイルに使用する /etc/default/rss ディレクトリも作成し、.bashrc ファイルに PATH 環境を設定します。

Note

インストールスクリプトは、作成したすべてのディレクトリの所有者を現在のユーザに変更します

スクリプトを実行するには、プロジェクトのルートディレクトリから次のコマンドを実行します

$ ./setup_env.sh

Note

sudo を使ってスクリプトを実行しないでください。root 権限が必要なタスクの場合は、sudo のパスワードを入力するように求められます

スクリプトの実行中に、Oracle Java 8 の利用規約を受け入れ、MySQL のルートパスワードを提供するために、何度か尋ねられます。

_images/java-terms.png _images/mysql-root.png

手動で基本依存関係をインストール

次に、スクリプトを使わずに基本的な依存関係をインストールする方法を説明します。いくつかのコマンドは root として実行する必要があることに注意してください。

APIs の依存関係

Java 8 Debian/Ubuntu

Debian または Ubuntu システムに Java 8 をインストールするには、webupd8team リポジトリをインクルードする必要があります。Ubuntuシステムでは、これは以下のコマンドで直接行うことができます

$ sudo add-apt-repository ppa:webupd8team/java

Debianシステムを使用している場合は、以下のコマンドを実行する必要があります

$ sudo echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list
$ sudo echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886

Java 8 は、次のコマンドを使用してインストールできます

$ sudo apt-get update
$ sudo apt-get install -y oracle-java8-installer
$ sudo apt-get install -y oracle-java8-set-default

Java 8 CentOS 7

CentOS 7 システムでは、Java 8 をインストールするにはパッケージを公式サイトからダウンロードする必要があります

$ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz"
$ tar xzf jdk-8u102-linux-x64.tar.gz

そして、Java は alternatives を使用してインストールできます

$ sudo alternatives --install /usr/bin/java java /opt/biz-ecosystem/jdk1.8.0_102/bin/java 2
$ sudo alternatives --config java

$ sudo alternatives --install /usr/bin/jar jar /opt/biz-ecosystem/jdk1.8.0_102/bin/jar 2
$ sudo alternatives --install /usr/bin/javac javac /opt/biz-ecosystem/jdk1.8.0_102/bin/javac 2
$ sudo alternatives --set jar /opt/biz-ecosystem/jdk1.8.0_102/bin/jar
$ sudo alternatives --set javac /opt/biz-ecosystem/jdk1.8.0_102/bin/javac

MySQL and Maven Debian/Ubuntu MySQL と Maven Debian/Ubuntu Java がインストールされると、次のステップは MySQL と Maven をインストールします

$ sudo apt-get install -y mysql-server mysql-client
$ sudo apt-get install -y maven

MySQL and Maven CentOS 7

CentOS に MySQL をインストールするには、インストールする前に関連するリポジトリを含める必要があります

$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
$ sudo yum update

$ sudo yum install -y mysql-community-server

そして、Mavenをインストールするためには

$ sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
$ sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
$ sudo yum install -y apache-maven

Glassfish 次のステップは、Glassfish をダウンロードして解凍することです

$ wget http://download.java.net/glassfish/4.1/release/glassfish-4.1.zip
$ unzip glassfish-4.1.zip

最後に、Glassfish用のMySQLコネクタをダウンロードし、それを Glassfish の lib ディレクトリに含める必要があります

$ wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.39.tar.gz

$ gunzip mysql-connector-java-5.1.39.tar.gz
$ tar -xvf mysql-connector-java-5.1.39.tar

$ cp mysql-connector-java-5.1.39/mysql-connector-java-5.1.39-bin.jar glassfish4/glassfish/lib
Charging Backend の依存関係

Python 2.7 Debian/Ubuntu

Debian/Ubuntu ディストリビューションに Python 2.7 と Pip をインストールするには、以下のコマンドを実行します

$ sudo apt-get install -y python python-pip

Python 2.7 CentOS

Python 2.7 は、デフォルトで CentOS 7 に含まれています。Pip をインストールするには、EPEL リポジトリを含める必要があります。これらのすべては以下のコマンドを実行することができます

$ sudo rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
$ sudo yum -y update
$ sudo yum install -y python-pip

MongoDB Debian/Ubuntu

Debian/Ubuntu ディストリビューションに MongoDB をインストールするには、以下のコマンドを実行します

$ sudo apt-get install -y mongodb

MongoDB CentOS 7

CentOS に MongoDB をインストールするには、リポジトリを最初に組み込む必要があります。MongoDB は以下のコマンドを実行してインストールすることができます

$ sudo echo "[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1" > /etc/yum.repos.d/mongodb.repo

$ sudo yum install -y mongodb-org

Wkhtmltopdf Debian/Ubuntu

Debian と Ubuntu では Wkhtmltopdf はパッケージに含まれているので、次のコマンドで直接インストールすることができます

$ sudo apt-get install -y wkhtmltopdf

Wkhtmltopdf CentOS 7

CentOS では、Wkhtmltopdf RPM パッケージをダウンロードしてインストールする必要があります

$ wget http://download.gna.org/wkhtmltopdf/0.12/0.12.1/wkhtmltox-0.12.1_linux-centos7-amd64.rpm
$ sudo rpm -ivh wkhtmltox-0.12.1_linux-centos7-amd64.rpm
Logic Proxy の依存関係

Node と NPM をインストールするには、公式サイトからバイナリをダウンロードし、解凍する必要があります

$ wget https://nodejs.org/dist/v6.9.1/node-v6.9.1-linux-x64.tar.xz
$ tar -xvf node-v6.9.1-linux-x64.tar.xz

Business API Ecosystem のインストール

以前に述べたように、Business API Ecosystem は、別々にインストールする必要のある異なるシステムで構成されています。このプロセスを簡単にするために、インストールを自動化するために使用できるスクリプト install.py が作成されています。

スクリプトを使用した Business API Ecosystem のインストール

スクリプト install.py は、Business API Ecosystem プロジェクトのルートにあります。このスクリプトは、ソフトウェアのインストールを自動化する機能を提供します。具体的には、すべての API とコンポーネントをダウンロードし、API をコンパイルしてデプロイし、Python とノードライブラリをインストールします。

このスクリプトは動作する Python3 に依存しています。setup_env.sh スクリプトを使用した場合、Python 3 はすでにインストールされています。それ以外の場合は、次のコマンドを使用して Python 3 をインストールできます :

Debian/Ubuntu

$ sudo apt-get install -y python3
$ sudo apt-get install -y python3-pip

CentOS 7

$ sudo yum -y install scl-utils
$ sudo rpm -Uvh https://www.softwarecollections.org/en/scls/rhscl/python33/epel-7-x86_64/download/rhscl-python33-epel-7-x86_64.noarch.rpm
$ sudo yum -y install python33

さらに、install.py は Glassfish と Node のバイナリを PATH に含めるよう指定しており、スクリプトを使用してユーザがアクセスできる必要があります。これは以下のコマンドで行うことができます。これらのコマンドは、それら両方が /opt /biz-ecosystem にインストールされていることを前提としています

$ export PATH=$PATH:/opt/biz-ecosystem/glassfish4/glassfish/bin
$ export PATH=$PATH:/opt/biz-ecosystem/node-6.9.1-linux-x64/bin

$ sudo chown -R <your_user>:<your_user> /opt/biz-ecosystem

setup_env.sh を使用した場合、Glassfish のインストールディレクトリはすでにユーザに属しています。さらに、export PATH コマンドが .bashrc に組み込まれているため、PATH に Node およびGlassfish をインストールするには、次のコマンドを実行します :

$ source ~/.bashrc

さらに、install.py は、Glassfish, MySQL および MongoDB の起動と実行を要求します。

Debian/Ubuntu

$ asadmin start-domain
$ sudo service mysql restart
$ sudo service mongodb restart

CentOS 7

$ asadmin start-domain
$ sudo systemctl start mysqld
$ sudo systemctl start mongod

最後に、RSS API のデプロイメント中に、スクリプトはプロパティファイルをデフォルトの RSS プロパティディレクトリに保存します。setup_env.sh を使用した場合、このディレクトリはすでに存在しています。それ以外の場合は、/etc/default/rss ディレクトリを手動で作成する 必要があります。作成するには root 権限が必要です。さらに、このディレクトリは、スクリプトを実行しているユーザがアクセスできる必要があります。それを行うには

$ sudo mkdir /etc/default/rss
$ sudo chown <your_user>:<your_user> /etc/default/rss

スクリプト install.py は、さまざまなデータベースと接続プールおよびリソースを作成します。この点で、スクリプトの実行後、すべての API は既に設定されています。スクリプトを変更し、DBUSER, DBPWD, DBHOST および DBPORT を更新することにより、データベース設定を指定できます。デフォルトでは、次の構成が含まれています。

DBUSER = "root"
DBPWD = "toor"
DBHOST = "localhost"
DBPORT = 3306

Business API Ecosystem を完全にインストールするには、次のコマンドを実行します

$ ./install.py all

all オプションに加えて、install.py にはインストールプロセスの一部を実行できるオプションがいくつか用意されています。そのため、より詳細な制御が可能です。具体的には、スクリプトには次のオプションがあります :

  • clone: GitHub から Business API Ecosystem のさまざまなコンポーネントをダウンロード
  • maven: Maven を使用してダウンロードした APIs をコンパイル
  • tables: MySQL に必要なデータベースを作成
  • persistence: さまざまな APIs の persistence.xml ファイルを構築
  • pools: Glassfish でデータベースプールを作成
  • resources: Glassfish でデータベースリソースを作成
  • redeploy: Glassfish で APIs と RSS war ファイルをデプロイ
  • proxy: proxy Node libs をインストール
  • charging: charging Python libs をインストール

Business API Ecosystemを手動でインストール

TM Forum APIs のインストール

Business API Ecosystem で使用される TM Forum APIs のさまざまなリファレンス実装は、GitHub で利用できます :

それらのすべてのインストールは似ています。最初のステップは、リポジトリを複製し、正しいリリースに移動することです

$ git clone https://github.com/FIWARE-TMForum/DSPRODUCTCATALOG2.git
$ cd DSPRODUCTCATALOG2
$ git checkout v6.4.0

ソフトウェアがダウンロードされたら、データベースへの接続を作成する必要があります。そのためには、最初に src/main/resources/META-INF/persistence.xml を次のように編集します :

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="DSProductCatalogPU" transaction-type="JTA">
        <jta-data-source>jdbc/pcatv2</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
        </properties>
    </persistence-unit>
</persistence>

タグ jta-data-source には、各 API で一意である必要があることを考慮して、データベース接続リソースに必要な名前を指定する必要があります。

次のステップは、APIのためのデータベースを作成することです。

$ mysql-u <user> -p<passwd> "CREATE DATABASE IF NOT EXISTS <database>"

Note

以前のコマンドには、独自の資格情報と選択したデータベース名を指定する必要があります

データベースが作成されたら、次に Glassfish に接続プールを作成します。これを行うには、次のコマンドを使用します:

$ asadmin create-jdbc-connection-pool --restype java.sql.Driver --driverclassname com.mysql.jdbc.Driver --property user=<user>:password=<passwd>:URL=jdbc:mysql://<host>:<port>/<database> <poolname>

Note

あなた自身のデータベース証明書、データベースホスト、データベースポート、以前作成したデータベース名、プール名を提供する必要があります

データベース接続を作成する最後のステップは、接続リソースを作成することです。 これを行うには、次のコマンドを実行します :

$ asadmin create-jdbc-resource --connectionpoolid <poolname> <jndiname>

Note

以前作成したプールの名前とリソースの名前を指定する必要があります。この名前は、APIの persistence.xml ファイルの jta-data-source タグに含まれているものと同じでなければなりません。

データベース接続が作成されると、次のステップは Maven でAPI ソースをコンパイルすることです

$ mvn install

最後のステップは、生成された war ファイルを Glassfish にデプロイすることです

$ asadmin deploy --contextroot <root> --name <root> target/<WAR.war>

Note

API に必要なコンテキストルート、その名前、および war ファイルへのパスを指定する必要があります

RSS のインストール

RSS ソースは GitHub にあります

RSS コンポーネントをインストールする最初の手順は、ダウンロードして正しいリリースに移動することです

$ git clone https://github.com/FIWARE-TMForum/business-ecosystem-rss.git
$ cd business-ecosystem-rss
$ git checkout v6.4.0

次に、database.propertiesoauth.properties ファイルをデフォルトの場所の /etc/default/rss にコピーします

$ sudo mkdir /etc/default/rss
$ sudo chown <your_user>:<your_user> /etc/default/rss
$ cp properties/database.properties /etc/default/rss/database.properties
$ cp properties/oauth.properties /etc/default/rss/ouath.properties

Note

rss ディレクトリの所有者を変更するときにあなたのユーザを含める必要があります

properties ファイルがコピーされたら、適切な構成パラメーターを提供するために properties ファイルを編集する必要があります :

database.properties

database.url=jdbc:mysql://localhost:3306/RSS
database.username=root
database.password=root
database.driverClassName=com.mysql.jdbc.Driver

oauth.properties

config.grantedRole=Provider
config.sellerRole=Seller
config.aggregatorRole=aggregator

Note

設定ファイルに含まれるさまざまなパラメータについては、設定セクションで詳しく説明しています

properties ファイルが編集されたら、次のステップは Maven でソースをコンパイルすることです

$ mvn install

最終ステップは、生成された war ファイルを Glassfish にデプロイすることです

$ asadmin deploy --contextroot DSRevenueSharing --name DSRevenueSharing fiware-rss/target/DSRevenueSharing.war
Charging Backend のインストール

Charging Backend のソースは GitHub にあります

Charging Backend コンポーネントをインストールするための最初のステップは、ダウンロードして正しいリリースに移動することです

$ git clone https://github.com/FIWARE-TMForum/business-ecosystem-charging-backend.git
$ cd business-ecosystem-charging-backend
$ git checkout v6.4.0

コードをダウンロードしたら、python 依存関係をインストールするための virtualenv を作成することを推奨します。これは必須ではありません

$ virtualenv virtenv
$ source virtenv/bin/activate

Python の libs をインストールするには、python-dep-install.sh スクリプトを実行します

$ ./python-dep-install.sh

Note

virtualenv を作成して起動していない場合は、sudo を使ってスクリプトを実行する必要があります

Logic Proxy のインストール

Logic Proxyのソースは、GitHub にあります

Logic Proxy コンポーネントをインストールするための最初の手順は、Logic Proxy コンポーネントをダウンロードし、正しいリリースに移動することです

$ git clone https://github.com/FIWARE-TMForum/business-ecosystem-logic-proxy.git
$ cd business-ecosystem-logic-proxy
$ git checkout v6.4.0

コードがダウンロードされると、次のように、提供されたスクリプトを使用してノードの依存関係をインストールすることができます

$ ./install.sh

5.4.1 からのアップグレード

Business API Ecosystem version 5.4.1 のインストールをバージョン 6.4.0 にアップグレードするために、新しいコマンドが install.py スクリプトに組み込まれています。このコマンドは、新しいコンポーネントソフトウェアをダウンロードし、更新し、さまざまなデータベースを移行するので、ソフトウェアを使用できるようになります。

Note

ソフトウェアをアップグレードする前に、さまざまなデータベースのバックアップを作成することを強くお勧めします

Business API Ecosystem をアップグレードするための最初のステップは、インストールスクリプトを更新するためにメインリポジトリの新しいバージョンをダウンロードすることです

cd Business-API-Ecosystem
git fetch
git checkout v6.4.0
git pull origin v6.4.0

新しいバージョンの install.py には、アップグレードコマンドを実行するために手動で解決しなければならない新しい依存関係 (PyMSQL) があります

$ pip3 install pymysql

メインリポジトリがアップグレードされると、次のステップではソフトウェアのアップグレードに付属のスクリプトを使用します

$ ./install.py upgrade

このコマンドは、設定パラメータを変更しません。それにもかかわらず、新しい設定が含まれている場合は、 Configuration を確認する必要があります。

upgrade コマンドは、アップグレードを管理するために install.py 内に組み込まれた一連の新しいコマンドを使用します。特に :

  • download: Business API Ecosystem のさまざまなコンポーネント用の新しいソフトウェアをダウンロード
  • dump: /tmp 内にさまざまな MySQL データベースのダンプを作成
  • migrate: データベースの内容を v5.4.1 から v6.4.0 に移行

設定

このステップでは、Business API Ecosystem のさまざまなコンポーネントがインストールされます。TMForum API と RSS の場合、このインストールプロセスではすでにデプロイメント前にデータベース接続を設定する必要があるため、デプロイメントはすでに設定されています。それにもかかわらず、このセクションでは、RSS プロパティファイルのさまざまな設定の機能について説明します。

RSS の設定

RSS の設定は、/etc/default/rss にある2つのファイルに含まれています。database.properties ファイルには、デフォルトで次のフィールドが含まれています:

database.url=jdbc:mysql://localhost:3306/RSS
database.username=root
database.password=root
database.driverClassName=com.mysql.jdbc.Driver

このファイルには、データベースに接続するために必要な構成が含まれています。

  • database.url: データベースへの接続に使用される URL。この URL には、使用する具体的なデータベースだけでなく、データベースのホストとポートも含まれます
  • database.username: データベースに接続するために使用するユーザ
  • database.password: データベースユーザのパスワード
  • database.driverClassName: データベースのドライバクラス。デフォルトで MySQL

oauth.properties ファイルには、デフォルトで次のフィールドが含まれています。変更しないことをお勧めします

config.grantedRole=Provider
config.sellerRole=Seller
config.aggregatorRole=aggregator

このファイルには、RSS によって使用されるロール名が含まれています。ロール名はidmに登録されています。

  • config.grantedRole: 管理者権限を持つユーザの IDM 内のロール
  • config.sellerRole: セラー権限を持つユーザの IDM 内のロール
  • config.aggregatorRole: ストア・インスタンスの管理者であるユーザのロール。Business API Ecosystem のコンテキストでは、ストア・インスタンスは1つしかないので、このフラグを無視しても問題ありません

Charging Backend の設定

Charging Backend は、作業中にさまざまな API にいくつかのオブジェクトと接続を作成します。そのため、最初に、 services_settings.py ファイルを変更して、Business API Ecosystem コンポーネントのさまざまな URLs を設定します:

SITE = 'http://localhost:8004/'
LOCAL_SITE = 'http://localhost:8006/'

CATALOG = 'http://localhost:8080/DSProductCatalog'
INVENTORY = 'http://localhost:8080/DSProductInventory'
ORDERING = 'http://localhost:8080/DSProductOrdering'
BILLING = 'http://localhost:8080/DSBillingManagement'
RSS = 'http://localhost:8080/DSRevenueSharing'
USAGE = 'http://localhost:8080/DSUsageManagement'
AUTHORIZE_SERVICE = 'http://localhost:8004/authorizeService/apiKeys'

この設定は、charging backend によってアクセスされるさまざまな API を示します。特に :

  • SITE: Hrefの作成に使用する完全な Business API Ecosystem の外部 URL
  • LOCAL_SITE: Charging Backend が実行される URL
  • CATALOG: catalog API のパスを含む URL
  • INVENTORY: inventory API のパスを含む URL
  • ORDERING: ordering API のパスを含む URL
  • BILLING: billing API のパスを含む URL
  • RSS: RSSのパスを含む URL
  • USAGE: Usage APIのパスを含む URL
  • AUTHORIZE_SERVICE: authorization service の完全な URL。このサービスは、logic proxy によって提供され、使用情報を提供する際に accounting systems によって使用される API キーを生成するために使用されます。

サービスが構成されたら、次のステップはデータベースを構成することです。この場合、charging backend は MongoDB を使用し、その接続は settings.py ファイルの DATABASES 設定を変更するように設定できます

DATABASES = {
    'default': {
        'ENGINE': 'django_mongodb_engine',
        'NAME': 'wstore_db',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
        'TEST_NAME': 'test_database',
    }
}

この設定には、次のフィールドが含まれます :

  • ENGINE: データベースエンジン、django_mongodb_engine に固定する必要があります
  • NAME: 使用するデータベースの名前
  • USER: データベースのユーザ。空の場合、ソフトウェアは認証されていない接続を作成します
  • PASSWORD: データベースユーザのパスワード。空の場合、ソフトウェアは認証されていない接続を作成します
  • HOST: データベースのホスト。空の場合は、デフォルトの localhost ホスト
  • PORT: データベースのポート。空の場合は、デフォルトの 27017 ポートを使用します
  • TEST_NAME: テスト実行時に使用されるデータベースの名前

データベース接続が設定されると、次のステップは settings.py を更新することによって使用される IdM ロールの名前を設定することです

ADMIN_ROLE = 'provider'
PROVIDER_ROLE = 'seller'
CUSTOMER_ROLE = 'customer'

この設定には、次の値が含まれます :

  • ADMIN_ROLE: システム管理者の IDM ロール
  • PROVIDER_ROLE: 販売者権限を持つユーザの IDM ロール
  • CUSTOMER_ROLE: 顧客特権を持つユーザの IDM ロール

Charging Backend コンポーネントは、料金が請求されたとき、または支払いを受け取ったときに、ユーザに電子メール通知を送信できます。このようにして、settings.py ファイルに以下のフィールドを変更して電子メール設定を行うことができます :

WSTOREMAILUSER = 'email_user'
WSTOREMAIL = 'wstore_email'
WSTOREMAILPASS = 'wstore_email_passwd'
SMTPSERVER = 'wstore_smtp_server'
SMTPPORT = 587

この設定には、次の値が含まれます :

  • WSTOREMAILUSER: 電子メールサーバで認証に使用されるユーザ名
  • WSTOREMAIL: 通知の送信者として使用される電子メール
  • WSTOREMAILPASS: 電子メールサーバで認証するためのユーザのパスワード
  • SMTPSERVER: 電子メールサーバホスト
  • SMTPPORT: メールサーバポート

Note

電子メール設定はオプションです。ただし、WSTOREMAIL フィールドは、RSS 構成で内部的に使用されるため、提供する必要があります

さらに、チャージバックエンドは、顧客に料金を請求し、プロバイダに支払うコンポーネントです。この目的のために PayPal を使用します。PayPal を設定するには、まず settings.py ファイルで PAYMENT_METHODpaypal に設定します

PAYMENT_METHOD = 'paypal'

その後、src/wstore/charging_engine/payment_client/paypal_client.py ファイルを更新して PayPal アプリケーションの資格情報を提供する必要があります

PAYPAL_CLIENT_ID = ''
PAYPAL_CLIENT_SECRET = ''
MODE = 'sandbox'  # sandbox or live

この設定には、次の値が含まれます :

  • PAYPAL_CLIENT_ID: PayPal が提供するアプリケーションの Id
  • PAYPAL_CLIENT_SECRET: PayPal が提供するアプリケーションの Secret
  • MODE: 接続のモード。システムをテストするために PayPal sandbox を使用している場合、sandbox にすることができます。それとも本当の PayPal の APIs を使用している場合、live です

さらに、Charging Backend は、購入したサービスをアクティブ化するコンポーネントです。この点で、Charging Backend は証明書を使用して取得通知に署名する可能性があるため、外部システムがその要求を行うバックエンドであることを検証できます。この機能を使用するには、settings.py ファイルの次の設定でパスを指定することで、証明書と秘密鍵を使用するように設定する必要があります

NOTIF_CERT_FILE = None
NOTIF_CERT_KEY_FILE = None

Charging Backend は Cron タスクを使用して、定期サブスクリプション(recurring)と使用サブスクリプション(usgae) のステータスをチェックし、売り手に支払います。このタスクの周期性は、標準の Cron 形式を使って settings.py の CRONJOBS 設定を使って設定することができます

CRONJOBS = [
    ('0 5 * * *', 'django.core.management.call_command', ['pending_charges_daemon']),
    ('0 6 * * *', 'django.core.management.call_command', ['resend_cdrs']),
    ('0 4 * * *', 'django.core.management.call_command', ['resend_upgrade']
]

Cron タスクが構成されたら、次のコマンドを使用して Cron タスクに組み込む必要があります :

$ ./manage.py crontab add

次のコマンドを使用して、現在のジョブを表示したり、ジョブを削除したりすることもできます :

$ ./manage.py crontab show

$ ./manage.py crontab remove

Charging Backend を実行するように Apache を設定

Charging Backend は、さまざまな方法でデプロイできる Django App です。このインストールガイドには、Django runserver コマンドを使用する方法(Charging Backend の実行を参照)、または Apache サーバを使用してデプロイする方法の2つのメカニズムがあります。このセクションでは、Apache と後で行うチャージバックエンドを設定する方法について説明します。

最初のステップは、Apache と mod-wsgi をインストールすることです。Ubuntu/Debianの場合:

$ sudo apt-get install apache2 libapache2-mod-wsgi

または CentOS の場合 :

$ sudo yum install httpd mod_wsgi

次のステップは、Charging Backend で提供されている src/wsgi.py ファイルを作成することです

import os
import sys

path = 'charging_path/src'
if path not in sys.path:
    sys.path.insert(0, path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

virtualenv を使用している場合は、そのアクティベーションを wsgi.py ファイルに含める必要があります。そのため、次のようになります:

import os
import sys
import site

site.addsitedir('virtualenv_path/local/lib/python2.7/site-packages')
path = 'charging_path/src'
if path not in sys.path:
    sys.path.insert(0, path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

# Activate your virtual env
activate_env=os.path.expanduser('virtualenv_path/bin/activate_this.py')
execfile(activate_env, dict(__file__=activate_env))

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Note

Charge Backend と virtualenv パスをそれぞれ指し示す必要がある charging_pathvirtualenv_path に特に注意してください

Charging Backend で WSGI が設定されると、次のステップは Apache に vitualhost を作成することです。これを行うには、Apache 関連ディレクトリ(Ubuntu/Debian システムの /etc/apache2/sites-available/、または CentOS システムの /etc/httpd/conf.d にある)に新しいサイト設定ファイルを作成します。次の内容を入力します:

<VirtualHost *:8006>
    WSGIDaemonProcess char_process
    WSGIScriptAlias / charging_path/src/wsgi.py
    WSGIProcessGroup char_process
    WSGIPassAuthorization On

    WSGIApplicationGroup %{GLOBAL}
</VirtualHost>

Note

Charge Backend パスを指し示す必要がある charging_path に特に注意してください

使用している Apache のバージョンによっては、チャージバックエンドが仮想ホストの設定で展開されているディレクトリに、明示的にアクセスを許可する必要があるかもしれません。そうするために、virtualhost に以下の行を追加してください :

Apache version < 2.4

<Directory charging_path/src>
    Order deny,allow
    Allow from all
</Directory>

Apache version 2.4+

<Directory charging_path/src>
    Require all granted
</Directory>

新しい仮想ホスト設定を組み込んだら、次のステップでは、選択したポート(この例では8006)で待機するように Apache を設定します。これを行うには、Ubuntu/Debianの /etc/apache2/ports.conf や CentOS の /etc/httpd/conf/httpd.conf を編集し、次の行を追加してください :

Listen 8006

次に、Ubuntu/Debian システムで、設定ファイルを sites-enabled ディレクトリにリンクしてサイトを有効にします :

ln -s ../sites-available/001-charging.conf ./sites-enabled/001-charging.conf

サイトを有効にしたら、Apache を再起動します。Ubuntu/Debian の場合

$ sudo service apache2 restart

または CentOS の場合

$ sudo apachectl restart

Note

変更中のバックエンドがインストールされているディレクトリに、Apache ユーザがアクセスできることを確認します(Ubuntu/Debian の www-data, CentOS の apache

Logic Proxy の設定

プロキシを設定するための最初のステップは、config.js.templateconfig.js にコピーして設定ファイルを作成することです

$ cp config.js.template config.js

設定する最初の設定は、プロキシを実行するポートとホストです。この設定は config.js にあります

config.port = 80;
config.host = 'localhost';

HTTPS でプロキシを実行する場合は、config.https の設定を更新できます

config.https = {
    enabled: false,
    certFile: 'cert/cert.crt',
    keyFile: 'cert/key.key',
    caFile: 'cert/ca.crt',
    port: 443
};

この場合は、enabled を true に設定し、証明書(certFile)、秘密鍵(keyFile)およびCA証明書(caFile)のパスを指定する必要があります。

次に、システムの URL の一部を変更することができます。具体的には、API のプレフィックス、ポータルのプレフィックス、ログインおよびログアウト URLS を変更することができます

config.proxyPrefix = '';
config.portalPrefix = '';
config.logInPath = '/login';
config.logOutPath = '/logOut';

さらに、その名前を付けることによって使用されるテーマを構成することも可能です。テーマの設定に関する詳細は、 テーマの設定 のセクションで提供されています

config.theme = '';

さらに、プロキシは、Business API Ecosystem のフロントエンドとして機能するコンポーネントで、Web ポータルを提供し、さまざまな APIs にアクセスするためのエンドポイントを提供します。この点で、プロキシは FIWARE IDM の OAUth2 構成を持つ必要があります。

OAUth2 構成を提供するには、アプリケーションを FIWARE IdM のインスタンス、たとえば、https://account.lab.fiware.org に作成し、次の情報を提供する必要があります :

  • URL: http|https://<proxy_host>:<proxy_port>
  • Callback URL: http|https://<PROXY_HOST>:<PROXY_PORT>/auth/fiware/callback
  • Create a role Seller

アプリケーションが IdM で作成されると、次の設定を変更して OAuth2 設定を提供することができます

config.oauth2 = {
    'server': 'https://account.lab.fiware.org',
    'clientID': '<client_id>',
    'clientSecret': '<client_secret>',
    'callbackURL': 'http://<proxy_host>:<proxy_port>/auth/fiware/callback',
    'roles': {
        'admin': 'provider',
        'customer': 'customer',
        'seller': 'seller'
    }
};

この設定では、使用しているIdMのインスタンス (server)、IdM によって与えられたクライアントID (clientID)、IdM によって与えられたクライアント・シークレット (clientSecret)、および IdMで構成されたコールバック URL (callbackURL) を含めることが必要です。

さらに、プロキシは MongoDB を使用して、ユーザの現在のショッピングカートなどの情報を維持します。次の設定を更新して MongoDB への接続を設定することができます :

config.mongoDb = {
    server: 'localhost',
    port: 27017,
    user: '',
    password: '',
    db: 'belp'
};

この設定では、ホスト(server)、ポート(port)、データベースユーザ(user)、データベースユーザパスワード(password)、およびデータベース名(db)を構成できます。

すでに述べたように、プロキシはさまざまな APIs にアクセスするためのエンドポイントとして機能するコンポーネントです。このように、プロキシは、さまざまなリクエストをリダイレクトするために、その URL を知る必要があります。このエンドポイントは、次の設定を使用して構成できます

config.endpoints = {
    'catalog': {
        'path': 'DSProductCatalog',
        'host': 'localhost'
        'port': '8080',
        'appSsl': false
    },
    'ordering': {
        'path': 'DSProductOrdering',
        'host': 'localhost'
        'port': '8080',
        'appSsl': false
    },

    ...

config.endpoints の設定には、path, host, prot, API が SSL を使用しているかどうかなど、各 APIs の特定の構成が含まれています。

Note

設定ファイルに含まれるデフォルトの設定はインストールスクリプトで使用されるものなので、スクリプトを使用して Business API Ecossytem をインストールした場合は、これらのフィールドを変更する必要はありません

最後に、実行中にシステムの動作を設定できる2つのフィールドがあります。一方は、config.revenueModel で、 Business API Ecossytem がすべてのトランザクションで取得するデフォルトの割合を設定できます。もう一方は、config.usageChartURL で、Web ポータルの顧客に製品使用状況を表示するために使用されるチャートの URL を設定できます。

最終ステップ

メディアとインデックス

Business API Ecosystem では、いくつかのプロダクト添付や販売するアセットをアップロードすることができます。これらのアセットは、Charging Backend によってアップロードされ、生成されたPDF請求書と一緒にファイルシステムに保存されます。

この点では、src/media, src/media/bills、および src/media/assets ディレクトリは、Charging Backend 内に存在しなければならず、Charging Backend を実行するユーザが書き込み可能でなければなりません

$ mkdir src/media
$ mkdir src/media/bills
$ mkdir src/media/assets
$ chown -R <your_user>:<your_user> src/media

さらに、Business API Ecosystem は、効率とページネーションのためにインデックスを使用します。これに関して、ディレクトリ indexes は Logic Proxy ディレクトリ内に存在しなければならず、それを実行するユーザによって書込み可能でなけれなりません

$ mkdir indexes
$ chown -R <your_user>:<your_user> indexes

Logic Proxy で提供されている fill_indexes.js スクリプトを使用して、いつでもインデックスディレクトリに追加できます

$ node fill_indexes.js

テーマの設定

Business API Ecosystem は、システムのWebポータルをカスタマイズするため、テーマ作成の基本的なメカニズムを提供します。テーマには、Logic proxy の public/resources または views ディレクトリにあるデフォルトのポータルファイルを上書きできる一連のファイルが含まれています。これを行うために、テーマはディレクトリ構造をマップし、オーバーライドされるデフォルトのものと同じ名前のファイルをインクルードします。

Logic Proxy には、プロジェクトのルートにある themes ディレクトリに格納する必要がある複数のテーマを含めることができます。

テーマを有効にするには、config.theme 設定が Logic Proxy の config.js ファイル内に用意されています。テーマは、この設定でテーマディレクトリの名前を指定すると有効になります

config.theme = 'dark-theme';

Note

config.theme を空の文字列に設定すると、Business API Ecosystem はデフォルトのテーマを使用します

テーマの使用を開始するには、次のコマンドを実行する必要があります :

$ node collect_static.js

このコマンドは、テーマファイルとデフォルトファイルを Logic Proxy がポータルの静的ファイルを取得するために使用する 静的 ディレクトリにマージします。

プロダクションの有効化

Business API Ecosystem のデフォルトインストールでは、さまざまなコンポーネントが debug モードでデプロイされます。これは開発とテストに役立ちますが、本番環境では適切ではありません。

プロダクション・モードを有効にすると、さまざまなコンポーネントがリクエストとビューのキャッシュを開始し、JavaScript ファイルを最小限に抑えることができます。

プロダクション・モードを有効にするには、最初に、Logic Proxy を含むマシンで環境変数 NODE_ENVproduction に設定します

$ export NODE_ENV=production

その後、JavaScript ファイルを圧縮するためにスタティック・ファイルを収集する必要があります

$ node collect_static.js

最後に、Charging Backend の DEBUG 設定を False に変更します

DEBUG=False

Business API Ecosystemの実行

API と RSS の実行

TM Forum API と RSS はともに Glassfish に導入されています。この点に関して、それらを実行するための唯一のステップは、Glassfish を開始することです

$ asadmin start-domain

Charging Backend の実行

チャージバックエンドは起動時にいくつかのオブジェクトと接続を作成します。この方法で、Glassfish APIs を起動する前に実行しておく必要があります。

Django runserver の使用

チャージバックエンドは、次のようにDjangoで提供される runserver コマンドを使用して開始できます

$ ./manage.py runserver 127.0.0.1:<charging_port>

またはバックグラウンドで

$ nohup ./manage.py runserver 127.0.0.1:<charging_port> &

Note

バックエンドのインストール時に virtualenv を作成した場合、またはインストールスクリプトを使用した場合は、仮想バックアップを開始する前に virtualenv をアクティブにする必要があります

Apache の使用

Apache に charging backend をデプロイしている場合、Debian/Ubuntu システムで次のコマンドを使用して charging backend を開始することができます

$ sudo service apache2 start

またはCentOSシステムでは

$ sudo apachectl start

Logic Proxy の実行

Logic Proxy は、次のように Node を使用して起動できます

$ node server.js

または、バックグラウンドで起動したい場合は :

$ nohup node server.js &

Asset Plugins のインストール

Business API Ecosystem は、さまざまな種類のデジタル・アセットの収益化をサポートすることを目的としています。収益化したいさまざまな種類のアセットは多様であり、それらの間で潜在的に非常に異なる可能性があります。

さらに、アセットの種類ごとに、異なる検証と起動メカニズムが必要になります。たとえば、アセットが CKAN データセットである場合、プロバイダがデータセットの所有者であることを検証する必要があります。さらに、顧客がデータセットを取得する場合、新しいユーザがアクセスしていることを CKAN に通知する必要があります。

Business API Ecosystem で収益化できるさまざまな種類のアセットの大きな違いは、コアソフトウェアの一部としてその検証と特性を含めることができないことです。このため、アセットタイプのすべての特性が Business API Ecosystem にロードできるプラグインで実装されるプラグインベースのソリューションが作成されました。

Asset Plugins を含めるには、Charging Backend で次のコマンドを実行します :

$ ./manage.py loadplugin ckandataset.zip

次のコマンドで既存のプラグインを一覧表示することができます :

$ ./manage.py listplugins

Asset Plugins を削除するには、listplugins コマンドで指定されたプラグイン ID を指定して次のコマンドを実行します

$ ./manage.py removeplugin ckan-dataset

Note

プラグインとその内部構造を作成する方法の詳細については、Business API Ecosystem プログラマーガイドを参照してください

執筆時点では、以下のプラグインが利用できます:

  • Basic File : ファイルをデジタルアセットとして提供してプロダクトを作成できます。検証も処理も行われません
  • Basic URL : URL をデジタルアセットとして提供することでプロダクトを作成できます。検証も処理も行われません
  • WireCloud Component : ウィジェット、オペレータ、マッシュアップを含む WireCloud コンポーネントの収益化を可能にします
  • Accountable Service : Orion Context Broker のクエリを含む Accounting Proxy によって保護されたサービスの収益化を可能にします
  • CKAN Dataset : CKANデータセットの収益化を可能にします

サニティチェックの手順

サニティチェック手順は、システム管理者がインストールのテスト準備が整ったことを確認するための手順です。したがって、単体テスト、統合テスト、ユーザ検証に進む前に、明白なまたは基本的な誤動作が修正されていることを確認するための予備テストセットです。

エンド・ツー・エンドのテスト

プロセスを開始する前に、次の情報が必要であることに注意してください :

  • プロキシが実行されているホストとポート
  • Seller ロールを持つ有効な IdM ユーザ

Business API Ecosystem が実行されているかどうかを確認するには、次の手順に従います :

  1. ブラウザを開き、Business API Ecosystem に入ります
  2. Sing in ボタンをクリックします
_images/sanity1.png
  1. IdM ページで資格情報を入力します
_images/sanity2.png
  1. Revenue Sharing セクションに移動します
_images/sanity3.png
  1. デフォルトの RS モデルが作成されていることを確認してください
_images/sanity4.png
  1. My Stock セクション に移動してください
_images/sanity5.png
  1. 新しいカタログを作成するために、New をクリックしてください
_images/sanity6.png
  1. 名前と説明を入力し、 Next をクリックし、 Create をクリックします
_images/sanity7.png _images/sanity8.png _images/sanity9.png
  1. Launched をクリックし、その後、Update をクリックします
_images/sanity10.png _images/sanity11.png
  1. Home に移動し、新しいカタログが表示されていることを確認します
_images/sanity12.png _images/sanity13.png

実行中プロセスのリスト

GlassFishサーバー (APIs と RSS), Python (Charging Backend), Node(Proxy)の Javaが MongoDB と MySQL データベースを実行していることを確認する必要があります。次のコマンドを実行すると :

ps -ewF | grep 'java\|mongodb\|mysql\|python\|node' | grep -v grep

次のようなものが表示されます :

mongodb   1014     1  0 3458593 49996 0 sep08 ?        00:22:30 /usr/bin/mongod --config /etc/mongodb.conf
mysql     1055     1  0 598728 64884  2 sep08 ?        00:02:21 /usr/sbin/mysqld
francis+ 15932 27745  0 65187 39668   0 14:53 pts/24   00:00:08 python ./manage.py runserver 0.0.0.0:8006
francis+ 15939 15932  1 83472 38968   0 14:53 pts/24   00:00:21 /home/user/business-ecosystem-charging-backend/src/virtenv/bin/python ./manage.py runserver 0.0.0.0:8006
francis+ 16036 15949  0 330473 163556 0 14:54 pts/25   00:00:08 node server.js
root      1572     1  0 1142607 1314076 3 sep08 ?      00:37:40 /usr/lib/jvm/java-8-oracle/bin/java -cp /opt/biz-ecosystem/glassfish ...

ネットワークインターフェースの Up と Open

使用中および受信中のポートをチェックするには、次のコマンドを実行します :

$ sudo netstat -nltp

期待される結果は、次のようなものでなければなりません:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:8006          0.0.0.0:*               LISTEN      15939/python
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      1014/mongod
tcp        0      0 127.0.0.1:28017         0.0.0.0:*               LISTEN      1014/mongod
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1055/mysqld
tcp6       0      0 :::80                   :::*                    LISTEN      16036/node
tcp6       0      0 :::8686                 :::*                    LISTEN      1572/java
tcp6       0      0 :::4848                 :::*                    LISTEN      1572/java
tcp6       0      0 :::8080                 :::*                    LISTEN      1572/java
tcp6       0      0 :::8181                 :::*                    LISTEN      1572/java

データベース

サニティチェックの最後のステップは、プロセスとポートを特定したら、MySQL と MongoDB のデータベースが稼働していることを確認し、クエリを受け入れることです。次のコマンドを使用して、MySQL が動作していることを確認できます:

$ mysql -u <user> -p<password>

次のようなものが表示されます:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 174
Server version: 5.5.47-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

MongoDBの場合は、次のコマンドを実行します :

$ mongo <database> -u <user> -p <password>

次のようなものが表示されます :

MongoDB shell version: 2.4.9
connecting to: <database>
>

診断手順

診断手順は、GE のエラーの原因を特定するためにシステム管理者が行う最初の手順です。これらのテストでエラーの性質が特定されると、システム管理者はエラーの正確なポイントと可能な解決方法を特定するために、より具体的で具体的なテストに頼らざるを得なくなります。このような特定のテストは、このセクションの範囲外です。

リソースの可用性

メモリ使用量は、同時使用可能なユーザ数と使用可能な空きメモリおよびハード・ディスクの数によって異なります。Business API Ecosystem では、最低1024 MBのRAMメモリが必要ですが、2048 MBの空きメモリが推奨されます。さらに、Business API Ecosystem には、少なくとも15 GBのハードディスク容量が必要です。

リモートサービスアクセス

N/A

リソース消費

リソース消費は負荷、特に同時ログインしているユーザの数に大きく依存します。

  • Glassfish メインメモリの消費量は、500 MBから2048 MBの間である必要があります
  • MongoDB のメインメモリの消費量は、30 MBから500 MBの間である必要があります
  • Python のメインメモリの消費量は、30 MBから200 MBの間である必要があります。
  • Node のメインメモリ使用量は、30 MBから200 MBの間である必要があります
  • MySQL のメインメモリの消費量は、30 MBから500 MBの間である必要があります

I/O フロー

予想される唯一のI/O フローは、Logic Proxy 構成ファイルで定義されたポート上の HTTP タイプです