JRubyを使用してRailsプロジェクトを実行し、Tomcatサーバーにデプロイしています。Capistranoを使用してデプロイすることを選択したのは、ほぼすべてが自動化されるためです。CapistranoをTomcatで実行するには、Capistranoのデプロイメントライフサイクルにいくつかの小さな変更を加える必要がありました。
ステップ1:Capistranoがコードを更新した後、サーバーで実行するWarbleタスクを作成しました。
desc "Run the warble command to deploy the site"
namespace(:deploy) do
task :warble do
run ". ~/.profile;cd #{release_path};warble"
end
end
そして、以下を使用してそれをCapistranoライフサイクルに接続しました。
after 'deploy:update_code', 'deploy:warble'
#{release_path}/tmp/war
私のTomcatサーバーには、 warbleによって作成されたディレクトリを指すシンボリックリンクがあります。これが気に入らない場合は、warbleタスクを簡単に変更して、代わりにwarファイルをTomcatディレクトリに移動できます。
ステップ2:タスクdeploy:start
とdeploy:stop
タスクをオーバーライドして、MongrelサーバーではなくTomcatサーバーを起動するようにします。
desc "Starts the Tomcat Server"
namespace(:deploy) do
task :start do
sudo "#{tomcat_home}/bin/startup.sh"
end
end
desc "Shutdown the Tomcat Server"
namespace(:deploy) do
task :stop do
sudo "#{tomcat_home}/bin/shutdown.sh"
end
end
私はJRubyインタープリターではなくMRIを使用してCapistranoタスクを実行します。