2008-09-29 259 views
10

我正在寻找将Ruby on Rails应用程序(运行于JRuby上)部署到Tomcat实例进行测试的方法。将JRuby on Rails应用程序部署到Tomcat的最佳方式是什么?

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

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

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

回答

3

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

尝试运行平原耙,写自己的部署目标: http://www.gra2.com/article.php/deploy-ruby-on-rails-applications-rake

或者使用Ant或Maven。

或者如果它只是您需要部署的一台服务器,您可以将两个Ruby脚本(一个监听关闭/启动请求的服务器以及一个本地运行的脚本)绑定在一起:Send shutdown,scp over该文件,发送启动。

顺便说一下,您是否已将Capistrano发现的任何集成错误提交给JRuby团队?我相信他们会很高兴有任何贡献。 :)

+0

大,这种做法最终被最简单的全面。使用plink.exe而不是SSH(在Windows上)结束。 我已经修复了我遇到的capistrano问题,以及其他一些我没有修复的bug。我会把它们提交给capistrano :) – madlep 2008-09-29 23:25:39

2

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

15

我使用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 

after 'deploy:update_code', 'deploy:warble' 

我的Tomcat服务器具有指向由吟哦创建的#{release_path}/tmp/war目录中的符号链接:

而且使用迷上它成Capistrano的生命周期。如果你不喜欢这个,你可以很容易地修改warble任务来将war文件移动到Tomcat目录中。

第2步:我推翻了deploy:startdeploy:stop任务,使他们揭开序幕Tomcat服务器,而不是一个杂种服务器:

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的任务。

相关问题