2009-06-18 37 views
9

我承認在部署測試與生產代碼時,我沒有遵循任何「正確」的方法。我一直在使用ASP.NET,我通常在Visual Studio本地運行它,它可以工作,我可以上傳它,然後再在生產服務器上測試它。爲什麼將Ruby on Rails部署到生產上應該「很難」?

我讀過幾個人說部署Rails應用程序比較困難,並且在ruby站點上有關於部署RoR的特殊程序/方法。我只玩過RoR。部署有什麼特別之處?你不只是複製和粘貼代碼並運行它(從開發機器到生產)?是因爲一個在Apache中,另一個在內置服務器上運行?

這將在Mac服務器上,如果它很重要。

回答

15

部署RoR並不難,尤其是Phusion Passenger

什麼是有點困難,獲得與capistrano,vlad等自動生產環境設置。如果你不介意簡單地複製你的代碼到服務器,你可以做到這一點很好。大多數人選擇不這樣做,因爲你失去了自動化部署工具給你帶來的許多好處。

+2

更多資源可以在http://rubyonrails.org/deploy –

+1

找到我甚至使用capistrano來設置一個新的railsapp來自動部署。 所以我說「帽子設置:新鮮」,這將照顧一切,如設置testurl,設置本地gitrepository和我的源服務器,進行初始提交,設置新的虛擬主機等等。 。 –

0

這不是特別困難。如果你墨守成規,然後用配置的一點點把它歸結爲這樣:

cap deploy 

...但有時存在一點需要在鋒線上得到了工作流程到位努力。

好消息是,許多人已經打包了RoR的解決方案和堆棧,您可以即插即用。例如,谷歌ec2onrails - 這是一個打包的Ubuntu鏡像和一套Capistrano任務,用於在亞馬遜的EC2雲中運行rails應用程序,其中很多常用的東西已經開箱即用。

選擇一個好的託管服務提供商,你應該能夠找到類似的東西。

0

部署Rails應用程序的簡單方法是使用Phusion Passenger。對任何編程語言或框架來說,部署都不那麼容易。你可以在Mac服務器上做到這一點。

7

我想人們認爲Rails應用程序比部分PHP應用程序更難以部署,或者只是在某處放置代碼並指向Apache或其他任何地方。但是,如上所述,您現在可以使用Phusion Passenger來做到這一點。

我們使用Nginx + Passenger,但不是爲了簡化部署。 Capistrano是我們選擇的部署工具,除非你有一個非常簡單的應用程序,否則你肯定會想要像Capistrano這樣的東西。例如,對於我們的部署,我們做的事情擺:

  • 運行任何數據庫遷移
  • 生成發佈自動指出,根據所有提交的最後部署之間Git和這一個
  • 通知不同的人通過電子郵件(不同的名單取決於部署到我們的舞臺環境或生產) - 我們通過與Capistrano集成的cap_gun來完成。
  • 通知部署的New Relic的RPM,因此它可以在我們的RPM分析其標記
  • 通知黽部署的,因此它報告任何異常
  • 生產我們sitemap.xml的文件時,也能有這些數據,並ping谷歌告訴他們有一個新的
  • 更新crontab文件(我存儲我們的git倉庫中的每個服務器的crontab文件,然後部署它看看是否有新版本和相應的更新等)。
  • 沖洗/重啓memcached的

還有其他的方法除了Capistrano的,但它是一個經過驗證的工具,具有很大的靈活性,但很簡單的設置香草配置。

所以,我的看法是,一旦你進入任何超出最簡單的應用程序的應用程序,你就需要/想要做的事情,而不僅僅是更新代碼。一開始,如果你只需要代碼更新和Rails遷移,那麼你可以做更簡單的事情,例如Passenger和代碼同步,或者查看諸如Heroku或Engine Yard的工具,他們通過執行Git克隆進行部署(然後提供一些額外的能力)。

0

另一種真正簡單的部署導軌的方法是使用jruby和glassfish gem。

4

另一種超級簡單的方法來部署是http://heroku.com/

+0

heroku真棒,我已經使用它幾個星期了,它已經是一個完全的喜悅與 – Jimmy

+13

工作downvote對不起,但每次我閱讀有關軌道部署和有人建議heroku,我不禁想到「是的,heroku是部署ON HEROKU的簡單方法「。 heroku是一種服務,不是通用的在任何其他地方部署應用程序的方式,在vps,自己的服務器等等。 – pistacchio

0

你們有些人面對軌道部署到生產的問題:

  • 數據庫連接。 您需要確保爲生產環境設置了數據庫連接器。

  • 數據庫遷移。 即使您已經在生產/測試/分期階段運行了它們,您也必須針對生產數據庫運行數據庫遷移。版本或子版本或Ruby可以讓你啓程,例如An error occurred while installing debugger-linecache (1.1.1), and Bundler cannot continue

  • 寶石依賴。 您的生產環境可能有不同的軟件包和開發寶石。 Bundler將大部分解決這個問題,並安裝依賴關係,但偶爾還有一些問題需要手動解決。

  • 依賴關係。 某些機器上的某些寶石有特定的依賴性。我看到在使用OSX上的unix box上使用gem的常見問題,反之亦然。

注意,如果在同一臺機器上的最後3應該不會影響到你,但我包括他們根據標題和完整。

+0

我從來沒有使用它。這只是當時的炒作。隨着時間的推移,它不再流行,因此我不能再找到使用它的理由,除了RoR。不一定非常喜歡RoR和常規配置(我認爲這是RoR)。謝謝。 – johnny