Oracle Java Cloud Serviceをフリートライアルで使い始める

# （はじめに）  Oracle Java Cloud Serviceとは

Oracle Java Cloud Service(以降JCS)というのは、たくさんある[Oracle Cloud](https://cloud.oracle.com/home)のクラウドサービスのうちの一つで、Java EEのWebアプリケーションを実行できるPaaS型のクラウドサービスです。JCSの中ではJavaEEのアプリケーションサーバーであるOracle WebLogic Serverが稼働していて、ユーザーはオンプレミス版のWebLogic Serverと同じ感覚でJCS上のWebLogic Serverを扱うことができます。

# フリートライアル環境でJCSのチュートリアルを試そう

JCSを試しに使ってみたい場合は、フリートライアルを申請して利用できます。

そしてトライアル環境にログインできるようになってからJCSを使い始めるときは、こちらのチュートリアル [Getting Started with Oracle Java Cloud Service](http://www.oracle.com/webfolder/technetwork/tutorials/obe/cloud/javaservice/JCS/Get_Started_with_JCS/Get_Started_with_JCS.html) が情報としてよくまとまっています。残念ながらこちらは英語のみで日本語はありません。

今回、JCSのフリートライアル環境を使ってこのチュートリアルを実施してみましたので、どんな感じだったかを書きます。同じことを試したい方は基本的には上のチュートリアルに沿って行い、このQiitaの情報はあくまで参考として見てください（この記事には細かい手順は書いていません）。画面キャプチャは2016年4月時点のもので、実際の画面は将来的に変更される可能性があります。
なお、フリートライアル環境を申し込んだときのブログは[こちら](http://qiita.com/nobuhikosekiya/items/08d1df91df5dc8fa879a)に書きましたので良かったら参考にどうぞ。

※また、英語ですがこのチュートリアルとほぼ同じ内容の動画版では、10分で全体の作業がよくわかりますので、チュートリアルを読む前に見ることをお勧めします。
https://www.youtube.com/watch?v=5DHsE2x5mks

※今回のチュートリアル以外にも、たくさんのチュートリアルがこちら↓にあります。
http://docs.oracle.com/cloud/latest/jcs_gs/jcs_tutorials.htm

# チュートリアルの全体の流れ

JCSの実態は、Oracle CloudのIaaS（Oracle Compute Cloud Serviceといいます） のVM上にOracle WebLogic ServerというJava EEのアプリケーションサーバーが構成されているものです。よって、アーキテクチャとしてはOracle LinuxのVMがまず作成され、その上にWebLogic Serverが構成されていきます。
あとは、JCSとしてWebLogic Serverを動かすためにオラクルデータベースが必要なため、Oracle Database Cloud Service (以降DBCS)もJCSの前に作成する必要があります。
さらに、JCSとDBCSではデータのバックアップ用途にOracle Storage Cloud Serviceというクラウド上のオブジェクトストレージを使いますので、この構成も必要となります。
Java Cloud Serviceのフリートライアルでは自動的にDBCSもStorage Cloud Serviceも使用できるようになっています。

チュートリアルのステップは以下の通りです。最後の5.以外は全てJava Cloud Serviceを使用するために必須のステップです。

1. SSHキーの作成
2. Oracle Storage Cloud Service内にコンテナを作成
3. Database Cloud Serivce (DBCS)インスタンスを作成
4. Java Cloud Service (JCS)インスタンスを作成
5. warファイルをのアプリケーションをデプロイして、ブラウザからアプリケーションにアクセス

※各JCS, DBCS内で作成する実行環境を表す単位をインスタンスと言います。

# 1. SSHキーの作成（Creating SSH Keys for Use with Oracle Cloud Services ）

JCSインスタンスを作成すると、Oracle LinuxのVMがユーザーに提供されるので、それにSSHでアクセスするための鍵の作成が必要となります。JCSインスタンス作成するときに公開鍵を登録するので事前に行うわけです。

チュートリアルではWindowsをクライアント環境の前提とし、puttyをインストールするとついてくるputtygenを利用しています。Linuxのssh-keygenコマンドでの方法は[動画](https://www.youtube.com/watch?v=5DHsE2x5mks)の方にやり方が載っていました。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/769ab974-5fd9-03fb-3dce-e22656dbd484.png)

チュートリアルのこの章を終わると、最終的に3つのファイルができます。
rsa-key.ssh
rsa-key.pub
rsa-key.ppk

# 2. Oracle Storage Cloud Service内にコンテナを作成 (Creating Oracle Storage Cloud Service Containers)

JCSとDBCSのバックアップ機能でStorage Cloud Serviceのストレージが使用されるため、これらのサービスの利用の前提としてOracle Storage Cloud Service内にそれぞれのコンテナ合計2つを作成します。

## 2-1. Setting the Replication Policy for Your Oracle Storage Cloud Service
一番初めにレプリケーション・ポリシーの設定を行う必要があります。この操作はフリートライアル環境を使い始めた最初の一回だけ必要な手順です。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/a5ff6a12-bf5f-efdf-f77f-e40b880ea03f.png)
Storage Cloudへ保存されたオブジェクトは、クラウド上のデータセンター間でレプリケートするようにできますが、その保存ポリシーを選択します。どのポリシーを選択するかのガイドとして以下の情報を確認しておくといいです。
http://docs.oracle.com/cloud/latest/storagecs_common/CSSTO/GUID-5D53C11F-3D9E-43E4-8D1D-DDBB95DEC715.htm#CSSTO-GUID-5D53C11F-3D9E-43E4-8D1D-DDBB95DEC715

フリートライアルの利用として試しているだけの場合、気にせずどれを選択しても良いと思いますが、実プロジェクトで使用する場合は上記ガイドを確認して決めた方がいいです。これは一度設定したらやり直しできません。

### 2-2. Requesting an Authentication Token、 2-3. Creating Your Containers、　2-4. Verifying That Your Containers Were Created

現在のStorage Cloud ServiceへのアクセスインターフェースはREST APIです。チュートリアルではcurlを使ってRESTリクエストを実行する手順となっています。Windowsユーザーはcurlを自分のPCにインストールする必要があります（チュートリアルにはこの手順は載っていません）。
curlのインストールが難しかったり、GUIベースでこの作業をやりたい人は別のやり方をこの後に紹介します。

Storage Cloud Serviceにアクセスする際には、ユーザーとパスワードとアイデンティティ・ドメイン名が必要です。
ユーザーとそのパスワードというのは、今回のお試しの場合はこのフリートライアル環境にログインするのと同じユーザーとパスワードを使えばいいでしょう。

（本来は、この環境（＝アイデンティティ・ドメイン）に追加されたユーザーで、かつStorage Cloud Serviceへの権限があるユーザーだったらだれでもここで指定できます。基本的にはJCS用のストレージコンテナを作成するときのユーザーは、JCSインスタンスを作成するときのユーザーと同じにし、DBCS用のストレージコンテナを作成するときのユーザーはDBCSインスタンスを作成するときのユーザーでいいと思います。）

認証トークンの取得のためのGETリクエストの例

```
$ curl -i -X GET -H "X-Storage-User: Storage-＜アイデンティティドメイン名＞:＜ユーザー名＞" -H "X-Storage- Pass: ＜パスワード＞" https://＜アイデンティティドメイン名＞.storage.oraclecloud.com/auth/v1.0
HTTP/1.1 200 OK
date: 1460358937159
X-Auth-Token: AUTH_tk643f693c82a8b2f313bbba8ee8261a1c
X-Storage-Token: AUTH_tk643f693c82a8b2f313bbba8ee8261a1c
X-Storage-Url: https://storage.us2.oraclecloud.com/v1/Storage-＜アイデンティティドメイン名＞
Content-Length: 0
Server: Oracle-Storage-Cloud-Service
```

JCS用のコンテナ(MyJCSContainer)の作成　(PUTリクエスト。上のレスポンスに含まれていた認証トークンの文字列をX-Auth-Tokenヘッダにセットします。）

```
$ curl -i -X PUT -H "X-Auth-Token: AUTH_tk643f693c82a8b2f313bbba8ee8261a1c" https://storage.us2.oracleclo
ud.com/v1/Storage-＜アイデンティティドメイン名＞/MyJCSContainer
HTTP/1.1 201 Created
X-Trans-Id: tx7191dca7fcfa49218c3c2-00570b4f99ga
Date: Mon, 11 Apr 2016 07:17:46 GMT
Connection: keep-alive
X-Last-Modified-Timestamp: 1460359065.92004
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Server: Oracle-Storage-Cloud-Service
```

DBCS用のコンテナ（MyDBContainer)の作成　(PUTリクエスト）

```
$ curl -i -X PUT -H "X-Auth-Token: AUTH_tk643f693c82a8b2f313bbba8ee8261a1c" https://storage.us2.oracleclo
ud.com/v1/Storage-＜アイデンティティドメイン名＞/MyDBContainer
HTTP/1.1 201 Created
X-Trans-Id: tx2ccd2dac431044a99d719-00570b4fc8ga
Date: Mon, 11 Apr 2016 07:18:33 GMT
Connection: keep-alive
X-Last-Modified-Timestamp: 1460359112.91603
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Server: Oracle-Storage-Cloud-Service
```

### GUIでストレージコンテナを作成するやり方

CLIでなく、GUIでこのあたりのことをやりたい場合は、以下のサイトにある「CloudBerry Explorer for Oracle Cloud」というフリーウェアが利用できます。
http://www.cloudberrylab.com/oracle-cloud-tools.aspx

「CloudBerry Explorer for Oracle Cloud 」のところのDownload Freewareのボタンをクリックすると、CloudBerry Explorer for OpenStack Storageをダウンロードする画面に映ります。
こちらをインストール後、下のようにNew Oracle Cloud Accountを選択します。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/7a1bd599-76c1-3e39-d001-b9df122f3fe9.png)

アカウント設定ダイアログではユーザーとパスワードとLocationを入力します。
ユーザー名は、上のcurlの例の"X-Storage-User"にあたる部分ですので、フォーマットは
Storage-<アイデンティティ・ドメイン>:<アイデンティティ・ドメインのログインユーザーアドレス>　になります。
あとは、ロケーションはフリートライアル環境が基本的にus2で提供されていると思いますので、us2を選択すればいいです。
設定後はTest Connectionsボタンで成功することを確認しましょう。

![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/3d944145-c0af-85fd-9441-f2830ebacdeb.png)

その後、以下のようにSourceで今のアカウント設定を選択すると、Storage Cloud Serviceにアクセスできます。
下の例では既に先にcurlでコンテナを2つ作成していたので、それが表示されています。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/c4656cbd-b48f-4bc4-4a21-9dca70851eac.png)


GUIからコンテナ作成するときは箱のアイコンをクリックします。Container typeはStandardにします。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/d1976f04-931e-f3d2-055f-ac2e975d873e.png)


以上、チュートリアルの手順の通りにすると、以下の2つのストレージコンテナの作成を完了したことになります。
・MyDBContainer
・MyJCSContainer

# 3. Database Cloud Serivce (DBCS) インスタンスを作成（Creating an Oracle Database Cloud - Database as a Service Instance）

このステップを完了すると、Oracle LinuxのVMが1つと、その上にOracle Databaseが構成されて起動します。CPUとメモリをどの程度にするかや、Oracle Databaseのバージョンやエディションなどをウィザード形式で選択していきますが、基本的にチュートリアル通りに実施すれば簡単に環境ができます。このウィザードで何を選択するかによって、実際は請求金額が大きく違ってくるのですが、フリートライアルでは気にせず何でも利用可能です。ただしフリートライアルではOCPUというCPUの単位がJCSとDBCS含めて合計6までしか使えないなどの制限があります。

※チュートリアルの補足：チュートリアルの中の手順で、一番初めの「Create Service　（サービスの作成）」ボタンの在りかがわかりにくいかもしれません。My ServicesからOracle Database Cloud Serviceのサービスコンソールを開くと、下のような画面にたどりつくと思いますが、下の赤枠のところをクリックしないと出てきません。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/8dc2e509-b09e-9a7e-0571-6d28ce227faf.png)

