前回、WebLogic Server をインストールしました。
最新の WebLogic Server インストール方法はこちらを参考してください。
【Linux】WebLogic Server 12c のインストール手順
カスタムキーストアを設定して SSL 接続をする手順はこちらです。
WebLogic Server 12c 環境でキーストアを「カスタム・アイデンティティとカスタム信頼」にして SSL 接続をする手順
今回は「CentOS 6」用の WebLogic Server 起動スクリプト作成&自動起動設定、「CentOS 7」用の WebLogic Server の自動起動設定をします。
(CentOS 6 と 7 では設定が異なります)
その結果、
- OS の再起動時に自動的に WebLogic Server が起動する
- 「service(CentOS 6)」コマンドや「systemctl(CentOS 7)」コマンドで起動・停止・再起動・状態確認ができる
ようになります。
【CentOS 6, 7 共通】起動時にアカウントとパスワードを読み込む
起動スクリプトを設定する前に、最初に「アカウント」と「パスワード」の問題を解決しておきます。
WebLogic を「本番モード」でインストールした場合、WebLogic を起動するたびに「アカウント」と「パスワード」の入力が求められます。
しかし起動スクリプトなので入力できません。
その場合は「boot.properties」ファイルを作成し、WebLogic 起動時に「アカウント」と「パスワード」を自動で読み込ませます。
GUI画面上より端末を起動して以下のコマンドを実行して GUI のエディタを起動します。
# mkdir -p /home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/security ← 「boot.properties」ファイルを格納するフォルダを作成します。 # cd /home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/security # gedit boot.properties ← gedit コマンドを実行すると GUI のエディタが起動します。 |
下図のように GUI のエディタが起動するので以下の2行を追加して「保存」をクリックします。
username=weblogic
password=xxxx
再度 boot.properties を確認するとハッシュ化されていることが分かります。
$ cat boot.properties |
boot.properties ファイルとは?
ここで「boot.properties」ファイルについて補足します。
boot.propertiesファイルは WebLogic Server が起動するために利用する「アカウント」と「パスワード」が記載されているファイルです。
「開発モード」は「アカウント」と「パスワード」は不要ですが、「本番モード」は「アカウント」と「パスワード」が必要です。
しかし、WebLogic Server を起動するたびにコンソールから「アカウント」と「パスワード」を入力するのは難しいです。
そこで「boot.properties」ファイルにあらかじめ記述することで、コンソール上から「アカウント」と「パスワード」を入力する必要がなくなります。
しかも「アカウント」と「パスワード」も上記のように、「{AES}yfXl5MRd1YyWAhf6tDMZUL+vbU3b9QWkIGH6SEkLLWI=」のように暗号化されるのでセキュリティ的にも安心です。
暗号化されるタイミングは起動時です。
「{AES}」とありますように AES で暗号化されます。(10.3.1以降)
10.3.0以前は「3DES」だったようです。
※WebLogic 10.3 がリリースされたのは2008年8月です。
【CentOS 6】WebLogic 起動スクリプト
CentOS 6 用の起動スクリプト「weblogic」を準備します。
/etc/init.d ディレクトリ配下に配置することにより、OS 起動時に自動起動できるようにします。
「chkconfig 345」で分かりますように、ランレベル「3,4,5」で起動します。
# cd /etc/init.d |
「vi weblogic」コマンドを実行して、下記の起動スクリプトを作成します。
※赤文字のコメントは外してください。
- WEBLOGIC_LOCK
- WEBLOGIC_HOME
- WEBLOGIC_OWNER
の環境変数は適宜環境に合せて修正します。
#!/bin/sh WEBLOGIC_LOCK=/var/lock/weblogic case “$1” in echo “Starting WebLogic:” touch $WEBLOGIC_LOCK echo “Stoping BEA WebLogic:” rm -f $WEBLOGIC_LOCK exit 0 |
上記の起動スクリプトは以下のサイトを参考にしました。
ありがとうございます。
http://java6.blog117.fc2.com/blog-entry-25.html
weblogic 起動スクリプトに実行権限を与えます。
# chmod +x weblogic |
以上で起動スクリプトの準備は完了です。
【CentOS 6】WebLogic のサービス化手順
起動スクリプト weblogic を作成したので chkconfig コマンドを実行してサービス化をします。
# chkconfig –add weblogic |
正常にサービス化されたのか確認します。
# chkconfig
# ls -l /etc/rc3.d/ lrwxrwxrwx. 1 root root 18 8月 3 22:01 2017 S98weblogic -> ../init.d/weblogic ← 各ランレベルのディレクトリ配下に |
上記手順で起動スクリプトがサービス化されました。
【CentOS7】WebLogic のサービス化手順
続いて「CentOS 7」の WebLogic のサービス化手順です。
CentOS 6 では /etc/init.d/weblogic のスクリプトを作成しましたが、CentOS 7 では「startWebLogic.sh」「stopWebLogic.sh」を systemd に登録することでサービス化します。
そのため、CentOS 6 のような起動スクリプトを作りません。
スクリプトを確認する
WebLogic をインストールすると自動的に作成される「startWebLogic.sh」「stopWebLogic.sh」を利用します。
スクリプトの場所を確認します。
※適宜、自サーバー環境に合わせて確認してください。
startWebLogic.sh、stopWebLogic.sh があるディレクトリ(本環境の場合) /home/weblogic/wls12212/user_projects/domains/base_domain/bin/startWebLogic.sh |
/etc/systemd/system ディレクトリの下に Unit 定義ファイルを作る
次に「/etc/systemd/system」ディレクトリの下に Unit 定義ファイル(ユニット定義ファイル)を作成します。
# vi /etc/systemd/system/weblogic.service [Unit] [Service] [Install] |
Unit 定義ファイル(ユニット定義ファイル)とは?
ユニット定義ファイルとは、ユニットを定義するファイルです。
ユニットとは、「起動するサービスの1単位」を言います。
CentOS6 までは起動スクリプトでサービスを起動していました。
CentOS7 からは起動するサービスを「ユニット」単位で制御(コントロール)します。
CentOS6 までの起動スクリプトと何が違うのかというと、「ユニット」は並行で起動処理ができます。
そのため、起動速度が速くなりました。
【補足】Type の種類
上記の「Type」は「Type = simple」と、「simple」が指定されています。
他にも様々な種類のタイプが指定できます。
- Type = simple → デフォルトの値です。ExecStartで起動するプロセスがメインになります。また、起動するプロセスはフォアグラウンドで実行を継続します。コマンドを実行したらすぐに起動完了と判定します。
- Type = forking → 子プロセスをメインプロセスとしてバックグラウンドで起動します。親プロセスが終了したタイミングを起動完了と判断します。
- Type = oneshot → simple と似ていますが、プロセスを実行したら、ユニットが起動する前に終了します。
- Type = notify → これも simple と似ていますが、systemdのライブラリ関数「sd_notify()」で送信された後に起動します。
systemd の Restart の種類
以下の種類の「Restart」があります。
Restart は、サービスが終了してしまった場合に再起動する条件を指定します。
「Restart」は今までの「respawn」に該当します。
- Restart = always ← 常に再起動を行います。
- Restart = on-abort ← キャッチしていないシグナルを受信してサービスが停止した場合に再起動します。
- Restart = on-failure ← 0(ゼロ)以外の終了コードでサービスが停止した場合に再起動します。
- Restart = on-success ← 0(ゼロ)の終了コードでサービスが停止した場合に再起動します。
- Restart = no → サービスの再起動は行いません。
UnitがServiceとして認識されたか確認する手順
以下のコマンドを実行して、サービス名が表示されれば正常に登録されています。
# systemctl list-unit-files –type=service wacom-inputattach@.service static |
サービスを「enable」に変更して起動する
サービスを「enable」に変更して確認します。
# systemctl enable weblogic.service # systemctl list-unit-files | grep weblogic |
weblogic サービスを起動します。
# systemctl start weblogic.service 8月 02 18:42:53 testcnt07 startWebLogic.sh[20838]: <2017/08/02 18時42分53秒 JST> <Notice> <Server> <BEA-002613> <チャネル”DefaultSecure[4]” は、現在fe80:0:0:0:ffb2:5533:27b1:fa33: 7002でプロトコルiiops, t3s, ldaps, httpsをリスニングしています。> |
【補足】WebLogic のログはどこにあるのか?
WebLogic のログは本環境では以下のディレクトリにあります。
※上記で確認した「systemctl status weblogic -l」のログよりも詳細なログが確認できます。
/home/weblogic/wls12212/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.log |
まとめ
起動スクリプトを作成することで各サービスがどのように起動しているのかイメージできたと思います。
CentOS 7 になり systemd を利用することになり、シンプルではなくなりましたが、細かくサービスの動作を指定できるようになりました。
コメント