[事象]
以下の様なコマンドをシェルで実行し、Webコンソール経由のTomcatマネージャーではなく、シェルスクリプトからTomcatに対してデプロイを行おうとした。
curl --upload-file contextName.war "http://manager:password@localhost:8080/manager/text/deploy?path=/contextName&update=true"
結果、以下の様な403エラーが発生した。
(中略)
Caused by:org.codehaus.cargo.container.tomcat.internal.TomcatManagerException:The username you provided is not allowed to use the text-based Tomcat Manager (error 403)
[原因]
実行ユーザーにmanager-guiの権限は与えていたが、manager-scriptの権限を設定していなかった。
[対応方法]
実行ユーザーにtextベースで実行する際のユーザー権限を付与する。
<tomcat-users>
<user username="manager" password="password" roles="manager-gui, manager-script"/>
</tomcat-users>
[蛇足]
Jenkinsを導入している環境であったため、実はシェルを使わなくてもビルド後にTomcatへデプロイする処理をJenkinsに設定してやるだけで実は良かった…。
[参考URL]
martin.podval.eu
Rocky Jaiswal | Deploying Java applications with Capistrano