代码之家  ›  专栏  ›  技术社区  ›  madlep

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

  •  10
  • madlep  · 技术社区  · 16 年前

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

    Tomcat实例正在我可以通过ssh访问的Solaris服务器上运行。我曾经研究过使用Capistrano,但在使用它部署到Tomcat,甚至在JRuby下运行它,似乎没有太多,而且由于Windows/JRuby环境的原因,我在Capistrano中不断地遇到错误,我的PC正在运行(是的,它是公司的-不是我的选择,但我必须要与之共存)。

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

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

    5 回复  |  直到 13 年前
        1
  •  3
  •   Lars Westergren    16 年前

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

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

    或者使用蚂蚁或者马文。

    或者,如果您只需要部署一台服务器,您可以将两个Ruby脚本——一个在服务器上侦听关机/启动请求,另一个运行到本地的脚本:发送关机、文件上的SCP、发送启动。

    顺便问一下,您是否向JRuby团队提交了您在Capistrano中发现的任何集成缺陷?我相信他们会很乐意做出任何贡献。 :)

        2
  •  15
  •   Fábio Batista Thomas    13 年前

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

    步骤1:我创建了一个warble任务,在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服务器有一个指向 #{release_path}/tmp/war Warble创建的目录。如果您不喜欢这样,您可以轻松地修改warble任务,将war文件移到tomcat目录中。

    第二步:我骑过了 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任务。

        3
  •  2
  •   Kris    16 年前

    可能值得一看“vlad部署者”,它添加了远程任务到rake,允许您在远程服务器上运行任务。但是我个人更喜欢在服务器上有一个标准的rake任务,ssh进入并运行该任务-然后执行svn签出,生成war文件,无论什么…

        4
  •  2
  •   John Topley    16 年前

    我可能会用蚂蚁做这个。毕竟,这只是另一个战争文件,对吧?我不知道你用的是哪种版本的Tomcat,但4.1X版 comes with an Ant task for deploying to Tomcat .

        5
  •  1
  •   RJHunter    13 年前

    有一些Capistrano的配方可以部署到Tomcat上——我在一个名为 capistrano-tomcat . 这需要一场战争 Warbler )并在远程服务器上部署和启动Tomcat实例。

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