2008-09-29 245 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的任務。

相關問題