## DBCSのインスタンス作成ウィザード
### ステップ1: サービス・レベルと請求頻度
サービス・レベルは上の方のを選択します。こちらの方はオラクルデータベースの起動まで自動的にやってくれます。
請求単位はフリートライアルではどちらでいいです。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/197db4ca-1449-c72f-35db-368ddec5ffdf.png)

### ステップ2: オラクルデータベースのバージョン
JCSの利用においてDBCSのバージョンは11gでも12cでもかまいませんが、チュートリアルでは12cが選択されています。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/68e6b715-6531-aa73-f1ba-095d54117f5f.png)

### ステップ3: エディション
チュートリアル通りバージョンはEnterprise Editionにします。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/135bad13-6804-afca-d2bb-7898a16c879c.png)

### ステップ4: 詳細情報の設定
最後の設定画面は、チュートリアル通りに入力していきますが、タイムゾーンは日本時刻にしてもいいです。
データベース構成の欄のオラクルデータベースのSYSユーザー用の管理パスワードは後でJCSインスタンス作成時に入力するので覚えておく必要があります。
クラウドストレージコンテナの欄は前のステップでストレージコンテナを作成したときの情報を入れます。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/d1a62507-53ca-e5a7-f1c9-0a03485eb6de.png)

DBCSのインスタンスの作成が完了するまでしばらく待ちます。完成してから次のステップに行きます。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/b221d21d-224a-5bd6-56bf-ec79dfcac61f.png)

