【Linux】WebFOCUSの関連サービスを自動起動にできますか?

サンプルコンテンツ

WebFOCUSバージョン
9.0.3

Linuxサーバーを再起動するとWebFOCUSの関連サービスが止まっちゃう!
どうにか自動起動にする方法はないかな、、

Resource Analyzerでは、アーカイブ前のデータおよびリポジトリデータベースで蓄積したログデータを検索するためのビジネスビューが用意されています。

概要

本記事ではLinux環境におけるWebFOCUS関連サービスの自動起動にするためのサンプルファイルと設定方法を記述します。

サンプルファイル

サンプルは以下です。

※アップロードの都合上、ダウンロードファイルは tools.tar.zip になっています。
 zip を解凍することで、tools.tar.gz を取得することができます。

▼格納ファイル

  • logs フォルダ
  • webfocus.service
  • wf_ctrl.sh
  • wfmain

検証環境

本記事では下記の環境で検証を行っています。

  • WebFOCUS:version9.0.3
    • WebFOCUS Client Gen 8
    • Reporting Server Gen 2363
  • OS:Red Hat Enterprise Linux 8.4

前提

  • systemd を使用した自動起動設定のため、Red Hat 系OS の バージョン7 以上でしか利用できません
  • 使用するアプリケーションサーバはWebFOCUS 付属のTomcat であることを前提にシェルスクリプトを作成しています
  • Web サーバ側のサービス制御は行っておりません
  • 本記事に添付するtools はサンプルのため、お客様にて環境に合わせて値を修正の上、検証をお願いいたします

設定手順

ファイルの配置と各種値変更 ※以下作業はWebFOCUSのインストールユーザーで作業

  1. ファイルの配置
    • 自動起動用のサンプル(tools.tar.gz)をibiディレクトリと同一ディレクトリに配置して展開します。
      【例】
       WebFOCUSインストールディレクトリが[/home/webfocus/ibi]の場合は、[/home/webfocus/]に配置
  2. 配置した資材のパーミッションの変更
    • 配置した[webfocus.service]と[wf_ctrl.sh]に対して実行権限を付与します。
      【例】
       chmod +x webfocus.service wf_ctrl.sh
  3. [wf_ctrl.sh]の編集
    • WebFOCUSをインストールしたユーザーが webfocus 以外の場合は、下記値を変更します。
      <wf_ctrl.shの4行目>
       WF_USER=webfocus
    • 保有ライセンス、及び、導入環境に応じて、wf_ctrl.sh にて制御するWebFOCUSのコンポーネントを指定します。
      <wf_ctrl.shの26行~29行目>
       DERBY_STARTUP=0 ※1
       TOMCAT_STARTUP=1
       CASTER_STARTUP=1 ※2
       SOLR_STARTUP=1
       0: 制御しない 1: 制御する
      ※1:WebFOCUSのリポジトリデータベースとしてWebFOCUSにバンドルされているApache Derby を利用している場合は、[DERBY_STARTUP]の値を1 に変更してください
      ※2:保有ライセンスにWebFOCUSのレポート配信機能(Report Caster)が含まれていない場合は[CASTER_STARTUP]の値を 0 に変更してください
    • サービス停止処理を実行した際のプロセス強制停止までのタイムアウト時間を変更する場合は、下記の値を変更してください
      <wf_ctrl.shの30行目>
       MAX_CNT=60
      ※値は 秒単位 です
  4. [webfocus.service]の編集
    • WebFOCUSサービス起動・停止コマンドの実行ユーザーが webfocus 以外の場合は、下記各値を変更します
      <webfocus.servicesの6行目>
       User=webfocus
    • [wf_ctrl.sh] を [/home/webfocus/tools] 以外へ配置した場合は、下記の値を変更します。
      <webfocus.servicesの7~8、10行目>
       ExecStart=/home/webfocus/tools/wf_ctrl.sh start
       ExecStop=/home/webfocus/tools/wf_ctrl.sh stop
       PIDFile=/home/webfocus/tools/logs/wfmain.pid
      ※[/home/webfocus]を資材を配置したディレクトリへ変更してください

OSサービス関連の設定

※以下作業は特権ユーザーで実行してください

  1. webfocus.service を下記のように[/etc/systemd/system/]配下へコピーします。
    【例】
     cp -p /home/webfocus/tools/webfocus.service /etc/systemd/system/webfocus.service

  2. 下記にてサービスの自動起動設定を有効化します。
    systemctl enable webfocus
    ※自動起動設定が行われているかを下記にて確認可能です。
     systemctl is-enabled webfocus


  3. 以下の各種コマンドにて動作確認を実施してください。
     起動     :systemctl start webfocus
     停止     :systemctl stop webfocus
     再起動    :systemctl restart webfocus
     ステータス確認:systemctl status webfocus

補足

OS側での自動起動ではなく、手動で各種サービスを起動・停止したい場合は、手順4-2は割愛してください。 手動での確認方法は下記の通りです。

