2012-03-18 13 views
0

Windowsマシン上のTomcat 7サーバー上で動作するアプリケーションがあります。現在の段階では、頻繁に更新して修正する必要があります。アプリケーションを更新する必要があるときはいつでも、私はこれをすべて行います:Tomcatアプリケーションの頻繁な更新

  1. 私のLinux開発コンピュータで新しいwarファイル(antを使用)をビルドします。
  2. Windowsサーバーに移動し、Tomcatサービスを停止します。
  3. 私のコンピュータからWindowsコンピュータにファイルをダウンロードし、それをwebappsの下に置きます。
  4. webappsの下の古いアプリケーションフォルダを削除します。
  5. work/Catalina/localhostの下の古いアプリケーションフォルダを削除します(そうしないと、古いバージョンがキャッシュされたままになります)。
  6. Tomcatサービスを再起動します。

私はこのすべてを自動的に行う方法があると確信しています。それは何ですか?

+1

このANT build.xml http://stackoverflow.com/a/18460429/185565の回答を参照してください。開発時にプロジェクトフォルダからwebappを直接使用する方法を示します。 .jsp、.js、.cssがすぐに変わります。後でどこかに展開される戦争を構築する。展開では、ant filecopyまたはssh/ftpを使用して.warをtomcat/webapps/folderにコピーできます。 – Whome

答えて

2

kwatee agile deployment(私は開発者です)は、ほんの数分間でtomcatにWebアプリケーションの自動展開を設定できます(tutorial参照)。その後、シンプルなWebインターフェイスを使用してオンデマンドで展開するか、またはkwatee antタスクまたはkwatee mavenプラグインを使用して自動的に展開をトリガーします。ああ、それも無料です。

+0

これは優れたソフトウェアです、 ありがとうございました! ただし、正確な使用例を実装する方法が見つかりませんでした。 * Windowsサーバーはオフラインです - ftp/telnet/sshアクセスはありません。 * Windowsサーバーにwarを手動でダウンロードします。 * warファイルの名前は常に同じです。そのようなスクリプトを作成する方法がわかっていれば、サーバー側スクリプトによって自動的に展開される可能性があります。 –

+0

kwateeを使用してCLIオフラインインストーラを生成できます。インストーラをWindowsボックスにコピーしたら、起動するだけですべての必要な操作が実行されます。チュートリアルの設定をcurlをcurlを置き換えるように変更するだけです。curl.exeはcurl.haxx.seからダウンロードできます。 – mac

2

要約:ビルドとデプロイメントの設定に時間を費やしたいと思います。これは少し前の作業ですが、セットアップ後に必要に応じて成長できる一般的なソリューションです。

ステップ1は、Antスクリプトを使用して実行できます。最初にAntをインストールし、短いbuild.xmlを作成してthis exampleのようなものを追加します。 Antが正しくインストールされていれば、build.xmlがあるディレクトリに移動して 'ant'を実行するだけです。

手順2〜6では、ターゲットをクリーンアップしたり、サービスなどを管理したりする必要があるため、MSIインストーラまたは実行可能ファイルを生成します。 MSIツールの私の最初の選択はAdvanced Installerです。 the list of featuresの下に、フリーウェアバージョンで、インストールとアンインストール時にWindowsサービスを制御(開始、停止、インストール、アンインストール)できることが表示されます。

(サイドノート:私たちは、それが継続的に改善しています4年間の高度なインストーラエンタープライズを使用しました、と非常に高品質の製品は、あなたは失望することはできません。)。

あなたは、AntのスルーMSIの作成を制御することができます同じように。ここで私は維持する製品の一つをコンパイルして展開するカップルのマクロを呼び出す私のbuild.xmlからスニップです:

<target name="myproduct-installer" depends="unzip-myproductdocs"> 
    <build-ai-installer product.name="MyProduct" installer.path="setup/installs/MyProduct" project.file="MyProduct.aip" /> 
