サポート > Wagby Developer Network(R8) > サーバの運用 > 手動でTomcatへのデプロイを行う

WagbyDesigner でビルドしたアプリケーションを war 形式ファイルとし、既存の Tomcat へデプロイする方法を説明します。

WagbyDesignerにてビルド後、コマンドプロンプトを開き、次のコマンドを実行してください。

cd [インストールフォルダ]\misc
createWar.bat
Linux/Mac OS X 環境の場合は createWar.sh コマンドになります。

実行すると、インストールフォルダに[アプリケーション名].warファイルが作成されます。

ルートデプロイの場合はROOT.warになります。

ここで説明する手順は、Tomcat 8.5.24 を用いて確認したものです。Tomcat のバージョンによって手順が異なる可能性がありますので、あらかじめご了承ください。

Tomcat のダウンロードと WAR ファイルのコピー

ダウンロードした Tomcat をインストールします。標準の Tomcat に含まれている webapps フォルダ内のファイルをすべて削除したあと、上で作成したWARファイルを webapps フォルダにコピーします。

bin/setenv.{bat,sh}ファイルの作成

bin/setenv.{bat,sh}を作成します。.bat は Windows OS 用、.sh は Linux/Mac OS X 用です。具体的には次の環境変数を設定します。

set CATALINA_OPTS=-server -Xmx1024m -Xms128m "-Djava.security.auth.login.config=%CATALINA_HOME%\conf\app_jaas.config"  "-Dsun.nio.cs.map=x-windows-iso2022jp/ISO-2022-JP" "-Duser.timezone=Asia/Tokyo"
  • -server は、JavaVMをサーバモードで実行することを指定します。
  • -Xmx1024m -Xms128mはヒープメモリの設定です。適切なメモリサイズを指定してください。
  • -Djava.security.auth...は Wagby が内部で利用している認証・認可のためのフレームワークであるJAASの設定ファイルの位置を指定しています。上の記述どおりとしてください。
  • -Dsun.nio.cs.map=...は、JavaMailでの文字エンコーディングを指定しています。メール送受信機能を利用する場合に必要です。
  • -Duser.timezone=...は、日付のタイムゾーンを指定しています。

bin/service.batファイルの修正

Windows環境でサービス登録を行う場合に必要です。上記のsetenv.batと同様の環境変数を設定してください。 これに加えて、--StartPath で起動時のカレントディレクトリを指定します。

具体的には同ファイルにある :installed の直下に次のコードを追加します。

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.security.auth.login.config=%CATALINA_HOME%\conf\app_jaas.config;-Dsun.nio.cs.map=x-windows-iso2022jp/ISO-2022-JP;-Duser.timezone=Asia/Tokyo" --StartPath "%CATALINA_HOME%\bin" --JvmMs 128 --JvmMx 1024
if not errorlevel 1 goto installed2
echo Failed installing '%SERVICE_NAME%' service (1)
goto end
:installed2

conf/server.xmlの修正

必要に応じて次の内容を修正してください。

  • Tomcatのシャットダウンポートの設定(Server要素のport属性)
  • HTTP接続の設定(protocol属性がHTTP/1.1となっているConnector要素)
  • AJP接続の設定(protocol属性がAJP/1.3となっているConnector要素)

また、次の設定はコメントアウトしてください。

  • Realm className="org.apache.catalina.realm.LockOutRealm" の部分
  • Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" の部分

conf/web.xmlの修正

JspServletのinit-paramに下記を追加します。

       <init-param>
           <param-name>javaEncoding</param-name>
           <param-value>UTF-8</param-value>
       </init-param>
       <init-param>
           <param-name>strictQuoteEscaping</param-name>
           <param-value>false</param-value>
       </init-param>

conf/logging.propertiesの修正

Tomcat が標準で提供している manager と host-manager に関する記述をコメントアウトします。

conf/context.xmlの修正

Context要素の直下に次を追加します。

 <Loader
   loaderClass="org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader" />

これはワークフローの利用時に必要です。

conf/app_jaas.configの作成

wagbyapp\conf\app_jaas.configをコピーしてください。認証・認可に必要な設定ファイルです。

JDBCドライバファイルの用意

Tomcatのlibフォルダに、利用するデータベースのJDBCドライバファイル(jarファイル)をコピーします。 あわせて、wagbyapp\lib フォルダに格納されている j_conint.jar, spring-instrument-tomcat.jar もコピーします。

なお HSQLDB を利用する場合は、JDBCドライバとしてhsqldb.jarをコピーしてください。

実行

binをカレントディレクトリとし、startup.batを実行します。起点フォルダは bin としてください。

初回起動時にWARファイルがwebappsフォルダ内に展開されます。

終了

binフォルダ内のshutdown.batコマンドを実行します。

InitLoader.jarを利用する

InitLoader.jarは、コマンドラインによるインポート、エクスポート処理を行うためのツールで、Wagbyが標準で提供しています。 このツールを利用する場合は、次の手順を追加で行なってください。

  1. 最初にウェブアプリケーションを起動します。WARファイルがwebapps内に展開されます。
  2. 自動生成されたwagbyapp\bin内の下記ファイルを、Tomcatのbinフォルダにコピーしてください。
    check_db.bat
    check_db.sh
    drop_db.bat
    drop_db.sh
    export_db.bat
    export_db.sh
    export_db_zip.bat
    export_db_zip.sh
    import_db.bat
    import_db.sh
    init_db.bat
    init_db.sh
    update_db.bat
    update_db.sh
    InitLoader.jar
    
  3. check_db.batを実行してデータベース接続テストを行います。このコマンドを実行すると、JDBCドライバから取得された情報をcheck_db.txt に出力します。
InitLoader.jarが利用するデータベース接続情報は、WEB-INF/export/conf/initdb.xmlに記述されています。

データベース接続情報

Wagbyアプリケーションが利用するデータベース接続情報は webapps/プロジェクト名/META-INF/context.xml ファイルに記述されています。(プロジェクト名の標準は "wagby" です。)

  • Tomcat 以外の Web アプリケーションサーバを利用することはできません。
  • Tomcat の起点フォルダは $(Tomcatフォルダ)/bin となっています。例えば $(Tomcatフォルダ)/foo/bin などのように階層を変えることはできません。
  • Tomcat を再起動させずに war ファイルを入れ替えた場合、ログファイル (system.log) の日次ローテート処理が行われなくことがあります。この場合は Tomcat を再起動させることで解消されます。
Wagby Developer Day 2018