2008-09-29 9 views
10

JRuby에서 실행되는 Ruby on Rails 앱을 테스트 용 Tomcat 인스턴스에 배포하는 방법을 찾고 있습니다.JRuby on Rails 애플리케이션을 Tomcat에 배포하는 가장 좋은 방법은 무엇입니까?

tomcat 인스턴스는 SSH 할 수있는 Solaris 서버에서 실행됩니다. 나는 Capistrano를 사용하여 보았지만, Tomcat에 배포하거나 JRuby에서 실행하는 것에 대해 많이 사용하지는 않는다. Windows/JRuby 환경으로 인해 Capistrano에서 버그를 계속해서 겪고있다. 내 PC가 작동 중입니다 (예, 기업용 - 내 선택이 아니라, 함께 살 필요가 있습니다).

나는 warble을 사용하여 .war 파일을 만들었으며, 수동으로 복사하고 배포 한 후에 앱이 배치되어 잘 실행됩니다. 실제로 더 쉽게 자동화 할 수있는 무언가를 원합니다.

누구나 이전에이 작업을 수행 했습니까? 웹상의 문서가 꽤 얇은 것 같습니다.

답변

3

나는 이것에 대해 많은 경험이 없으므로 최선의 방법을 줄 수 있을지 모르지만 Capistrano가 작동하지 않고 별도의 MRI를 실행할 수 없다면

일반 레이크를 실행 해 자신 만의 배포 대상을 쓰기 : http://www.gra2.com/article.php/deploy-ruby-on-rails-applications-rake

또는 개미 또는 Maven을 사용하는 그것, 당신은 이제 몇 가지 대안이 있습니다.

또는 배포하려는 서버가 하나뿐이라면 두 개의 Ruby 스크립트를 함께 해킹 할 수 있습니다. 하나는 종료/시작 요청을 위해 서버에서 수신하고 하나는 실행하는 로컬입니다. shutdown, scp over 파일, 시작을 보냅니다.

그런데 카피 스트라 노와의 통합 버그를 JRuby 팀에 제출 했습니까? 나는 그들이 기부금을 가지고 행복해 할 것이라고 확신한다. :)

+0

좋아요, 그 접근 방식은 모든 라운드 쉬운 었죠. Windows에서 SSH가 아닌 plink.exe를 사용하여 종료되었습니다. 내가 쳤던 카피 스트라 노 문제와 내가 수정하지 않은 몇 가지 다른 버그에 대한 몇 가지 수정 사항이 있습니다. 나는 그들을 카피스트라노에 제출할 것이다 :) – madlep

2

'Vlad the deployer'를 살펴보면 Rake에 remote_task가 추가되어 원격 서버에서 작업을 실행할 수 있습니다. 개인적으로 나는 서버에서 표준 레이크 작업을 선호하며 그 작업을 실행합니다. 그러면 svn 체크 아웃을 수행하고 WAR 파일을 만듭니다.

15

JRuby를 사용하고 Tomcat 서버에 배포하는 Rails 프로젝트를 실행 중입니다. Capistrano는 모든 것을 자동화하기 때문에 배포하기로했습니다.

desc "Run the warble command to deploy the site" 
namespace(:deploy) do 
    task :warble do 
    run ". ~/.profile;cd #{release_path};warble" 
    end 
end 
:

1 단계 : 나는 그것을 톰캣에서 실행 얻기 위해 카피 스트라 노의 배포 라이프 사이클에 몇 가지 사소한 수정했습니다 카피 스트라 노 코드를 업데이트 한 후 I는 서버에서 실행하는 지저귐 작업을 생성

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

내 Tomcat 서버는 지저귐에 의해 생성 된 #{release_path}/tmp/war 디렉토리를 가리키는 심볼릭 링크가 있습니다

그리고 사용하여 카피 스트라 노의 라이프 사이클을 구부려. 이 작업이 마음에 들지 않으면 warble 작업을 쉽게 수정하여 war 파일을 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 

나는 JRuby를 인터프리터보다는 MRI를 사용하여 카피 스트라 노 작업을 실행

2 단계 : 그들이 대신 잡종 서버의 Tomcat 서버 킥오프 그래서 나는 deploy:startdeploy:stop 작업을 무효화한다.

관련 문제