1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Azure] TERASOLUNAのサンプルアプリをPaaSで動かす

Last updated at Posted at 2018-08-31

TERASOLUNA というNTTデータが提供するフレームワーク 1 があります。

TERASOLUNA Server Framework for Javaの動作環境は こちら にありますが、Java, Tomcat, PostgreSQLであればAzure PaaS ( WebApp + Azure Database for PostgreSQL ) 環境で普通に動きそうです。
実際に Githubで公開されているサンプルアプリ が動作することを試してみたので、以下に手順をまとめておきます。

簡単ですが構成図:

image.png

ここでVMがあるのは、作業用端末(手順中で実行しているDB初期化、ビルドとデプロイの作業用)で、同じAzure環境にある必要はありません。アプリケーション自体はPaaSだけで動作するようになります。

1) Azureリソース(WebApp + PostgreSQL)作成

注:WebApp は無料プランで試せますが、PostgreSQLの方は無料プランが無いため、¥4,381/月 (2018.08.15 の東日本リージョンの定価) がかかります。

Azureポータルで リソースの作成 → "Web App + PostgreSQL" を選択します。

image.png

  • WebAppは無料プランを指定
  • PostgreSQLの価格レベルは最低(Basic 1コア)を指定
  • PostgreSQLのバージョンは 9.6を指定

その他の名称などは任意の名前で構いません。

image.png

作成時に指定した サーバ名、管理者ログイン名とパスワード を控えておきます。

作成後、WebAppの「アプリケーション設定」を変更します。

  • Javaバージョンで「Java 8」を選択
  • Javaマイナーバージョンで「1.8.0_172」を選択
  • Java Webコンテナーで「新しい順 Tomcat 9.0」(=Tomcat 9.0の最新バージョン)を選択

image.png

最後に、PostgreSQLのアクセス許可設定を変更します。
「接続のセキュリティ」メニューにて AllowAllを削除し、「Azureサービスへのアクセスを許可」(=Azureサービスからのアクセスを許可)をオンに変更します。

image.png

今回は作業用の端末がAzure VMなのでこれで設定完了です。別の環境から接続する場合は、その接続元IPを追加で設定して下さい。

設定後の状態:

image.png

Azureリソースの作成と設定は以上で完了です。

2) サンプルアプリのダウンロードと設定

ここからは上に書いたVM(CentOS)で作業しています。作業用の端末に必要な実行環境(java, Maven, PostgreSQLクライアント)がインストールされていない場合は

$ yum install java-1.8.0-openjdk-devel maven postgresql

で追加して下さい。(Ubuntuの場合はaptコマンドになります。)

$ apt install openjdk-8-jdk maven postgresql-client-common postgresql-client-9.6

サンプルアプリをダウンロードして解凍します。

$ wget https://github.com/terasolunaorg/terasoluna-tourreservation-mybatis3/archive/5.4.1.RELEASE.tar.gz
$ tar -xvf 5.4.1.RELEASE.tar.gz

サンプルアプリは、SQLサーバに"tourreserve" DBがあることを前提にしているので、これを手動で作成します。
途中指定するユーザ名は、ユーザ名@サーバ名 の形式 (例:postgresusr@postgresqldbserver)です。

$ psql -h <1で作成したサーバ名>.postgres.database.azure.com -U <1で作成したユーザ名> -d postgres
Password for user postgresusr@postgresqldbserver: <1で指定したパスワード>
psql (9.6.9)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=> create database tourreserve;
CREATE DATABASE
postgres=> \q

サンプルアプリ内にDB初期化スクリプトがあるので、接続情報を変更して実行します。

$ cd ~/terasoluna-tourreservation-mybatis3-5.4.1.RELEASE/terasoluna-tourreservation-initdb/
$ vi pom.xml

ファイル中に

<db.url>jdbc:postgresql://localhost/tourreserve</db.url>
<db.username>postgres</db.username>
<db.password>P0stgres</db.password>

という行があるので変更します。ユーザ名は、ユーザ名@サーバ名 の形式 (例:postgresusr@postgresqldbserver)です。

<db.url>jdbc:postgresql://<1で作成したサーバ名>.postgres.database.azure.com:5432/tourreserve</db.url>
<db.username><1で作成したユーザ名></db.username>
<db.password><1で指定したパスワード></db.password>

変更後、DB初期化スクリプトを実行します。

