18
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WildFlyにアプリケーションをデプロイする

Last updated at Posted at 2019-01-10

#はじめに

前の記事で、WildFly に Webアプリケーションをデプロイする方法は以下の3つあると書きました。

1. deploymentsフォルダ(ディレクトリ)に置いてデプロイする
2. 管理画面からデプロイする
3. 管理CLIでデプロイする

今回は、この辺りをもう少し詳しく書こうかと思います。

#deploymentsディレクトリに置いてデプロイする

アプリケーション(warファイル)をdeploymentsディレクトリに置くと、一定間隔で deployments ディレクトリをスキャンするデプロイメントスキャナがアプリケーションをデプロイします。スキャン対象のアプリケーションはアーカイブ形式展開形式の2種類があります。

1.アーカイブ形式
zipで固められたWEBアプリケーションです。いわゆるwarやearファイルです。
2.展開形式
zipを展開したWEBアプリケーションです。展開したディレクトリを「xxx.war」のような名前にしたものです。

デプロイメントスキャナの設定はstandalone.xmlの下記にあります。

<subsystem xmlns="urn:jboss:domain:deployment-scanner:2.0">
    <deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000" runtime-failure-causes-rollback="${jboss.deployment.scanner.rollback.on.failure:false}"/>
</subsystem>

管理画面から設定できるデプロイメントスキャナの設定項目は以下です。

項目名 説明 デフォルト値
Auto Deploy Exploded 展開形式のWEBアプリケーションに更新があった場合に再デプロイするかどうか false
Auto Deploy Xml XMLファイルに更新があった場合に再デプロイするかどうか true
Auto Deploy Zipped アーカイブ形式のWEBアプリケーションに更新があった場合に再デプロイするかどうか true
Deployment Timeout デプロイのタイムアウト、デプロイに600秒以上かかった場合はエラーになります。 600
Path deploymentsディレクトリ名 deployments
Relative To システムプロパティ{jboss.server.base.dir}のパス、デフォルトで「wildfly-15.0.0.Final/standalone」なので「Path」の設定と合わせて「wildfly-15.0.0.Final/standalone/deployments」になります。 jboss.server.base.dir
Runtime Failure Causes Rollback ランタイムエラー発生時に全てのデプロメントをロールバックするかどうか、特定のアプリで必要? ${jboss.deployment.scanner.rollback.on.failure:false}
Scan Enabled スキャンを有効にするかどうか true
Scan Interval スキャンの間隔 5000

つまりデフォルトの状態では、以下のような状態になっています。

  1. アーカイブ形式のWEBアプリケーションは更新されればデプロイされる。
  2. 展開形式のWEBアプリケーションを更新する場合はマーカーファイル xxx.war.dodeployを置く必要がある。

マーカーファイル

マーカーファイルは、ユーザーが作成してデプロイメントスキャナに指示を与えるものと、デプロイメントスキャナが現在の状況を示すために作成するものがあります。アプリケーション(warファイル)と同じディレクトリ wildfly-15.0.0.Final/standalone/deployments に置きます。ユーザーが作成する場合、ファイルの中身は空でいいです。

ユーザーが作成するマーカーファイル

名前 意味
xxx.war.dodeploy xxx.warをデプロイする
xxx.war.skipdeploy xxx.warのデプロイをスキップする
xxx.war.undeploy xxx.warをアンデプロイする※なぜかマニュアルに書いてない

デプロイメントスキャナが作成するマーカーファイル

名前 意味
xxx.war.isdeploying xxx.warがデプロイ中である
xxx.war.deployed xxx.warのデプロイが完了した
xxx.war.failed xxx.warのデプロイに失敗した
xxx.war.isundeploying xxx.warがアンデプロイ中である
xxx.war.undeployed xxx.warのアンデプロイが完了した

#管理画面からデプロイする

WildFlyの管理画面を使ってアプリケーションをデプロイします。管理画面は凝った作りになっており、これをメインに使うことが想定されているようです(たぶん)。管理画面からデプロイした場合はどのような動きになるでしょう

画面の指示にしたがって行えば簡単にできると思います。

  1. Deployments メニューの左上にある(+)ボタンからUpload Deploymentを選択します。
  1. 点線の枠内に war ファイルをドラッグ&ドロップ、またはChoose a file or drag it hereリンクをクリックして war ファイルを選択してアップロードします。アップロード完了後Nextで次に進みます。
  1. NameRuntime Name を確認し、即時に有効にしたい場合はEnabledボタンをONにします。Runtime Nameがコンテキストルートになります。確認したらFinishボタンを押します。
4. デプロイ完了

deploymentsディレクトリを覗いて見ましょう、あれ?何も無いです。
standalone.xml を開いてみると一番下に以下のようなタグが追加されています。

    <deployments>
        <deployment name="helloworld.war" runtime-name="helloworld.war">
            <content sha1="2be2e53cd283a40f626a947aa35bfbfb593893ec"/>
        </deployment>
    </deployments>

wildfly-15.0.0.Finalディレクトリ配下を探してみると、こんなファイルがみつかりました。

wildfly-15.0.0.Final/standalone/data/content/2b/e2e53cd283a40f626a947aa35bfbfb593893ec/content

拡張子を.zip に変更して、さっきアップロードしたwarと比較してみると、一致しました。こんなところにアップされていました。

次に進む前に管理画面からアプリケーションを削除します。

wildfly-15.0.0.Final/standalone/data/content/2b/e2e53cd283a40f626a947aa35bfbfb593893ec/content が無くなってstandalone.xml に追加されたタグも消えました。

#管理CLIでデプロイする

wildfly-15.0.0.Final/bin/の下にある管理CLIであるjboss-cli.shを使用してアプリケーションをデプロイします。Windowsの場合はjboss-cli.batを使います。

jboss-cli.sh --connectでWildFlyに接続し、deploy [warの場所をフルパスで記述]コマンドを実行します。

#wildfly-15.0.0.Final/bin/jboss-cli.sh --connect
[standalone@localhost:9990 /] deploy /yourpath/helloworld.war

これでデプロイが完了しました。

standalone.xmlを開いてみると一番下に以下のようなタグが追加されています。

<deployments>
    <deployment name="helloworld.war" runtime-name="helloworld.war">
        <content sha1="2be2e53cd283a40f626a947aa35bfbfb593893ec"/>
    </deployment>
</deployments>

contentファイルも出来ています。

wildfly-15.0.0.Final/standalone/data/content/2b/e2e53cd283a40f626a947aa35bfbfb593893ec/content

管理画面からデプロイした場合と同じ動きをするようです。ですので、どちらか好きなほうを使えば良いと思います。

#結局どうやってデプロイするのがベスト?

ドキュメントには、プロダクトシステムでは、デプロイメントスキャナの替わりにマネージメントAPIを使用しましょう、と書かれています。

考え方として、開発中はデプロイメントスキャナによるデプロイを使用し、本番リリース後は管理画面または管理CLIを使用するような運用が想定されているようです。

8.2.2. Deploying Using the Deployment Scanner

Users are encouraged to use the WildFly management APIs to upload and deploy deployment content instead of relying on the deployment scanner that periodically scans the directory, particularly if running production systems.

18
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?