EC2(Amazon Linux)でWebLogicドメインを作成する

前回の記事。

* [EC2(Amazon Linux)にWebLogic(12.1.x)をインストールする](http://qiita.com/m28/items/019051f2d47103015cd5)

## ドメイン構成
クラスタもない、ノードマネージャもない。若者の:baseball::baseball:離れな構成。

![](https://qiita-image-store.s3.amazonaws.com/0/109331/19fb4b57-d28d-bf1a-1223-cbd15fce7448.png)

## 1. ドメインと管理サーバーを作成する
ドメインの作成には「Configuration Wizard」を使うので起動する。このツールは&lt;MIDDLEWARE_HOME>/oracle_common/common/bin/config.shにある。

```shell-session
$ /u01/app/oracle/Middleware/oracle_common/common/bin/config.sh -log=/tmp/config.log
```

エラー終了した:no_good:

```shell-session
$ echo $?
3
```

ログいわく、GUIがない。:no_good::no_good:

```text
$ cat /tmp/config.log | grep -i -A 1 'exception'
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
--
2017-08-29 15:08:04,111 WARNING [11] com.oracle.cie.wizard.internal.engine.WizardControllerEngine - Duplicate action cause encountered: java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
--
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
```

「WebLogic Scripting Tool(WLST)」を使わざるを得ない。

### 1-1. WLSTスクリプトを用意する
サンプルスクリプト[^link1]があるのでコピーしてくる。

```shell-session
$ cp /u01/app/oracle/Middleware/wlserver/common/templates/scripts/wlst/basicWLSDomain.py ~/zodiacDomain.py
```

カスタマイズする。

```py:zodiacDomain.py
# テンプレート
readTemplate("/u01/app/oracle/Middleware/wlserver/common/templates/wls/wls.jar")

# 管理者アカウント
cd('/Security/base_domain/User/weblogic')
cmo.setPassword('password123456')

# ドメイン・モード
setOption('ServerStartMode', 'prod')

# 管理サーバー
cd('/Servers/AdminServer')
set('Name', 'leo1')
set('ListenAddress','')
set('ListenPort', 7001)

# 作成
setOption('OverwriteDomain', 'true')
writeDomain('/home/oracle/user_projects/domains/zodiac')

# 終了
closeTemplate()
exit()
```

### 1-2. WLSTでドメインと管理サーバーを作成する
setWLSEnvスクリプトを読み込み必要な変数を設定した後、先ほどのWLSTスクリプトを実行。

```shell-session
$ source /u01/app/oracle/Middleware/wlserver/server/bin/setWLSEnv.sh
$ java weblogic.WLST ~/zodiacDomain.py
```

### 1-3. 管理サーバーを起動
```shell-session
$ /home/oracle/user_projects/domains/zodiac/startWebLogic.sh
```

資格証明を求められるので作成時に設定した管理者アカウントを入力。

```text
<Aug 29, 2017 6:25:58 PM JST> <Info> <Security> <BEA-090065> <Getting boot identity from user.>
Enter username to boot WebLogic server:weblogic
Enter password to boot WebLogic server:
```

起動した:ok_woman:

```text
<Aug 29, 2017 6:26:20 PM JST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING.>
```

うっかりフォアグラウンドで起動してしまったので、別端末からシャットダウンスクリプトを実行。（Ctrl+Cで止めてもいいっぽいけど）

```shell-session
$ /home/oracle/user_projects/domains/zodiac/bin/stopWebLogic.sh
```

### 1-4. 起動IDファイルの作成
起動時に求められる資格証明を、入力に代わり起動IDファイルを読み込んでもらうようにする。

管理サーバーのディレクトリにsecurityディレクトリを作成。

```shell-session
$ cd /home/oracle/user_projects/domains/zodiac/servers/leo1
$ mkdir security
$ cd security
```
boot.propertiesファイルを作成、ユーザー名とパスワードを記述。

```shell-session
$ cat << EOF > boot.properties
username=weblogic
password=password123456
EOF
```

起動してみる。

```shell-session
$ /home/oracle/user_projects/domains/zodiac/startWebLogic.sh
```

何も聞かれず起動した:ok_woman:

```text
<Aug 30, 2017 10:41:11 AM JST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING.>
```

ちなみに、この後boot.propertiesを開くと中身が**暗号化**されていることが確認できる。


## 2. 管理対象サーバーを作成する
管理対象サーバーを構成して、テンプレートを作成して、展開。

### 2-1. 管理対象サーバーを構成
WebLogicの管理コンソールにアクセス。ポート7001をセキュリティグループで許可しておく。
e.g. http://leo1.example.com:7001/console/

左にあるドメイン構造から「環境 → サーバー」と選択。
![](https://qiita-image-store.s3.amazonaws.com/0/109331/392d628c-4e8f-1ea5-df8a-a6a9f5cda865.png)


サーバーを新規に作成、ポート7011で待ちうけるよう設定。（なので管理対象サーバーのセキュリティグループにて、ポート7011が管理サーバーからアクセスできるよう許可しておく）

|項目|設定値|
|:---|:---|
|サーバー名|leo2|
|サーバー・リスニング・アドレス|空白|
|サーバー・リスニング・ポート|7011|
|このサーバーをクラスタのメンバーにしますか?|いいえ|

![](https://qiita-image-store.s3.amazonaws.com/0/109331/7942556f-3e4a-eaec-db10-73f4aad66877.png)


変更をアクティブ化。
![](https://qiita-image-store.s3.amazonaws.com/0/109331/cddc7721-0dec-ea29-6804-c3b72c442319.png)


### 2-2. 管理対象サーバーのテンプレートを作成
&lt;MIDDLEWARE_HOME>/oracle_common/common/bin/pack.shを使う。

指定オプション：

* managed …管理対象サーバーのテンプレートを作りたいという意思を示すためtrueに
* domain …テンプレート作成元WebLogicドメイン
* template …作成されるテンプレートのファイル名
* template_name …テンプレートの名前

```shell-session:管理サーバーにて実施
$ cd /u01/app/oracle/Middleware/oracle_common/common/bin
$ ./pack.sh \
-managed=true \
-domain=/home/oracle/user_projects/domains/zodiac \
-template=/home/oracle/template.jar \
-template_name="template_leo"
```

### 2-3. 管理対象サーバーの作成
まず管理対象サーバーを作成するEC2インスタンスにWebLogicをインストール。手順は管理サーバーの時と同じなので[EC2(Amazon Linux)にWebLogic(12.1.x)をインストールする](http://qiita.com/m28/items/019051f2d47103015cd5)を参照。

作成したテンプレートを管理対象サーバーにコピー、その後unpackを実行する。unpackは&lt;MIDDLEWARE_HOME>/oracle_common/common/bin/unpack.shにある。

指定オプション：

* domain …ドメインを作成する場所
* template …テンプレートのファイル名

```shell-session:管理対象サーバーにて実施
$ cd /u01/app/oracle/Middleware/oracle_common/common/bin
$ ./unpack.sh \
-domain=/home/oracle/user_projects/domains/zodiac \
-template=/home/oracle/template.jar
```

### 2-4. 管理対象サーバーの起動
startManagedWebLogicを実行して起動する。引数に管理対象サーバーの名前と管理サーバーのURLを指定する。（なので管理サーバーのセキュリティグループにて、ポート7001が管理対象サーバーからアクセスできるよう許可しておく）

```shell-session:管理対象サーバーにて実施
$ /home/oracle/user_projects/domains/zodiac/bin/startManagedWebLogic.sh leo2 t3://leo1.example.com:7001
```

資格情報を問われるので答える。

```text
<Aug 30, 2017 2:55:51 PM JST> <Info> <Security> <BEA-090065> <Getting boot identity from user.>
Enter username to boot WebLogic server:weblogic
Enter password to boot WebLogic server:
```

起動した:ok_woman:

```text
<Aug 30, 2017 2:56:11 PM JST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING.>
```

管理対象サーバーの状態がRUNNING:running:
![](https://qiita-image-store.s3.amazonaws.com/0/109331/f28a6589-3640-19e4-c9a0-5a3f5fb05645.png)


### 2-5. 起動IDファイルの作成
やることは管理サーバーと一緒。

```shell-session:管理対象サーバーにて実施
$ cd /home/oracle/user_projects/domains/zodiac/servers/leo2
$ mkdir security
$ cd security
$ cat << EOF > boot.properties
username=weblogic
password=password123456
EOF
```

## WebLogicのバックグラウンド起動
端末が終了してもWebLogicを動かしたい。nohupをつけてバックグラウンド起動する、ログの出力先は適当。

```shell-session
$ nohup /home/oracle/user_projects/domains/zodiac/startWebLogic.sh 1>~/wls.stdout.log 2>~/wls.stderr.log &
```

## セキュリティグループ込みドメイン構成
![](https://qiita-image-store.s3.amazonaws.com/0/109331/0d30fd82-310d-b38d-0417-28d6e957d4a5.png)


---

[^link1]: http://docs.oracle.com/cd/E57014_01/wls/WLSTG/intro.htm#i1037792