[英]Why is it supposedly “hard” to deploy Ruby on Rails to production?
我承認在部署測試代碼與生產代碼時,我沒有采取任何“正確”的措施。 我一直在使用ASP.NET,我通常在Visual Studio中本地運行它,它可以工作,我上傳它,我在生產服務器上再次測試它。
我讀過幾個人說部署Rails應用程序比較困難,ruby網站上有關於部署RoR的特殊程序/方法。 我只玩過RoR。 部署有什么特別之處? 您不只是復制並粘貼代碼並運行它(從開發機器到生產)? 是因為一個在Apache中而另一個在內置服務器上運行?
如果重要的話,這將在Mac服務器上。
部署RoR不再困難,特別是使用Phusion Passenger 。
有點困難的是,使用capistrano,vlad等設置自動化生產環境。如果您不介意只是將代碼復制到服務器,那么就可以做到這一點。 大多數人選擇不這樣做,因為你失去了自動部署工具給你帶來的很多好處。
我想人們認為Rails應用程序比部署PHP應用程序更難以部署,或者只是將代碼放在某處,並指向Apache或其他任何東西。 但是,如上所述,你現在可以用Phusion Passenger做到這一點。
我們使用Nginx + Passenger,但不是為了簡化部署。 Capistrano是我們選擇的部署工具,實際上,除非你有一個非常簡單的應用程序,否則你會想要像Capistrano這樣的東西。 例如,通過我們的部署,我們做了很多事情:
除了Capistrano之外還有其他方法,但它是一個經過驗證的工具,具有很大的靈活性,但設置一個vanilla配置非常簡單。
所以,我的看法是,一旦你進入任何超出最簡單的應用程序的應用程序,你將需要/想要做的事情,而不僅僅是簡單地更新代碼。 但是,如果您只需要代碼更新,也許還需要Rails遷移,那么您可以執行更簡單的操作,例如Passenger和代碼同步,或者查看Heroku或Engine Yard等工具,通過執行Git克隆進行部署(然后提供一些額外的能力)。
另一個超級簡單的部署方法是使用http://heroku.com/
這並不是特別難。 如果您堅持使用約定然后進行一些配置,可以歸結為:
cap deploy
...但是,有時需要一些努力才能使工作流程到位。
好消息是很多人已經為RoR打包了解決方案和堆棧,您可以即插即用。 例如,谷歌ec2onrails - 這是一個打包的Ubuntu圖像和一套capistrano任務,用於在亞馬遜的EC2雲中運行rails應用程序,已經開箱即用設置了許多常見的東西。
選擇一個好的托管服務提供商,你也應該能夠找到類似的東西。
部署Rails應用程序的一種簡單方法是使用Phusion Passenger 。 部署並不比任何編程語言或框架容易得多。 您可以在Mac服務器上執行此操作。
部署rails的另一個非常簡單的方法是使用jruby和glassfish gem。
將rails部署到生產中時遇到的一些問題:
數據庫連接。 您需要確保為生產環境設置了數據庫連接器。
數據庫遷移。 即使您可能已在生產/測試/暫存中運行數據庫遷移,也必須對生產數據庫運行數據庫遷移
Ruby版本。 版本或子版本或Ruby可能會讓你失望,例如安裝debugger-linecache(1.1.1)時出錯,而Bundler無法繼續
寶石依賴。 您的生產環境可能與開發有不同的包和寶石。 Bundler將在很大程度上解決這個問題,並安裝依賴項,但有時仍然存在必須手動解決的問題。
依賴。 某些機器上的某些寶石具有特定的依賴性。 我已經看到在我的unix盒上使用gems的常見問題,這些gems可以在OSX上運行,反之亦然。
請注意,如果在同一台機器上,最后3個不應該影響您,但我根據標題包含它們並且是全面的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.