</target> 
<target name="release-myproduct-installer"> 
    <release-AI-installer product.name="MyProduct" installer.path="setup/installs/MyProduct" product.path="${some-predefined-target}" /> 
</target> 

ここでは、上記で使用したマクロです:

<macrodef name="build-ai-installer"> 
    <attribute name="product.name" /> 
    <attribute name="installer.path" /> 
    <attribute name="project.file" /> 
    <sequential> 
     <echo message="Making installer at @{installer.path}" /> 
     <mkdir dir="@{installer.path}/newInstall" /> 
     <exec dir="@{installer.path}" executable="${env.ADVANCEDINSTALLER}" failonerror="true"> 
      <arg line="/edit @{project.file} /SetVersion ${product.version}" /> 
     </exec> 
     <exec dir="@{installer.path}" executable="${env.ADVANCEDINSTALLER}" failonerror="true"> 
      <arg line="/build @{project.file}" /> 
     </exec> 
    </sequential> 
</macrodef> 

<macrodef name="release-AI-installer"> 
    <attribute name="product.name" /> 
    <attribute name="installer.path" /> 
    <attribute name="product.path" /> 
    <sequential> 
     <copy todir="@{product.path}"> 
      <fileset dir="@{installer.path}/newInstall" /> 
     </copy> 
    </sequential> 
</macrodef> 

これらのマクロは、Windowsを使用しますenv.ADVANCEDINSTALLERという環境変数。簡単なビルド設定では、Antプロパティを設定し、 'env'をドロップします。接頭辞:

<property name="ADVANCEDINSTALLER" value="path-to-AdvancedInstaller.com" /> 

このレベルの自動化は、配当が稼動するとすぐに配当を支払う。しかし、あなたが必要以上に(私は驚くことはありません)、this answer助けるかもしれない場合。

+0

高度なインストーラは素晴らしい製品のようです。問題は、私の開発用コンピュータがLinuxでAIがLinux上で動作しないことです(おそらくワインでも:http://www.advancedinstaller.com/forums/viewtopic.php?f=1&t=9124) –

1

これを行う方法があります。

連続的な統合システムを使用する方法の1つは、たとえばJenkinsです。これは、定期的に、または各コミット後にソースリポジトリに戦争を構築させるでしょう。

実行中のTomcatインスタンスをビルドした後に、そのインスタンスを展開するために使用できるJenkins Deploy Pluginがあります。これはTomcatの標準マネージャーwebappを使用しているので、ユーザーとパスワードを設定してTomcatにインストールする必要があります。

実行中のTomcatに頻繁に再デプロイすると残念なことに、webappがデプロイ解除時にメモリをリークすることがわかります。 OutOfMemoryMemoryLeakProtection Tomcatのwikiに関する記事は便利です。トムキャットの自動再起動は、有用なストップギャップ対策になる可能性があります。

+0

OK、Jenkinsとデプロイメントプラグインをインストールし、 "デプロイ"チェックボックスをオンにして空のビルドジョブを作成し、ジョブを実行しても何も起こらなかった - コンソール出力に "SUCCESS"と表示されますが、新しい戦争は展開されません... –

+0

@ Erel空のビルドとはどういう意味ですか?仕事が戦争を築いていない場合、どのように戦争を展開するか教えてくれましたか?デプロイメントアクションのすべての設定(tomcatアドレス/ユーザ名/パスワードを含む)に記入しましたか?コンソールは何も言わないのですか? –

+0

私は最終的に、プラグインが動作するためにいくつかのビルドステップが必要であることを理解しました。しかし、別の問題があります。展開プラグインは、Tomcatサービスを停止することなく、warをwebappsフォルダにドロップするようです。これは私が同じことをするときと同じような問題を引き起こします:http://stackoverflow.com/questions/9896102/tomcat-webapp-folder-is-ruined-when-putting-a-new-war-file/9903722#9903722 –

関連する問題