<サービス全体>
 WebFOCUSサービス全体を起動  :wf_ctrl.sh start
 WebFOCUSサービス全体を停止  :wf_ctrl.sh stop
 WebFOCUSサービス全体の状態確認:wf_ctrl.sh status
 WebFOCUSサービス全体の再起動 :wf_ctrl.sh restart

<edastartのみ>
 起動     :/home/webfocus/tools/wf_ctrl.sh start eda
 停止     :/home/webfocus/tools/wf_ctrl.sh stop eda
 ステータス確認:/home/webfocus/tools/wf_ctrl.sh status eda
 再起動    :/home/webfocus/tools/wf_ctrl.sh restart eda

<derbyのみ>
 起動     :/home/webfocus/tools/wf_ctrl.sh start derby
 停止     :/home/webfocus/tools/wf_ctrl.sh stop derby
 ステータス確認:/home/webfocus/tools/wf_ctrl.sh status derby
 再起動    :/home/webfocus/tools/wf_ctrl.sh restart derby

<tomcatのみ>
 起動     :/home/webfocus/tools/wf_ctrl.sh start tomcat
 停止     :/home/webfocus/tools/wf_ctrl.sh stop tomcat
 ステータス確認:/home/webfocus/tools/wf_ctrl.sh status tomcat
 再起動    :/home/webfocus/tools/wf_ctrl.sh restart tomcat

<ReportCasterのみ>
 起動     :/home/webfocus/tools/wf_ctrl.sh start caster
 停止     :/home/webfocus/tools/wf_ctrl.sh stop caster
 ステータス確認:/home/webfocus/tools/wf_ctrl.sh status caster
 再起動    :/home/webfocus/tools/wf_ctrl.sh restart caster

【wf_ctrl.shの仕様】

処理仕様
プロファイル$WF_HOMEの.bash_profileを読み込む
実行ユーザチェックwf_ctrl.sh:$WF_USERのユーザID以外は実行不可
ログファイルサイズwf_ctrl.sh実行時、[LOGLIMIT]に指定したサイズ以上の場合はwf_ctrl.log.oldへ退避
プロセスチェック
(derby)
derby.system.homeを$IBI_HOME/derbyとして起動されているプロセス0以外、
かつ、[DERBY_PORT] のポートがLISTENとなっている場合は正常
プロセスチェック
(edastart)
edap*、tscom3.out、jscom3c.out、fds.outのプロセスチェックとedastartの実行結果をチェック
プロセスチェック
(tomcat)
$TOMCAT_HOMEを含むプロセスが0以外の場合は正常
プロセスチェック
(caster)
$CASTER_HOMEを含むプロセスが0以外の場合は正常
プロセス停止
(derby)
stop.sh実行後、待機秒経過した場合は、該当プロセスのソフトKILLを実行。 ソフトKILLがきかない場合はハードKILLを実行
プロセス停止
(edastart)
edastart⇒killall,stop,clear実行後、待機秒経過した場合は、該当プロセスのソフトKILLを実行。
ソフトKILLがきかない場合はハードKILLを実行。
プロセス停止
(tomcat)
shutdown.sh実行後、待機秒経過した場合は、該当プロセスのソフトKILLを実行。 ソフトKILLがきかない場合はハードKILLを実行
プロセス停止
(caster)
shutdown.sh実行後、待機秒経過した場合は、該当プロセスのソフトKILLを実行。 ソフトKILLがきかない場合はハードKILLを実行
多重起動プロセスが既に起動している場合は起動をスキップ
戻り値正常:0 (実行する処理がすべて正常終了した場合) 異常:1 (1つでもエラーが出た場合)

【systemd連携】

wf_ctrl.shでの制御とsystemctlでの制御は連動しないためwf_ctrl.shからプロセス制御を実行した場合、プロセスが停止した認識となってしまうため、systemd制御用のダミープロセス(wfmain)を起動する仕様となっています。
wfmainの起動停止はsystemdと連携することによって、systemctlと連動します。

【免責事項】

株式会社アシストは、本書の記載事項に関していかなる保証もいたしません。
また、本書の記載内容に起因する問題についても責任を負いかねます。

▼本資料の内容について
本資料に記載の技術情報およびプログラムは、本書に記載されている前提に基づき、初期動作のみ確認をしております。
システム環境の設定変更や導入製品のバージョンアップを実施した場合などは考慮されていません。
初期動作確認後、システム環境変更後の動作については、保証いたしませんので、ご了承ください。

▼プログラム改変について
プログラムの改変は自由に実施していただいて問題ありません。新規要件やバグ修正などが発生した場合には、お客様の責任範囲内での修正を実施いただくようお願いします。

▼サポートについて
本資料に記載している各種サンプル設定ファイル内容に関するご質問や、JavaScript,CSS,HTMLなどお客様にて作成のプログラムに関するお問い合わせは、弊社サポートセンターで受け付けることができません。WebFOCUSの動作に関するお問い合わせに限らせていただきます。

Linux環境でもWebFOCUSの関連サービスは自動起動できるんだね!
メンテナンスなどでサーバーを再起動する際に、WebFOCUSのサービスも自動であがって問題なさそうであれば実装してみよう!!