$ cd ~/terasoluna-tourreservation-mybatis3-5.4.1.RELEASE/
$ mvn -f terasoluna-tourreservation-initdb/pom.xml sql:execute
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - DB Init 5.4.1.RELEASE
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- sql-maven-plugin:1.5:execute (default-cli) @ terasoluna-tourreservation-initdb ---
※中略※
[INFO] 28 of 28 SQL statements executed successfully
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16.169s
[INFO] Finished at: Mon Aug 06 05:27:27 UTC 2018
[INFO] Final Memory: 7M/133M
[INFO] ------------------------------------------------------------------------

BUILD SUCCESSとなれば成功です。

3) ビルド

アプリケーションのDB接続情報は 2) のDB初期化設定とは別にあるので、修正してビルドします。

$ cd ~/terasoluna-tourreservation-mybatis3-5.4.1.RELEASE/terasoluna-tourreservation-env/src/main/resources/META-INF/spring/
$ vi terasoluna-tourreservation-infra.properties

ファイル中に

database.url=jdbc:postgresql://localhost/tourreserve
database.username=postgres
database.password=P0stgres

という行があるので、2) と同様に修正します。

database.url=jdbc:postgresql://<1で作成したサーバ名>:5432/tourreserve
database.username=<1で作成したユーザ名>
database.password=<1で指定したパスワード>

変更後、ビルド実行します。

$ cd ~/terasoluna-tourreservation-mybatis3-5.4.1.RELEASE/
$ mvn clean install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Parent
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Environment Layer
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Domain Layer
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Web Layer
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Parent 5.4.1.RELEASE
[INFO] ------------------------------------------------------------------------
※中略※
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Parent SUCCESS [  0.742 s]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Environment Layer SUCCESS [  5.308 s]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Domain Layer SUCCESS [ 31.058 s]
[INFO] TERASOLUNA Server Framework for Java (5.x) - Tour Reservation Application - Web Layer SUCCESS [ 30.660 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:08 min
[INFO] Finished at: 2018-08-23T18:18:23+09:00
[INFO] Final Memory: 45M/331M
[INFO] ------------------------------------------------------------------------

BUILD SUCCESSとなれば成功です。

$ ls ~/terasoluna-tourreservation-mybatis3-5.4.1.RELEASE/terasoluna-tourreservation-web/target/terasoluna-tourreservation-web.war
-rw-r--r-- 1 azureuser azureuser 29272310 Aug 23 18:18 /home/azureuser/terasoluna-tourreservation-mybatis3-5.4.1.RELEASE/terasoluna-tourreservation-web/target/terasoluna-tourreservation-web.war

このwarをWebAppsにデプロイします。

4) デプロイ

まず、AzureコンソールでWebAppsのデプロイ設定をします。対象のWebAppsのメニュー「デプロイ資格情報」から、デプロイ用のユーザ名、パスワードを設定します。

image.png

次に、デプロイオプションとして、ローカルGitリポジトリを設定します。「デプロイオプション」→「ソースの選択」からローカルGitリポジトリを選択して変更を保存します。

image.png

変更後、WebAppsの概要に戻ると「GitクローンURL」が表示されているのでコピーしておきます。

image.png

作業用の端末に戻り、WebAppsにwarファイルをデプロイします。

$ git clone <上でコピーしたGitクローンURL>
Password for 'https://xxxxx.scm.azurewebsites.net:443': <上で設定したパスワード>
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (6/6), done.
Unpacking objects: 100% (7/7), done.
remote: Total 7 (delta 0), reused 0 (delta 0)

warファイルを追加して、pushします。

$ cd <上で作成されたWebAppsディレクトリ>
$ cp ~/terasoluna-tourreservation-mybatis3-5.4.1.RELEASE/terasoluna-tourreservation-web/target/terasoluna-tourreservation-web.war ./webapps/
$ git add ./webapps/terasoluna-tourreservation-web.war
$ git commit
<コメントを何か記入して保存>
$ git push origin master
Password for 'https://xxxxx.scm.azurewebsites.net:443': <上で設定したパスワード>

作業後、デプロイオプションに履歴が表示されれば作業は完了です(チェックが入れば、正常終了)。

image.png

5) 動作確認

WebAppsにアクセスして、参照できることを確認します。

https://<1で作成したWebApp名>.azurewebsites.net/terasoluna-tourreservation-web/

image.png

image.png

以上で、サンプルアプリがPaaS環境で動作することが確認できました。

参考資料

  1. リンク先 に説明がありますが、正確にはフレームワークではなく「フレームワークを含む総合ソリューション」の名称です。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?