繁体   English   中英

将JRuby on Rails应用程序部署到Tomcat的最佳方法是什么?

[英]What's the best way to deploy a JRuby on Rails application to Tomcat?

我正在研究如何将Ruby on Rails应用程序(在JRuby上运行)部署到Tomcat实例进行测试。

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

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

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

我正在使用JRuby运行Rails项目并部署到Tomcat服务器。 我选择使用Capistrano进行部署,因为它可以自动化所有内容。 我不得不对Capistrano的部署生命周期进行一些小修改,以使其在Tomcat上运行:

第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创建的#{release_path}/tmp/war目录。 如果您不喜欢这样,可以轻松修改warble任务,将war文件移动到Tomcat目录中。

第2步:我覆盖deploy:startdeploy: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任务。

我对此没有多少经验,所以我不知道我是否可以给你最好的方法,但是如果Capistrano无法正常工作,并且你不能单独进行MRI安装就可以运行它,你有还剩下几个选择:

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

或者使用Ant或Maven。

或者,如果它只需要部署到一台服务器,您可以将两个Ruby脚本混合在一起 - 一个在服务器上侦听关闭/启动请求,另一个在您运行的本地:发送shutdown,scp over the file,send启动。

顺便问一下,你有没有向Capubrano提交任何整合错误给JRuby团队? 我相信他们会很乐意做出任何贡献。 :)

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM