Tomcat7にTomcatManagerを使ってWarをデプロイしてみた | Pimp my Code. @wataru420

Pimp my Code. @wataru420

My name is Wataru Fukunaga.

TC-25_F-14A-VF84

TomcatにWarをデプロイ

TomcatにビルドしてWarファイルに固めたアプリをデプロイするとき、みなさんはどうやってますか?

Jenkinsからデプロイするとしたら、SSHのノンパス設定をしてscpするスクリプトを作るとか、
もしくはMavenのプラグインやAntを使う方法なんかがあると思いますが、scpはなんか重いし、
MavenとかAntはビルドツールなのにそこまでやらせるのはちょっと概念が違うかなーなんて考えてたら、
TomcatManagerを使ってCIからデプロイする方法があったのでなんだこれいいじゃんってなりました。

やり方


まずTomcatのtomcat-user.xmlに下記のようなユーザーを追加します。
Tomcat7からrolesがちょっと変わったので注意が必要です。

<user username="hogeuser" password="fuga" roles="admin-gui,admin-script,manager-status,managaer-script"/>


あとは下記のスクリプトを実行するだけ。

WAR="/home/cy_jenkins/.jenkins/jobs/hogeapp-build/workspace/target/hogeapp.war"
curl --upload-file $WAR "http://hogeuser:fuga@targethost:8080/manager/text/deploy?path=/hogeapp&update=true"



WARファイルは事前にhogeapp-buildというJobをJenkinsで実行してビルドした状態を想定しています。
実際のWARファイルの場所を指定して下さい。

pathパラメータにはコンテキストパス名を指定します。
Warファイルと同じ名前にしてますが、変えても大丈夫です。
updateパラメータは古いWarファイルを一旦解除してからdeployするという意味。

この方法だとTomcatは再起動無しでアプリを入れ替えられます。
ただ、入れ替え中は一瞬アプリには繋がらなくなるので、Apacheなどを手前に置いてる場合は止めたほうが無難ですね。

まーただTomcatを再起動しないのでアプリにメモリーリークなんかがあるとちょっと不安ではある。。

参考サイト

http://stackoverflow.com/questions/4432684/tomcat-manager-remote-deploy-script

Tomcatハンドブック 第2版Tomcatハンドブック 第2版
Jason Brittain Ian F. Darwin 村上 雅章

オライリージャパン 2008-11-21
売り上げランキング : 91027

Amazonで詳しく見る