WAS ND v9 Traditional をコマンドラインで入れてみた ～ その３

# はじめに

ずいぶん時間が空いてしまいましたが、、、
[前回](https://qiita.com/shimauma999/items/613366e228b55a4d0faf)は、WAS ND 関連 S/W の導入の流れの中で、 下記 6～7. までを行いました。
今回は、WAS ND での 8. Web サーバーの定義 ～ 9. AP サーバーの作成までを行います。
WAS の設定としては、 AP サーバーができた後も様々な設定が必要ですが、
ここでは、9 までで終了とします。

1. メディアの準備
2. ファイルシステムの作成
3. IBM Installation Manager (IIM) の導入
4. 各種 S/W の導入
5. 各種 S/W の Fixpack 適用
6. 管理プロファイルの作成 (dmgr 用)
7. カスタムプロファイルの作成 (na, AP server 用)
8. Web サーバーの定義
9. AP Server の作成

# Web サーバーの定義

WAS を管理する DMgr に対し、 Web サーバー (IBM HTTP Server) を登録します。
概要としては、まず PCTツールとレスポンスファイルを利用した Webサーバー構成スクリプトの作成、
スクリプトの実行の２ステップです。

定義の際、以下の情報が必要となります。詳細は 「[pct ツールを使用した Web サーバー・プラグインの構成](https://www.ibm.com/support/knowledgecenter/ja/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/tins_pctcl_using.html)」 参照

|パラメータ|値|備考|
|:--|:--|:--|
|defLocPath|/usr/IBM/WebSphere/Plugins|Webサーバー定義情報の格納パス|
|defLocName|webserver1|管理コンソール上でのWebサーバー定義名|
|response|/mnt/IBM/work/response_pct_was9a.xml|レスポンスファイルパス|
|script|configurewebserver1.sh|Webサーバー構成スクリプト名|
|コピー先|/usr/IBM/WebSphere/AppServer/bin|Webサーバー構成スクリプトコピー先|

レスポンスファイルは以下の通りです。

```shell
configType=remote
enableAdminServerSupport=false
mapWebServerToApplications=true
wasMachineHostname=was9a
webServerConfigFile1=/usr/IBMIHS/conf/httpd.conf
webServerDefinition=webserver1
webServerHostName=was9a
webServerOS=AIX
webServerPortNumber=80
webServerSelected=ihs
```

PCTツールを使っての web サーバー構成スクリプトの作成コマンドの書式は以下の通りです。


```shell
./wctcmd.sh 
  -tool pct 
  -createDefinition 
  -defLocPathname Webサーバー定義情報の格納パス 
  -defLocName Webサーバー定義名
  -response レスポンスファイルパス
```

まず、定義がないことを確認します。

```shell
# cd /usr/IBM/WebSphere/Toolbox/WCT
# ./wctcmd.sh -tool pct -listDefinitionLocations

ツール pct の定義ロケーションが見つかりません
```

実際のコマンド実行は以下のとおりです。（実際には１行で指定しています ("\"なしで)）

```shell
# cd /usr/IBM/WebSphere/Toolbox/WCT

# ./wctcmd.sh -tool pct \
  -createDefinition \
  -defLocPathname /usr/IBM/WebSphere/Plugins \
  -defLocName webserver1 \
  -response /mnt/IBM/work/response_pct_was9a.xml

定義ロケーションをインポート中...

定義ロケーションが正常にインポートされました

ツール pct を起動中...

ツール実行が正常に完了しました。
```

定義が生成されたことを確認します。

```shell
# ./wctcmd.sh -tool pct -listDefinitionLocations

ツール pct の選択可能な定義ロケーション

名前: webserver1
パス: /usr/IBM/WebSphere/Plugins

# ./wctcmd.sh -tool pct -defLocPathname /usr/IBM/WebSphere/Plugins -listDefinitions
定義ロケーションが正常にインポートされました

ツール pct を起動中...

webserver1

ツール実行が正常に完了しました。
```

次に configurewebserver1.sh が作成されたことを確認します。

```shell
# cd /usr/IBM/WebSphere/Plugins/bin
# ls -l configurewebserver1.sh

-rwxr-xr-x    1 root     system         2096 Jan 16 14:56 configurewebserver1.sh
```

作成された configurewebserver1.sh を WAS の bin ディレクトリにコピーして実行します。


```shell
# cp -p configurewebserver1.sh /usr/IBM/WebSphere/AppServer/bin
# cd /usr/IBM/WebSphere/AppServer/bin

# ./configurewebserver1.sh -user wasadmin -password wasadmin

Using WAS admin userID wasadmin
WASX7209I: ノード was9aCellManager01 のプロセス "dmgr" に、SOAP コネクターを使用して接続しました。プロセスのタイプは DeploymentManager です。
WASX7303I: 次のオプションはスクリプト環境に渡され、argv 変数に格納される引数として使用可能になります: "[webserver1, IHS, /usr/IBMIHS, /usr/IBMIHS/conf/httpd.conf, 80, MAP_ALL, /usr/IBM/WebSphere/Plugins, unmanaged, was9a-node, was9a, aix]"

Input parameters:

   Web server name             - webserver1
   Web server type             - IHS
   Web server install location - /usr/IBMIHS
   Web server config location  - /usr/IBMIHS/conf/httpd.conf
   Web server port             - 80
   Map Applications            - MAP_ALL
   Plugin install location     - /usr/IBM/WebSphere/Plugins
   Web server node type        - unmanaged
   Web server node name        - was9a-node
   Web server host name        - was9a
   Web server operating system - aix
   IHS Admin port              - 8008
   IHS Admin user ID           - ""
   IHS Admin password          - ""
   IHS service name            - ""

Found node with matching hostname. Using existing node was9aNode01

Node definition was9aNode01 already exists.

Creating the web server definition for webserver1 on node was9aNode01.
Parameters for administering IHS web server can also be updated using wsadmin script or admin console.
Web server definition for webserver1 is created.

Start computing the plugin properties ID.
Plugin properties ID is computed.

Start updating the plugin install location.
Plugin install location is updated.

Start updating the plugin log file location.
Plugin log file location is updated.

Start updating the RemoteConfigFilename location.
Plugin remote config file location is updated.

Start updating the RemoteKeyRingFileName location.
Plugin remote keyring file location is updated.

Start saving the configuration.

Configuration save is complete.

Computed the list of installed applications.

Start saving the configuration.

Configuration save is complete.

```

configurewebserve1.sh を実行後、管理コンソールから webサーバーが定義されていることを確認します。
（下図は２台とも定義した後の図です）

![webserver01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310495/a95605ae-2689-54ea-8c77-e49853236fe9.png)


# AP サーバーの作成

次に AP サーバー　（アプリケーションを実行する JVM）を定義します。
ここ以降は、 主に Jython スクリプトを利用します。
WAS の各種定義は管理コンソールから行うことができますが、
その際に Jython スクリプトで実施する方法を出力させることができます。
それを参考に Jython スクリプトを作成　→　実行という形で定義していきます。

```shell
#############################
## variables
cellname="was9aCell01"
nodename="was9aNode01"
nodename2="was9bNode01"
clustername="wascl1"
membername="wassrv1"
templatename="default"
nodegroup="DefaultNodeGroup"
coregroup="DefaultCoreGroup"
resourcescope="cluster"

#############################
## Create Cluster
AdminTask.createCluster('[-clusterConfig [-clusterName '+clustername+' -preferLocal true]]')

#############################
## Create Cluster Member
AdminTask.createClusterMember('[-clusterName '+clustername+' -memberConfig [-memberNode '+nodename+' -memberName '+membername+' -memberWeight 2 -genUniquePorts true -replicatorEntry false] -firstMember [-templateName '+templatename+' -nodeGroup '+nodegroup+' -coreGroup '+coregroup+' -resourcesScope '+resourcescope+']]')

AdminTask.createClusterMember('[-clusterName '+clustername+' -memberConfig [-memberNode '+nodename2+' -memberName '+membername+' -memberWeight 2 -genUniquePorts true -replicatorEntry false]]')

AdminConfig.list('ServerCluster', AdminConfig.getid( '/Cell:'+cellname+'/'))

#############################
## Save & Sync
AdminConfig.save()
AdminNodeManagement.syncActiveNodes()

#############################
## End

```

これに関する詳細は、書きだしたらきりがないため割愛しますが、
大きな流れとしては、以下のようになります。

1. 変数等の設定
2. AdminTask による WAS の定義設定
3. 設定の保存
4. 各ノードへの同期

Jython について詳しく知りたい場合、「[Jython での wsadmin スクリプトの使用](
https://www.ibm.com/support/knowledgecenter/ja/SSAW57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/cxml_jython.html)」 を参照ください。


作成した jython スクリプトを WAS に投入するには wsadmin コマンドを利用します。（Dmgr が起動している必要があります）
書式は以下の通りです。

```shell
./wsadmin.sh [
  -lang jython \
  -conntype SOAP \
  -host Dmgr稼働ホスト名 \
  -user 管理ユーザー名 \
  -password 管理ユーザーのパスワード \
  -profileName APサーバー用プロファイル名 \
  -f Jythonスクリプトファイルパス
```

実際には以下の通りです。

```shell
# cd /usr/IBM/WebSphere/AppServer/bin
# ./wsadmin.sh -lang jython -conntype SOAP -host was9a -user wasadmin -password wasadmin -profileName Custom01 -f /mnt/IBM/work/createClsuter_was9.jy

WASX7209I: ノード was9aCellManager01 のプロセス "dmgr" に、SOAP コネクターを使用して接続しました。プロセスのタイプは DeploymentManager です。
---------------------------------------------------------------
 AdminNodeManagement:        Synchronize the active nodes
 Usage: AdminNodeManagement.syncActiveNodes()
 Return: If the command is successfully invoked, a value of 1 is returned.
---------------------------------------------------------------

was9aNode01
was9bNode01

```

作成完了後、まずクラスターができていることを管理コンソールで確認します。

![Cluster01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310495/aedcf2f1-ce67-f336-5b39-2a18dd89c979.png)

次に AP サーバーができていることを確認します。

![APServer01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310495/a63ed7db-609d-521d-e0eb-f6d993733b7f.png)

これで AP サーバーまでの作成が完了です。

---

これまで、３回にわたって GUI が使えない状況（または、大量に導入するなど GUI では不便な場合）に
対応できるように、コマンドラインでの導入を説明しました。
また、機会があれば WAS に限らずいろいろと書いていければと思います！

[←前回：WAS ND v9 Traditional をコマンドラインで入れてみた ～ その２](https://qiita.com/shimauma999/items/613366e228b55a4d0faf)

# 参考
■pct ツールを使用した Web サーバー・プラグインの構成
https://www.ibm.com/support/knowledgecenter/ja/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/tins_pctcl_using.html

■Jython での wsadmin スクリプトの使用
https://www.ibm.com/support/knowledgecenter/ja/SSAW57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/cxml_jython.html



----