# 4. Java Cloud Service (JCS)インスタンスを作成（Creating an Oracle Java Cloud Service Instance）

このステップを完了すると、WebLogic Serverが稼働するVMが2つ、ロードバランサ用のVMが1つが構成されて起動します。

※チュートリアルの補足：これも最初のサービス作成ボタンに行くためにこのサービスリンクをクリックする必要があります。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/b4721856-13aa-cc16-a1bf-106981f4223b.png)

## JCSのインスタンス作成ウィザード
### ステップ1: サービス・レベルと請求頻度
サービス・レベルは下の「Java Cloud Service」の方が多機能です。フリートライアルではお金はかかりませんので、こちらを選択しましょう。
同じくフリートライアルなので、請求頻度は今回はどちらでもいいです。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/a8ff9c56-ea0b-b076-062c-7c1c25731c2e.png)

### ステップ2: WebLogic Serverのバージョン
いまは新しい12.2.1.0のバージョンが出ていますが、ここはチュートリアル通り12.1.3のバージョンを選択します。（執筆時点では12.2.1.0ではスケールアウトやマルチノードのクラスタ構成などを組むことができません。）
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/b5c1526a-6d49-f2a8-ce6a-9c8da71a3fe9.png)

### ステップ3: エディション
Enterprise Editionを選択します。このエディションでは複数ノード構成のクラスタリングが使用できます。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/e8671dae-be47-a71c-06ef-e84792163d1f.png)

