我正在使用 JRuby 运行 Rails 项目并部署到 Tomcat 服务器。我选择使用 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'
我的 Tomcat 服务器有一个符号链接指向#{release_path}/tmp/war
由 warble 创建的目录。如果您不喜欢这样,您可以轻松修改 warble 任务,将 war 文件移动到 Tomcat 目录中。
第 2 步:我覆盖了deploy:start
anddeploy:stop
任务,以便它们启动 Tomcat 服务器而不是 Mongrel 服务器:
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
我使用 MRI 而不是 JRuby 解释器运行 Capistrano 任务。