EC2(Amazon Linux)にWebLogic(12.1.x)をインストールする

## 環境
- Amazon EC2(Amazon Linux | t2.micro)
- JDK8
- Oracle WebLogic Server 12.1.3

## インストーラー
Oracleのサイトにて入手、EC2へコピーしておく。

- JDK8u131 **（Linux x64 | .rpm）**
- Oracle WebLogic Server 12.1.3 **（Generic）**

## 1. マシン(EC2)構築
### 1-1. タイムゾーンをAsia/Tokyoへ変更

AWSのドキュメント[^1]を読みながら。

- /usr/share/zoneinfoディレクトリ以下のファイルを/etc/localtimeにコピーする
- /etc/sysconfig/clockを更新する

```shell-session
$ sudo cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

$ cat << EOF > ~/clock
ZONE="Asia/Tokyo"
UTC=true
EOF

$ sudo mv ~/clock /etc/sysconfig/clock
$ sudo chown root:root /etc/sysconfig/clock
$ sudo chmod 644 /etc/sysconfig/clock
```

### 1-2. WebLogicインストール用ユーザーの作成
```shell-session
$ sudo groupadd oinstall
$ sudo useradd -g oinstall oracle
$ sudo passwd oracle
```

### 1-3. WebLogicインストール先ディレクトリ(OFA)の作成
```shell-session
$ sudo mkdir -p /u01/app
$ sudo chown oracle:oinstall /u01/app
```

### 1-4. 中央インベントリ・ポインタ・ファイルの作成
```shell-session
$ cat << 'EOF' > oraInst.loc
inventory_loc=/u01/app/oraInventory
inst_group=oinstall
EOF

$ sudo mv ~/oraInst.loc /etc/.
$ sudo chown oracle:oinstall /etc/oraInst.loc
$ sudo chmod 664 /etc/oraInst.loc
```

### 1-5. JDKインストール
```shell-session
$ sudo rpm -ivh ~/jdk-8u131-linux-x64.rpm
```

## 2. WebLogicのインストール
ここからは作成しておいたインストール用ユーザーに切り替えて進める。

```shell-session
$ su - oracle
Password:
```

### 2-1. 環境変数「JAVA_HOME」の設定
インストールしたJDKを利用するよう設定。

```shell-session
$ cat << 'EOF' >> ~/.bash_profile
export JAVA_HOME=/usr/bin/java
EOF

$ source ~/.bash_profile
```

### 2-1. レスポンス・ファイルの準備
インストーラーを実行すると:raising_hand:

```shell-session
$ java -jar ~/fmw_12.1.3.0.0_wls.jar
```

GUIがないのでエラーに:no_good::no_good::no_good:

```text
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
        at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
        at java.awt.Window.<init>(Window.java:536)
        at java.awt.Frame.<init>(Frame.java:420)
        at java.awt.Frame.<init>(Frame.java:385)
        at javax.swing.SwingUtilities$SharedOwnerFrame.<init>(SwingUtilities.java:1758)
        at javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:1833)
        at javax.swing.JDialog.<init>(JDialog.java:272)
        at javax.swing.JDialog.<init>(JDialog.java:206)
        at javax.swing.JDialog.<init>(JDialog.java:154)
        at oracle.as.install.engine.modules.presentation.ui.common.dialogs.SpecifyInventoryDirectoryDialog.<init>(SpecifyInventoryDirectoryDialog.java:235)
        at oracle.as.install.engine.modules.presentation.ui.common.dialogs.SpecifyInventoryDirectoryDialog.showDialog(SpecifyInventoryDirectoryDialog.java:761)
        at oracle.sysman.oio.oioc.OiocOneClickInstaller.main(OiocOneClickInstaller.java:616)
Logs are located here: /tmp/OraInstall2017-08-25_03-49-00PM.
```

サイレントインストールしか選択肢がないのでレスポンス・ファイルを用意。

```shell-session
$ cat << EOF > ~/paramfile
[ENGINE]

#DO NOT CHANGE THIS.
Response File Version=1.0.0.0.0

[GENERIC]

#The oracle home location. This can be an existing Oracle Home or a new Oracle Home
ORACLE_HOME=/u01/app/oracle/Middleware

#Set this variable value to the Installation Type selected. e.g. WebLogic Server, Coherence, Complete with Examples.
INSTALL_TYPE=WebLogic Server

#Set this to true if you wish to decline the security updates. Setting this to true and providing empty string for My Oracle Support username will ignore the Oracle Configuration Manager configuration
DECLINE_SECURITY_UPDATES=true

#Set this to true if My Oracle Support Password is specified
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
EOF
```

上記のファイルはGUIのある環境でインストーラーを途中まで実行すれば自動で作成してもらえる。
（ただいくつか必要な項目が足りてなかったのでWLSのドキュメント[^2]を参考に自分で追記…）

![インストール・ステップ5/7でレスポンス・ファイルを保存できる](https://qiita-image-store.s3.amazonaws.com/0/109331/717cbf4d-410a-2a22-dee7-0c7c19bb44da.png)

### 2-2. WebLogicをサイレントインストール
```shell-session
$ java -jar ~/fmw_12.1.3.0.0_wls.jar -silent -responsefile ~/paramfile
```

**「Checking swap space: must be greater than 512 MB.   Actual 0 MB    Failed」**となり前提条件チェックで弾かれた:no_good::no_good::no_good:

スワップ領域なんて必要ないくらいメモリーを搭載すればいいじゃない。と思うので前提条件チェックを無視するオプションを付与して再度インストール。

```shell-session
$ java -jar ~/fmw_12.1.3.0.0_wls.jar -silent -ignoreSysPrereqs -responsefile ~/paramfile
```

インストールできたよー:ok_woman:

## スワップ領域つくりたい！
専用のパーティションを用意してスワップ領域に割り当てる。親近感ある。

```shell-session
# mkswap -c /dev/sda3
```
それには「Amazon EC2 インスタンスストア」というストレージが最適らしい[^3]。けど、T2、サポートされてない？

ファイルをスワップ領域として利用することにします。

```shell-session
$ sudo dd if=/dev/zero of=/tmp/swapfile bs=1M count=512
$ sudo mkswap /tmp/swapfile

$ sudo chmod 600 /tmp/swapfile
$ sudo swapon /tmp/swapfile
```

（起動時にマウントしてもらえるよう/etc/fstabも書かないとダメなんじゃないかな:angry:）

___
[^1]: http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/set-time.html
[^2]: https://docs.oracle.com/cd/E57014_01/core/OUIRF/response_file.htm
[^3]: http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/InstanceStorage.html