### ステップ4: 詳細情報の設定
最後の設定画面です。
WebLogicの欄のユーザー・パスワードは、後でWebLogic管理コンソールにログインする際に使用するものです。今までのアイデンティティ・ドメインにログインするときやストレージクラウドを利用するときのユーザーパスワードとは全く別のものです。データベース構成の欄の管理ユーザーはSYSにします。パスワードはDBCSインスタンス作成時に入力したものです。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/5de43de1-9b19-25a0-272f-3e623e3650a7.png)

JCSも作成が完了するまでしばらく待ちます。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/220576ff-b547-b5de-76fc-c4f7be426cf9.png)

# 5. Deploying an Application to the Oracle Java Cloud Service Instance 

JCSインスタンスが作成されたら、最後にチュートリアルにリンクがあるwarファイルをデプロイして、アクセスしてみます。
warファイルはチュートリアル内の「Before You Begin」の章の一番下の方にbenefits.warというリンクがあります。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/6ee5ae73-5535-24a4-2f47-3d7c1b26aef7.png)

JCSインスタンスのメニューからWebLogicの管理コンソールを開くことができます。JCSインスタンス作成時の設定画面で設定したWebLogicのユーザーとパスワードを入力してログインします。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/93c39691-eedb-3d85-f35a-b488f79e56fa.png)

IPアドレスで直接アクセスしているため、下のような画面(Chromeの例）になると思いますが、ここは気にせずアクセスします。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/00324a4c-bf98-9e99-2f41-c601a01d0033.png)


チュートリアルの手順に沿ってbenefits.warをPCからWebLogicへアップロードし、デプロイして、アプリケーションを起動します。下はアプリケーションが最終的に起動されたときの画面です。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/8f82084a-992d-9baa-c584-51b4fe831dd1.png)

自分のPCのブラウザからデプロイしたアプリケーションにアクセスするためには、URLがわからないといけませんが、JCSインスタンスの詳細画面にパブリックIPがあるので、これを利用します。2つのIPアドレスが下の画面の通りありますが、ロードバランサの方のIPを使います。

![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/650a892c-e251-add4-c641-647fae0b54bf.png)

下の画面のようにIPアドレスベースのURLでデプロイしたアプリケーションにアクセスできました。
![Image.png](https://qiita-image-store.s3.amazonaws.com/0/109197/cbf9d8b6-372e-0b92-f879-d0325b9d17a5.png)


以上