将JRuby on Rails应用程序部署到Tomcat的最佳方法是什么?
我正在寻找将Ruby on Rails应用程序(在JRuby上运行)部署到Tomcat实例进行测试的方法。
tomcat实例在我可以通过SSH连接到的Solaris服务器上运行。我已经研究过使用Capistrano,但似乎并没有太多关于使用Capistrano部署到Tomcat或者什至在JRuby下运行它的经验,由于Windows / JRuby环境,我一直在Capistrano中遇到错误。我的PC正在运行(是的,这不是公司的选择,但我必须忍受它)。
我正在使用warble来构建.war文件,并且一旦我手动将其复制并部署后,该应用程序就会部署并运行良好。我想要一个更简单,更自动化的工具来真正实现它。
有人做过吗?网络上的文档似乎很薄。
解决方案
我对此没有太多经验,所以我不知道我能否给我们最好的方法,但是如果Capistrano无法正常工作,并且我们无法单独安装MRI来运行它,那么我们有剩下的几种选择:
尝试运行普通Rake并编写自己的部署目标:
http://www.gra2.com/article.php/deploy-ruby-on-rails-applications-rake
或者使用Ant或者Maven。
或者,如果仅是一台服务器,则可以将两个Ruby脚本合在一起,一个在服务器上侦听关闭/启动请求,另一个运行在本地:运行关闭,scp文件,发送启动。
顺便说一句,我们是否将Capistrano中发现的任何集成错误提交给JRuby团队?我相信他们会很乐意为我们做任何贡献。
:)
可能值得一看" Vlad the deployer",它为Rake添加了remote_task,使我们可以在远程服务器上运行任务。但是我个人更喜欢在服务器上有一个标准的Rake任务,ssh进入并运行该任务,然后该任务将执行svn签出,生成WAR文件,无论如何...
我可能会为此使用Ant。毕竟,这只是另一个WAR文件,对吗?我不知道我们使用的是哪个版本的Tomcat,但是4.1x附带了用于部署到Tomcat的Ant任务。
我正在使用JRuby运行Rails项目并将其部署到Tomcat服务器。我选择与Capistrano一起部署,因为它几乎可以使所有内容自动化。为了使它能够在Tomcat上运行,我不得不对Capistrano的部署生命周期进行一些小的修改:
步骤1:在Capistrano更新代码后,我创建了一个可运行在服务器上的任务:
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服务器有一个符号链接,指向warble创建的#{release_path} / tmp / war
目录。如果我们不喜欢这样做,则可以轻松地修改warble任务,以将war文件移到Tomcat目录中。
步骤2:我覆盖了deploy:start
和deploy: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任务。