起動・停止スクリプトを極める

11,218 views

Published on

WebLogicの起動・停止には様々な方法があります。スクリプトによる起動・停止は基本的な方法ですが、意外と奥が深いものです。基本的な部分から、応用編として様々なテクニックまで紹介します。

伊藤忠テクノソリューションズ株式会社 ソフトウェアサービス本部 ミドルウェアサービス部
山田 貴裕 氏

  • Be the first to comment

起動・停止スクリプトを極める

  1. 1. 第32回 WebLogic Server勉強会@東京 起動・停止スクリプトを極める ソフトウェアサービス本部 ミドルウェアサービス部 山田 貴裕 2013/1/24 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  2. 2. 自己紹介 • 自己紹介 – 山田 貴裕 (Twitter: @yamadamn) – 伊藤忠テクノソリューションズ株式会社(CTC) • ソフトウェアサービス本部 ミドルウェアサービス部 所属 – Java EE開発者やDBAを経て、ミドルウェアのサポートエンジニアに • Oracle Fusion Middleware が主担当 – WebLogic Server, Coherence など • 大規模案件にも従事し、設計や構築を担当 –Oracle ACE (Middleware & SOA) • ミドルウェア分野では日本で2人目 • この勉強会を通じて、Oracle ACEに推薦2 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  3. 3. おことわり • 発表する内容は個人の見解であり、所属する組織の公式な 見解ではありません。 • 資料の内容は正確を期するよう注意しておりますが、妥当性 や正確性について保証するものではありません。 • 個人の(限られた)経験に基づくものですので、様々な環境に 適したものではありません。3 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  4. 4. アジェンダ • 起動・停止スクリプトを学ぶ必要性 • 起動・停止スクリプトの構造と拡張ポイント • 起動スクリプトのポイント • 停止スクリプトのポイント • 起動・停止スクリプト共通のポイント4 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  5. 5. アジェンダ • 起動・停止スクリプトを学ぶ必要性 • 起動・停止スクリプトの構造と拡張ポイント • 起動スクリプトのポイント • 停止スクリプトのポイント • 起動・停止スクリプト共通のポイント5 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  6. 6. 例えばこんな理由 • WebLogic Server(WLS)を動作させる基本的な方法 – 他の起動・停止方法がうまく動かない場合の切り分け 「管理対象サーバ起動方法の選定」を参照 http://www.slideshare.net/OracleMiddleJP/weblogic-server-13546151 • 本番運用で問題になりがちな部分を防止 – 起動・停止スクリプトには、制御+設定の両側面あり – どのようにカスタマイズするのがよいか習得 • スクリプトの見本・手本としてルールやテクニックを学習 – 例: for %%i in ("%JAVA_HOME%") do set JAVA_HOME=%%~fsi • C:¥Program Files¥Java¥jdk1.7.0_11 → C:¥PROGRA~1¥Java¥JDK17~1.0_1 etc...6 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  7. 7. 対象と環境 • 対象 – WLSのインフラ設計・構築担当者 – WLSの運用管理者 – (WLSの開発担当者) • 環境 – WLS9.x以降 • スクリプトの例はWLS12.1.1だが、大きな構成には変更なし – Unix系OS中心 • スクリプトはBourne Shell(/bin/sh)で記載 • Windowsでもほぼ適用可能(.sh→.cmdに読み替え)7 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  8. 8. アジェンダ • 起動・停止スクリプトを学ぶ必要性 • 起動・停止スクリプトの構造と拡張ポイント • 起動スクリプトのポイント • 停止スクリプトのポイント • 起動・停止スクリプト共通のポイント8 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  9. 9. 起動スクリプトの構造 $DOMAIN_HOME 管理サーバー起動 startWebLogic.sh (互換性・簡易化) $DOMAIN_HOME/bin call startManagedWebLogic.sh 管理対象サーバー起動 call startWebLogic.sh 管理サーバー起動 javaコマンド呼び出し weblogic. read Server setDomainEnv.sh ドメインの環境設定 read commEnv.sh インストール単位の環境設定 $WL_HOME/common/bin9 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  10. 10. 停止スクリプトの構造 $DOMAIN_HOME (ドメイン直下にはなし) $DOMAIN_HOME/bin stopManagedWebLogic.sh 管理対象サーバー停止 call stopWebLogic.sh 管理サーバー停止 javaコマンド呼び出し weblogic.WLST read shutdown.py setDomainEnv.sh ドメインの環境設定 read commEnv.sh インストール単位の環境設定 $WL_HOME/common/bin10 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  11. 11. [補足] スクリプト実行方法の違い • callとreadの違い call read UNIX Windows call 子プロセスとして生成 環境変更をローカライズ • Fork-Exec • SETLOCAL呼び出しあり read カレントシェルに読み込む 環境変更を呼び出し元にも反映 • 「.」(ドット)コマンド • SETLOCAL呼び出しなし WLSのJavaユーティリティを利用 するためのスクリプトであり、内部 例: でcommEnv.shを読み込み、各種 . $WL_HOME/server/bin/setWLSEnv.sh 環境変数を設定する。 – 「.」(ドット)コマンドを利用することによりCLASSPATHやPATHなどが カレントシェルに反映 – bashの場合は、sourceコマンドでも同様11 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  12. 12. 利用する可能性の高い環境変数 環境変数 説明 JAVA_HOME JDKのホームディレクトリ JAVA_VENDOR JDKのベンダー (例: Oracle, Sun, HP, IBM) WL_HOME WLSのホームディレクトリ (例: /opt/oracle/middleware/wlserver_12.1) DOMAIN_HOME ドメインのホームディレクトリ (例: /opt/oracle/middleware/user_projects/domains/base_domain) PRODUCTION_MODE 本番モードの場合はtrueとなり、実行オプションを切り替え config.xmlで実際のモードは設定されるが、併せて変更 JAVA_OPTIONS システムプロパティ(-D<key>=<value>)やGCログ用オプションなど、 通常のJava実行オプションを設定 USER_MEM_ARGS デフォルトで設定されるメモリ用オプション(MEM_ARGS)を上書き CLASSPATH クラスパスを設定するが、付加する位置を制御するために、 PRE_CLASSPATHやPOST_CLASSPATHも利用可能 SERVER_NAME WLSを識別するサーバー(インスタンス)名 ADMIN_URL 接続先となるサーバー(通常は管理サーバー)のURL (例: t3://admin_host:7001)12 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  13. 13. カスタマイズ対象とするスクリプト ディレクトリ スクリプト 変更 説明 $DOMAIN_HOME startWebLogic.sh × 基本的にはカスタマイズ対象外 $DOMAIN_HOME/bin startManagedWebLogic.sh △ startWebLogic.shで集約可能 startWebLogic.sh ○ 起動時の制御・設定を集約 stopManagedWebLogic.sh △ stopWebLogic.shで集約可能 stopWebLogic.sh ○ 停止時の制御・設定を集約 setDomainEnv.sh ○ 起動・停止時に共通で利用する 設定を集約 $WL_HOME/common/bin commEnv.sh △ ドメイン共通・インストール全体 で利用する設定を集約 ※全体に影響が及ぶので注意 • インスタンス単位のオリジナルスクリプトを用意し、そこから start(Managed)WebLogic.sh, stop(Managed)WebLogic.sh を呼び出す形式にするのもあり • インフラ設定とアプリ設定を分けるためなどに、setDomainEnv.shから 更にファイルを読み込むのもあり 例: test -f "bin/${SERVER_NAME}.conf" && . "bin/${SERVER_NAME}.conf"13 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  14. 14. アジェンダ • 起動・停止スクリプトを学ぶ必要性 • 起動・停止スクリプトの構造と拡張ポイント • 起動スクリプトのポイント • 停止スクリプトのポイント • 起動・停止スクリプト共通のポイント14 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  15. 15. ヒープサイズの設定 • USER_MEM_ARGS環境変数を設定 – WLS本体のヒープサイズは、インスタンス単位の起動スクリプトや startWebLogic.sh内で設定 (特にWLS10.3.3以降) • setDomainEnv.shは起動時・停止時ともに呼ばれるため (例: インスタンス単位の起動スクリプトでのヒープ設定) USER_MEM_ARGS="-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m" export USER_MEM_ARGS ${DOMAIN_HOME/bin/startManagedWebLogic.sh ManagedServer_1 "t3://admin_host:7001" (例: startWebLogic.shでのヒープ設定) case "${SERVER_NAME}" in ManagedServer_1) USER_MEM_ARGS="-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m" ;; *) USER_MEM_ARGS="-Xms512m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=256m" ;; esac export USER_MEM_ARGS15 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  16. 16. GCログの取得 • GCログ用オプションをJAVA_OPTIONS環境変数に設定 HotSpotでよく利用するGCログ用オプション オプション 説明 -verbose:gc GC情報を出力(基本) -Xloggc:<file> GC情報を指定されたファイルに出力 -XX:+PrintGCDateStamps タイムスタンプ(日時)を出力 6u3までは -XX:+PrintGCTimeStamps(起動からの経過時間)のみ -XX:+PrintGCDetails GCの詳細情報を出力 -XX:+UseGCLogFileRotation GCログのローテーションを有効化 (7u2, 6u34以降) -XX:NumberOfGCLogFiles=n -XX:GCLogFileSize=size も指定 JRockitでよく利用するGCログ用オプション オプション 説明 -verbose:gc -Xverbose:memoryや-Xverbose:gcでも同じ -XverboseLog:<file> GC情報を指定されたファイルに出力 -XverboseTimeStamp タイムスタンプ(日時)を出力 ローテーション代用: jrcmd <PID> verbosity filename=<new_file>16 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  17. 17. コンソール(標準出力)ログの取得 • JVMとしての出力を取得するために必要 – スレッドダンプの取得やOutOfMemoryError(OOME)などを検知 • WLS_STDOUT_LOGやWLS_STDERR_LOG環境変数を定義することで -Dweblogic.Stdout=<file> -Dweblogic.Stderr=<file> が設定されるが、 System.out, System.errの出力先を変更するのみ – サーバーログの[標準(エラー)出力のロギングのリダイレクトを有効化]も同様 – WLS_REDIRECT_LOG環境変数で出力するログを設定可能 • 必要に応じて追記に変更(>>"${WLS_REDIRECT_LOG}" 2>&1) • 別の方法で標準出力・エラー出力をリダイレクトさせるのもあり – 例: startWebLogic.sh 2>&1 | rotatelogs -l console.log.%Y%m%d 86400 (startWebLogic.sh抜粋) if [ "${WLS_REDIRECT_LOG}" = "" ] ; then : ${JAVA_HOME}/bin/java ~ ${SERVER_CLASS} else echo "Redirecting output from WLS window to ${WLS_REDIRECT_LOG}" ${JAVA_HOME}/bin/java ~ ${SERVER_CLASS} >"${WLS_REDIRECT_LOG}" 2>&1 fi17 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  18. 18. ノードマネージャ経由での起動スクリプトの利用 • nodemanager.propertiesのStartScriptEnabledを変更 StartScriptEnabled=false (WLS9.0-WLS11g デフォルト) NM WLS java ~ java ~ weblogic.NodeManager weblogic.Server StartScriptEnabled=true (WLS12c デフォルト) NM startWebLogic.sh WLS java ~ java ~ weblogic.NodeManager StartScriptName weblogic.Server に設定されたスクリプト Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  19. 19. 管理対象サーバー起動時の管理サーバーとの接続 • 明示的に管理サーバーのURLを指定 startManagedWebLogic.sh <server> t3(s)://<admin_host>:<port> SERVER_NAME(必須) ADMIN_URL(省略可) ※第二引数を省略すると、デフォルトで「http://<admin_host>:<port>」 ⇒若干、管理サーバーとの通信の安定性に懸念 (startManagedWebLogic.sh抜粋) ADMIN_URL="http://admin_host:7001" この箇所を変更することもできる。 : 管理サーバーのURLを切り替える if [ "$1" = "" ] ; then 必要がある場合、引数で渡す方が if [ "${ADMIN_URL}" = "" ] ; then 制御しやすい。 usage $0 exit fi else ADMIN_URL="$1" shift fi19 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  20. 20. [参考] startWebLogic.shのみで管理対象サーバーを起動する方法 • SERVER_NAMEとADMIN_URL環境変数を別途定義 – ノードマネージャ経由(StartScriptEnabled=true)での起動に利用 – startManagedWebLogic.shは呼び出しを簡易化しているのみ (startManagedWebLogic.sh抜粋) if [ "$1" = "" ] ; then if [ "${SERVER_NAME}" = "" ] ; then usage $0 exit fi SERVER_NAMEの設定 else SERVER_NAME="$1" shift fi if [ "$1" = "" ] ; then if [ "${ADMIN_URL}" = "" ] ; then usage $0 exit fi ADMIN_URLの設定 else ADMIN_URL="$1" shift fi20 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  21. 21. [Tips] startWebLogic.shの引数 • JAVA_OPTIONS環境変数以外でも、startWebLogic.shを 引数付きで呼び出すことで、実行オプションを設定可能 例: startWebLogic.sh -Dkey1=value1 -Dkey2=value2 例: startManagedWebLogic.sh ManagedServer_1 t3://admin_host:7001 -Dkey1=value1 – startManagedWebLogic.sh経由では引数の数に制限があること などから、基本的にはJAVA_OPTIONS環境変数を利用 (setDomainEnv.sh抜粋) while [ $# -gt 0 ] 特殊な引数としてnodebugや do production, doExitなども指定 case $1 in できるが、ほぼ過去互換性の nodebug) debugFlag="false" ためであり、それほど利用する export debugFlag ことはない。 ;; : *) PROXY_SETTINGS環境変数 PROXY_SETTINGS="${PROXY_SETTINGS} $1" export PROXY_SETTINGS に設定され、startWebLogic.sh ;; 内でjava ~ weblogic.Serverの esac 呼び出し時に渡される。 shift done21 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  22. 22. [Tips] クラス・キャッシュの有効化 • クラス・キャッシュを有効化し、起動時間を高速化 – WLS10.3.3(10.3.4で正式)から利用でき、開発モードのみサポート – CLASS_CACHE環境変数をtrueに設定して実行 • 通常のメインクラスであるweblogic.Serverに代わって、 com.oracle.classloader.launch.Launcherが起動 (startWebLogic.sh抜粋) classCaching() { echo "Class caching enabled..." JAVA_OPTIONS="${JAVA_OPTIONS} -Dlaunch.main.class=${SERVER_CLASS} -Dlaunch.class.path="${CLASSPATH}" -Dlaunch.complete=weblogic.store.internal.LockManagerImpl -cp ${WL_HOME}/server/lib/pcl2.jar" export JAVA_OPTIONS SERVER_CLASS="com.oracle.classloader.launch.Launcher" } : if [ "${CLASS_CACHE}" = "true" ] ; then classCaching fi22 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  23. 23. アジェンダ • 起動・停止スクリプトを学ぶ必要性 • 起動・停止スクリプトの構造と拡張ポイント • 起動スクリプトのポイント • 停止スクリプトのポイント • 起動・停止スクリプト共通のポイント23 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  24. 24. 停止スクリプトの仕組み • 停止スクリプトはshutdown.pyを作成し、WLSTで実行する ことにより実現 (stopWebLogic.sh抜粋) echo "connect(${userID} ${password} url=${ADMIN_URL}, adminServerName=${SERVER_NAME})" >>"shutdown.py" echo "shutdown(${SERVER_NAME},Server, ignoreSessions=true)" >>"shutdown.py" echo "exit()" >>"shutdown.py" echo "Stopping Weblogic Server..." ${JAVA_HOME}/bin/java -classpath ${FMWCONFIG_CLASSPATH} ${MEM_ARGS} ${JVM_D64} ${JAVA_OPTIONS} weblogic.WLST shutdown.py 2>&124 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  25. 25. 停止方法の考慮 • デフォルトでは処理中の実行スレッドがあると待機 ⇒force=trueやtimeOut=n(秒)引数の指定を考慮 (例: force引数を指定) echo "shutdown(${SERVER_NAME},Server, ignoreSessions=true, force=true)" >>"shutdown.py" • OSコマンドでの停止も要検討 – kill -SIGTERM (SIGINT[Ctrl+C]でも基本的に同様) • force=trueと同様だが、JVMのシャットダウンフックを利用 – kill -SIGKILL (Windowsではtaskkill /F /PID) • 最終手段であり、ロックファイルが残るなどの弊害が生じる可能性あり (例: SIGTERMでの停止) pid=`ps -eo pid,args | grep java | grep weblogic.Server | grep "${SERVER_NAME}" | awk {print $1}` if [ "${pid}" != "" ]; then echo "SIGTERM: WebLogic Server Process (name=${SERVER_NAME}, pid=${pid})" kill -SIGTERM ${pid} fi25 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  26. 26. 同一ドメイン・ホストでの同時停止 • 同一ドメイン・ホスト内での同時実行 – shutdown.pyが同時に書き込まれ、失敗する可能性あり ⇒サーバー単位に作成されるように変更 (例: shutdown.pyをサーバー単位に変更) shutdown_script="shutdown-${SERVER_NAME}.py" : echo "connect(${userID} ${password} url=${ADMIN_URL}, adminServerName=${SERVER_NAME})" >>"${shutdown_script}" echo "shutdown(${SERVER_NAME},Server, ignoreSessions=true)" >>"${shutdown_script}" echo "exit()" >>"${shutdown_script}" echo "Stopping Weblogic Server..." ${JAVA_HOME}/bin/java -classpath ${FMWCONFIG_CLASSPATH} ${MEM_ARGS} ${JVM_D64} ${JAVA_OPTIONS} weblogic.WLST "${shutdown_script}" 2>&126 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  27. 27. 管理対象サーバー停止時の接続先 • 明示的に各サーバー自身のURLを指定 stopManagedWebLogic.sh <server> t3(s)://<managed_host>:<port> SERVER_NAME(必須) ADMIN_URL(省略可) ※第二引数を省略すると、管理サーバー経由で停止 ⇒管理サーバーが正常に稼働していないと停止不可 (stopManagedWebLogic.sh抜粋) if [ "$1" = "" ] ; then if [ "${ADMIN_URL}" = "" ] ; then デフォルトでは管理サーバー ADMIN_URL="t3://admin_host:7001" のURLが埋め込まれている。 export ADMIN_URL 管理対象サーバーが一つしか fi ないのであれば、この部分を else 変更することもできるが、引数 ADMIN_URL="$1" export ADMIN_URL で渡したほうが拡張しやすい。 shift fi27 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  28. 28. 管理ポートなどSSLを利用した場合の停止 • SSL用に接続先プロトコル・ポートを変更 (stopWebLogic.sh抜粋) if [ "$1" != "" ] ; then ADMIN_URL="$1" shift else if [ "${ADMIN_URL}" = "" ] ; then ADMIN_URL="t3s://admin_host:9002" SSLポートに接続するため、 fi ADMIN_URLを変更する。 fi • SSL用のJAVA_OPTIONS環境変数を指定 – 「WLST入門」を参照 http://www.slideshare.net/OracleMiddleJP/wlst (例: stopWebLogic.shでカスタムキーストアを指定) JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.security.TrustKeyStore=CustomTrust" JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.security.CustomTrustKeyStoreFileName=$path_to_jks" : ${JAVA_HOME}/bin/java -classpath ${FMWCONFIG_CLASSPATH} ${MEM_ARGS} ${JVM_D64} ${JAVA_OPTIONS} weblogic.WLST shutdown.py 2>&128 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  29. 29. アジェンダ • 起動・停止スクリプトを学ぶ必要性 • 起動・停止スクリプトの構造と拡張ポイント • 起動スクリプトのポイント • 停止スクリプトのポイント • 起動・停止スクリプト共通のポイント29 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  30. 30. JDKの変更(1) • WLSを動作させるためのJDKは、setDomainEnv.sh内の JAVA_HOMEとJAVA_VENDOR環境変数を変更 BEA_JAVA_HOME="/opt/java/jrockit-jdk1.6.0_37-R28.2.5-4.1.0" export BEA_JAVA_HOME SUN_JAVA_HOME="/opt/java/jdk1.7.0_11" export SUN_JAVA_HOME if [ "${JAVA_VENDOR}" = "Oracle" ] ; then JAVA_HOME="${BEA_JAVA_HOME}" export JAVA_HOME else if [ "${JAVA_VENDOR}" = "Sun" ] ; then JAVA_HOME="${SUN_JAVA_HOME}" export JAVA_HOME else JAVA_VENDOR="Sun" export JAVA_VENDOR JAVA_HOME="/opt/java/jdk1.7.0_11" export JAVA_HOME fi fi30 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  31. 31. JDKの変更(2) • 32bit⇔64bitを変更する場合やユーティリティ利用時のJDK は、commEnv.shを変更 # Setup SUN_ARCH_DATA_MODEL SUN_ARCH_DATA_MODEL="64" #JAVA_USE_64BIT, true if JVM uses 64 bit operations JAVA_USE_64BIT=true # Reset JAVA_HOME, JAVA_VENDOR and PRODUCTION_MODE unless JAVA_HOME # and JAVA_VENDOR are pre-defined. if [ -z "${JAVA_HOME}" -o -z "${JAVA_VENDOR}" ]; then # Set up JAVA HOME JAVA_HOME="/opt/java/jdk1.7.0_11" # Set up JAVA VENDOR, possible values are #Oracle, HP, IBM, Sun ... JAVA_VENDOR=Oracle # PRODUCTION_MODE, default to the development mode PRODUCTION_MODE="" fi [補足] $WL_HOME/.product.propertiesや$MW_HOME/utils配下のスクリプト にもJAVA_HOMEが埋め込み31 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  32. 32. ユーザーID・パスワードの暗号化 • ユーザーID・パスワードを環境変数や引数で渡すのではなく boot.propertiesを利用 – 「boot.propertiesから見るWebLogic Serverの世界」を参照 http://www.slideshare.net/OracleMiddleJP/bootpropertiesweblogic-server 以下のように環境変数や引数で渡すことも可能だが、非推奨 (startWebLogic.sh抜粋) if [ "${WLS_USER}" != "" ] ; then JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.management.username=${WLS_USER}" fi if [ "${WLS_PW}" != "" ] ; then JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.management.password=${WLS_PW}" fi (stopWebLogic.sh抜粋) userID="username=$1,"; shift; password="password=$1,"; shift (←実際よりかなり簡略化) : echo "connect(${userID} ${password} url=${ADMIN_URL}, adminServerName=${SERVER_NAME})" >>"shutdown.py"32 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  33. 33. [参考] カレントディレクトリの扱い • カレントディレクトリはドメインのホーム($DOMAIN_HOME) – setDomainEnv.sh内で自動的にディレクトリ移動 – user.dirシステムプロパティやファイル作成時に影響 • 推奨できないが、カレントディレクトリを異なる場所に変更したい場合は、 -Dweblogic.RootDirectory=$DOMAIN_HOME を併せて指定 (setDomainEnv.sh抜粋) pushd() pushd(カレントディレクトリを記憶してから移動) { をサポートしないシェルのために簡易的に関数 if [ -z "$1" ] で定義されている。 then 別途、popdも定義されている。 return fi SP=`expr $SP - 1` eval _stack$SP=`pwd` cd $1 return } : pushd ${LONG_DOMAIN_HOME}33 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  34. 34. [Tips] 評価版データベースの利用 • WLS10.3.3以降はDerby、WLS10.3.2まではPointBaseが 評価版DB(デモやサンプル用途)として用意 – 開発用のZIP配布版インストーラには含まれないため、必要時は Supplemental ZIPを入手 – setDomainEnv.sh内でDERBY_FLAGやPOINTBASE_FLAGを trueに設定することで起動・停止スクリプトと連動 (startWebLogic.sh抜粋) if [ "${DERBY_FLAG}" = "true" ] ; then ${WL_HOME}/common/derby/bin/startNetworkServer.sh >"${DOMAIN_HOME}/derby.log" 2>&1 fi (stopWebLogic.sh抜粋) if [ "${DERBY_FLAG}" = "true" ] ; then . ${WL_HOME}/common/derby/bin/stopNetworkServer.sh >"${DOMAIN_HOME}/derbyShutdown.log" 2>&1 echo "Derby server stopped." fi34 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  35. 35. OSアカウントの考慮 • rootでの実行に注意 – 作成されるファイルのオーナーが変更されて、通常アカウントで 実行する際に、起動・停止に失敗 (例: rootユーザー禁止) if [ ${UID} -eq 0 ]; then echo "Please run as a normal user" 1>&2 exit 1 fi – rootで起動する場合(Well-knownポートでリスニング等)、マシン の[バインド後のユーザーID][バインド後のグループID]を指定35 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  36. 36. OS環境(Unix)の設定(1) • 言語環境の明示指定 – 例: LANG="ja_JP.UTF-8"; export LANG – ログメッセージやJava APIの一部はデフォルトロケールに依存 • umaskによるパーミッションの指定 – 例: umask 022 – WLS11gからは起動スクリプトで「037」、停止スクリプトで「026」が デフォルトで明示的に指定 • ログファイルの監視・収集などに注意が必要 • コアファイルサイズの指定 – 例: ulimit -c unlimited – 運用環境では無制限にすることを考慮 • 出力先・ファイル名も必要に応じて変更36 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  37. 37. OS環境(Unix)の設定(2) • ファイルディスクリプタ(FD)の指定 – 例: ulimit -n 8192 – commEnv.shのresetFd関数に注意 resetFd() { if [ ! -n "`uname -s |grep -i cygwin || uname -s |grep -i windows_nt || ¥ uname -s |grep -i HP-UX`" ] then ofiles=`ulimit -S -n` maxfiles=`ulimit -H -n` if [ "$?" = "0" -a `expr ${maxfiles} : [0-9][0-9]*$` -eq 0 -a `expr ${ofiles} : [0-9][0-9]*$` -eq 0 ]; then ulimit -n 4096 else if [ "$?" = "0" -a `uname -s` = "SunOS" -a `expr ${maxfiles} : [0-9][0-9]*$` -eq 0 ]; then if [ ${ofiles} -lt 65536 ]; then ulimit -H -n 65536 else ulimit -H -n ${ofiles} fi fi fi fi } : resetFd (←場合によってはコメントアウト)37 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  38. 38. カスタマイズしたスクリプトの再利用(1) • オリジナルのスクリプトを含むテンプレートの作成 – packコマンド • $WL_HOME/common/bin/pack.sh -domain=<domain_dir> -template=<template_jar> -template_name="<template_name>" – ドメイン・テンプレート・ビルダー • $WL_HOME/common/bin/config_builder.sh38 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  39. 39. カスタマイズしたスクリプトの再利用(2) • テンプレートを利用してドメインを構成 – unpackコマンド • $WL_HOME/common/bin/unpack.sh -template=<template_jar> -domain=<domain_dir> – ドメイン構成ウィザード • $WL_HOME/common/bin/config.sh テンプレートを明示的に指定する。 [参考] 通常構成するドメインもテンプレート $WL_HOME/common/templates/domains/wls.jar で提供されている。39 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  40. 40. まとめ • WLSの起動・停止スクリプトは、様々なケースに対応可能 – 仕組みとポイントを知ることで、よりよくカスタマイズ • 起動スクリプトの構造 $DOMAIN_HOME/bin/startManagedWebLogic.sh └ $DOMAIN_HOME/bin/startWebLogic.sh → java ~ weblogic.Server └ $DOMAIN_HOME/bin/setDomainEnv.sh └ $WL_HOME/common/bin/commEnv.sh • 停止スクリプトの構造 $DOMAIN_HOME/bin/stopManagedWebLogic.sh └ $DOMAIN_HOME/bin/stopWebLogic.sh → java ~ weblogic.WLST shutdown.py └ $DOMAIN_HOME/bin/setDomainEnv.sh └ $WL_HOME/common/bin/commEnv.sh40 Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  41. 41. Q&AQ&A Copyright (c)2013 ITOCHU Techno-Solutions Corporation
  42. 42. Copyright (c)2013 ITOCHU Techno-Solutions Corporation

×