
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版 Jason Brittain Ian F. Darwin 村上 雅章 オライリージャパン 2008-11-21 売り上げランキング : 91027 Amazonで詳しく見る |