このドキュメントではAppPotをセットアップするための手順を記載しています。
AppPotオンプレミス版 セットアップの手順
AppPotのセットアップは次の手順で行います。
- OSのセットアップ
- 必要なミドルウェアのセットアップ
- AppPot用のデータベース作成
- AppPotのデプロイ
1. OSのセットアップ
前提となるソフトウェアで記載したミドルウェアがサポートするOSをセットアップします。
以降の章ではCentOS 6.5、WildFly、MySQLを例に記載します。
2. 必要なミドルウェアのセットアップ
各ミドルウェアのマニュアルに従ってセットアップを行って下さい。
データベースを作成する際の文字コードはUTF-8にする必要があります。
参考情報として、WildFly、MySQLの組み合わせでのセットアップの情報はこちらを参照してください。
2.1. WildFlyの起動ファイルの変更
- Windowsの場合:
- {WILDFLY_HOME}\bin\standalone.batの
rem Find jboss-modules.jar, or we can't continue
の前に下記の設定を追記してください。
set "JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true"
- Linuxの場合:
- {WILDFLY_HOME}\bin\standalone.confの最終行に下記の設定を追記してください。
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.jersey.server.impl.cdi.lookupExtensionInBeanManager=true"
3. AppPot用のデータベース作成
AppPot用のデータベースを作成します。
AppPotのデータベースは大きく2つあります。
-
AppPot管理用データベース
AppPotの管理画面で使用されるデータベースです。
ユーザー、グループ、アプリなどの情報が管理されています。
データベースは任意の名前で作成してください。
データベース内のテーブルはAppPotの起動時に自動で生成されます。
-
アプリ用データベース
アプリごとに、アプリのValue Objectに合わせて生成されるデータベースです。
アプリからAPI(CreateAppDB)が呼び出されたときに生成されます。
AppPotが使用するDBユーザーはアプリ用データベースの作成などを行いますので、グローバルレベルでALLの権限を付与してください。
MySQLでのデータベース作成の手順の例はこちらのデータベース作成をご覧下さい。
4. AppPotのデプロイ
4.1. AppPotの設定ファイルの変更
AppPotのWarファイルを解凍し、環境に合わせて以下の設定ファイルを変更します。
設定ファイル名 |
設定ファイルの場所 |
概要 |
jboss-web.xml |
{AppPot_WAR}/WEB-INF/jboss-web.xml |
AppPotのWildFly上でのコンテキストルートを指定します |
AppPotログ設定ファイル |
{AppPot_WAR}/WEB-INF/classes/log4j.properties |
ログ出力先を設定します |
AppPot設定ファイル |
{AppPot_WAR}/WEB-INF/classes/stew.properties |
AppPotの各種設定情報を設定します。 |
管理画面DB接続設定ファイル |
{AppPot_WAR}/WEB-INF/classes/META-INF/persistence.xml |
AppPot管理画面が使用するDB接続の設定を行います |
beans.xml |
{AppPot_WAR}/WEB-INF/classes/META-INF/persistence.xml |
認証基盤、データベース製品の切り替え |
4.1.1. jboss-web.xml
AppPotの管理画面や、WebAPIを受け付けるURLの一部になるコンテキストルートを指定します。デフォルトのままでも問題ありません。
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/apppot</context-root>
</jboss-web>
上記の設定例の場合であれば、管理画面のURLは次のようになります。
http(s)://<ホスト名>:<WildFlyのリッスンしているポート番号>/apppot/
4.1.2. AppPotログ設定ファイル
- log
ログの出力先ディレクトを指定してください。
カレント(.)を指定した場合は、WildFlyの実行ユーザーのホームディレクトリにログファイルが出力されます。
- log4j.appender.Stew
デフォルトの設定(org.apache.log4j.DailyRollingFileAppender)では日次でログファイルがローテーションされます。
Log4Jの設定に従って、他のログ出力方式に変更することができます。
設定例
# Define the root logger with appender Stew
log = .
log4j.rootLogger = INFO, Stew
-Dlog4j.configuration=log4j.properties
log4j.debug = true
# Define the Stew appender
log4j.appender.Stew=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Stew.File=${log}/apppot_114.log
log4j.appender.Stew.DatePattern='.'yyyy-MM-dd
# Define the layout for Stew appender
log4j.appender.Stew.layout=org.apache.log4j.PatternLayout
log4j.appender.Stew.layout.conversionPattern=[%d{dd/MM/yyyy HH:mm:ss,SSS}]: [%p]: %m%n
4.1.3. AppPot設定ファイル
# To change this template, choose Tools | Templates
# and open the template in the editor.
# default token age hour
stew.default.token.age = 300
stew.numberOfPushNotifyService=1
#multiLanguage
languageSupports=en_US,ja
languageDefault=ja
#Apple push notification
#Server certificate path
stew.certificate.path =/var/cers/
stew.certificate.password =123
#Log level ERROR | MONITOR | NONE
stew.log.level=ERROR
#Config for customer's server
stew.url = jdbc:mysql://localhost:3306
stew.username = apppot_db
stew.password = samplepassword
# Configure WebLogic Data Source for JDBC Connection of Service APIs
stew.WebLogic.DataSourceName=JDBC_Data_Source_MSSQL
#Config for web root
stew.webroot = apppot
stew.Database_SQLServer_Mode =false
#Config for supper admin's password
root.password = 123456
4.1.4. 管理画面DB接続設定ファイル
AppPotの管理画面が使用するデータベースへの接続情報を記載します。
変更するのは下記です。
- hibernate.connection.driver_class
JDBCドライバのクラス名
- hibernate.connection.username
データベースへの接続ユーザー名
- hibernate.connection.password
データベースへの接続ユーザーのパスワード
- hibernate.connection.url
接続URL
「3. AppPot用のデータベース作成」で作成したデータベースを使用します。
設定例
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.username" value="apppot_db"/>
<property name="hibernate.connection.password" value="samplepassword"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/apppot_db?useUnicode=true&characterEncoding=UTF-8"/>
4.2. Warファイルの生成
設定変更が完了後、再度Warファイルにアーカイブしてください。
以下はAppPotの設定ファイルを入れ替えて、Warファイルにパッケージするシェルスクリプト(package.sh)です。
unzip $1 -d work/
cp conf/beans.xml work/WEB-INF/
cp conf/web.xml work/WEB-INF/
cp conf/weblogic.xml work/WEB-INF/
cp conf/jboss-web.xml work/WEB-INF/
cp conf/log4j.properties work/WEB-INF/classes/
cp conf/stew.properties work/WEB-INF/classes/
cp conf/persistence.xml work/WEB-INF/classes/META-INF/
cd work/
jar cvf ../apppot_2.0.war ./*
このスクリプトは以下で公開しています。
https://gist.github.com/rsogo/1eae96783178f431066d
4.2.1. ディレクトリ構成
このシェルを動作させるためのディレクトリ構成は以下のとおりです。
{任意の作業ディレクトリ}/
package.js ・・・メインのスクリプト
conf/ ・・・変更した設定ファイルの配置場所
beans.xml
persistence.xml
weblogic.xml
jboss-web.xml
stew.properties
log4j.properties
web.xml
work/ ・・・作業用ディレクトリ
AppPot_2.0.war ・・・生成されたwarファイル
4.2.2. 実行手順
オリジナルのAppPotのWarファイルを引数に渡すことで、設定ファイルを入れ替えて、新しいWarファイルを作成します。
$ ./package.sh {変更前のAppPot.war}
$ ./package.sh /tmp/AppPot_2.0.war
4.3. AppPotのデプロイ
WildFlyの起動
{WILDFLY_HOME}/bin/standalone.sh
AppPotのWarファイルをセットアップしたWildFlyの下記の場所に配置します。
{WildFly_HOME}/standalone/deployments
デプロイが成功したら、下記のURLにアクセスしてAppPotの管理画面が表示されることを確認してください。
http://{ホスト名}:{WildFlyのポート番号}/{jboss-web.xmlに指定したコンテキストルート}/
http://localhost:8080/apppot/
4.4. AppPotのアンデプロイ
deploymentsディレクトリに生成されているdeployedファイルをundeployにリネイムすることで、アンデプロイが開始されます。
$ cd {WILDFLY_HOME}
$ mv deployments/{AppPotのWarファイル名}.deployed deployments/{AppPotのWarファイル名}.undeploy
$ mv deployments/AppPot_2.0.war.deployed deployments/AppPot_2.0.war.undeploy
アンデプロイが完了すると、undeployedファイルが生成されます。