10

我正在寻找将 Ruby on Rails 应用程序(在 JRuby 上运行)部署到 Tomcat 实例以进行测试的方法。

tomcat 实例在我可以通过 SSH 连接到的 Solaris 服务器上运行。我看过使用 Capistrano,但似乎没有很多关于使用它部署到 Tomcat,甚至在 JRuby 下运行它,而且由于 Windows/JRuby 环境,我一直在 Capistrano 中遇到错误我的电脑正在运行(是的,它是公司的——不是我的选择,但我必须忍受它)。

我正在使用 warble 来构建 .war 文件,一旦我手动复制并部署它,应用程序就会部署并运行良好。我想要一些更简单、更自动化的东西来真正实现它。

以前有人做过吗?网络上的文档似乎很薄。

4

5 回答 5

15

我正在使用 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:startanddeploy: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 任务。

于 2008-10-26T21:23:33.027 回答
3

我在这方面没有太多经验,所以我不知道我是否可以给你最好的方法,但如果 Capistrano 不起作用,并且你不能单独安装 MRI 来运行它,你有只剩下几个选择:

尝试运行普通 Rake 并编写自己的部署目标: http ://www.gra2.com/article.php/deploy-ruby-on-rails-applications-rake

或者使用 Ant 或 Maven。

或者,如果它只是您必须部署到的一台服务器,您可以将两个 Ruby 脚本组合在一起 - 一个在服务器上侦听关闭/启动请求,另一个在本地运行:发送关闭,通过文件 scp,发送启动。

顺便问一下,你有没有向 JRuby 团队提交你在 Capistrano 中发现的任何集成错误?我相信他们会很高兴有任何贡献。:)

于 2008-09-29T06:31:13.883 回答
2

可能值得一看 'Vlad the deployer',它将 remote_task 添加到 Rake 允许您在远程服务器上运行任务。然而,就我个人而言,我更喜欢在服务器上有一个标准的 Rake 任务,通过 ssh 进入并运行该任务——然后它会执行 svn 结帐,制作 WAR 文件,无论如何......

于 2008-09-29T07:28:39.267 回答
2

我可能会为此使用 Ant。毕竟,它只是另一个 WAR 文件,对吧?我不知道您使用的是哪个版本的 Tomcat,但 4.1x 版本附带了一个用于部署到 Tomcat 的 Ant 任务

于 2008-09-29T10:11:30.093 回答
1

有一些用于部署到 Tomcat 的 Capistrano 配方——我在一个名为capistrano-tomcat的 gem 中构建了一个。它需要您构建的 WAR(可能使用Warbler)并在远程服务器上部署和启动 Tomcat 实例。

来源在 Github:http: //github.com/rhunter/capistrano-tomcat

于 2011-11-07T19:25:59.007 回答