2009-02-24 22 views
9

実行中のTomcatへのWebアプリケーションのデプロイに関するベストプラクティスをいくつか収集したいと思います。まあ、私はWebアプリケーションの展開プロセスについて説明しなければならず、プロセスはやや混乱していました。実行中のTomcatへのWebアプリケーションのデプロイ

WARファイル(foo.war)にアプリケーションが正しく構成されており、追加の構成は必要ありません。この場合、展開プロセスは簡単です。

  • foo.warファイルを$ CATALINA_HOME/webappsディレクトリにコピーします。アプリケーションが正しく起動すると、アプリケーションは$ CATALINA_HOME/webapps/fooディレクトリに自動的にデプロイされます。

は、アプリケーションをアンデプロイするには、次の

  • は、$ CATALINA_HOME/webappsにからfoo.warファイルを削除します。アプリケーションが正しくアンロードされると、アプリケーションはアンロードされ、$ CATALINA_HOME/webapps/fooは削除されます。

私は実行中のアプリケーションでいくつかのコンテキストパラメータをオーバーライドしたいと考えています。

  1. の$ CATALINA_BASE/confに/ [は、EngineName]/[ホスト名] /ディレクトリにfoo.xml
  2. コピーしたファイルと呼ばれるcontext.xmlファイルを作成します。私がする必要があるすべてはdocsを、読みました。

残念ながら、それは動作しませんでした。アプリケーションは再起動しませんでした。実験的には、ワーニングファイルが$ CATALINA_HOME/webapps以外の場所に配備されていることが唯一の解決策であることがわかりました。 さらに、WARファイル内の設定可能なコンテキストパラメータのデフォルト値は、web.xmlに指定する必要があります。なぜなら、WARファイル内のcontext.xmlは、context.xmlが外部にあるときには読み込まれないからです。

<?xml version='1.0' encoding='utf-8'?>       
<Context docBase="/path-to-deployment-directory/foo.war"> 
    <Parameter name="myparam" value="newvalue" override="false"/> 
</Context> 

するとあなたは「newValueは」WARのweb.xmlで指定された値を上書きしたい場合は、パラメータにfalseをオーバーライドを=必ず指定してください:ここで

はfoo.xmlの簡単な例です。 。これは私たちにとって明らかではなかった。

このように、実行中のTomcatにデプロイするためにaplicationます。$ CATALINA_BASE/confに/ [は、EngineName]/[ホスト名にfoo.xml

  • コピーしたファイルと呼ばれるcontext.xmlファイルを作成します

    1. を] /ディレクトリ。
    2. foo.warをfoo.xmlのdocBaseで指定された場所にコピーします。アプリケーションは自動的に展開されます。

    適用するには、新しいコンテキストパラメータ:

    • foo.xmlにパラメータ値を追加して、ファイルを保存します。アプリケーションは自動的に再デプロイされます。

  • は、アプリケーションをアンデプロイするには、次の
    • は、$ CATALINA_BASE/confに/ [は、EngineName]/[ホスト名] /ディレクトリのfooを削除すること

    ノートからfoo.xmlを削除します。戦争も機能しますが、foo.xmlも削除されます。今では


    、私は次の質問を持っている:

    1. は、Tomcatを停止せずにWebアプリケーションを展開するすべてのベストプラクティスですか?私は、人々が別々の風袋で各アプリケーションを実行するので、実行中の風袋への配備は決して必要ないという意見を聞いた。
    2. WARファイルを$ CATALINA_HOME/webappsにコピーすることをお勧めしますか、別の場所に保管することをお勧めしますか?
    3. $ CATALINA_HOME/webappsにデプロイされたアプリケーションを設定するには
    4. アプリケーションのデプロイメントのためにcatalina.outにINFO行がないのはなぜですか?デプロイメントのためのものはありますか?それは設定可能ですか?

    答えて

    0

    1つの解決策は、マネージャアプリケーションを使用することです。あなたはそれはそれを使用しても安全であることを決定した場合、あなたは簡単に、展開を開始、アプリケーションを停止し、アンデプロイすることができます

    http://localhost:8080/manager/deploy?path=[context_path] http://localhost:8080/manager/start?path=[context_path] http://localhost:8080/manager/stop?path=[context_path] http://localhost:8080/manager/undeploy?path=[context_path]

    は、これらのお手伝いをすることができますAntタスクがあります。

    私は推測していますが、アプリケーションを停止して起動するとcontext.xmlが再読み込みされることはわかりません。

    2番目の質問については、warappファイルをwebappsディレクトリに保存することがメンテナンス上の理由から優れていると思います。

    1

    質問(1)でTomcatは、実行中のサーバーにサーブレットを配備するのに最適です。懸念があるかもしれない。セキュリティまたはおそらくD.O.S.または別のサーバーインスタンスを使用する理由をプロビジョニングする必要があります。

    どちらの方法でも柔軟に対応できますが、実行中のサーバーに展開するほうが便利なことがよくあります。これは、サーブレット・アーキテクチャーの組み込み機能です。 :)

    (2)については、再度あなたがWARを置くことがあなたの裁量であります。あなたは既にそれが非標準(私が言うべきではないデフォルト)の方法を設定したように思えます。 server.xmlファイルでサーバーインスタンスの設定を確認してください。 unpackWARsautoDeployのような属性を確認してください。

    (3)と(4)の質問に加えて、あなたの(1,2)質問に加えて、あなたのTomcatのバージョンのTomcatドキュメントを展開モデルで調べることをお勧めします。同じドキュメントを使用して、サーバーの設定方法を理解できるはずです。

    ご使用のTomcatのバージョンに合わせて、TomcatマニュアルのTomcat Web Application Deploymentを参照してください。

    関連する問題