簡體   English   中英

為什么將Ruby on Rails部署到生產中應該“難”?

[英]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這樣的東西。 例如,通過我們的部署,我們做了很多事情:

  • 運行任何數據庫遷移
  • 根據上次部署與此部署之間Git的所有提交,自動生成發行說明
  • 通過電子郵件通知各種人(根據是否部署到我們的臨時環境或生產,使用不同的列表) - 我們通過與Capistrano集成的cap_gun來實現。
  • 通知部署的新Relic RPM,以便它可以在我們的RPM分析中標記它
  • 通知部署的Hoptoad,因此在報告任何異常時也可以擁有該數據
  • 生成我們的sitemap.xml文件,並ping谷歌告訴他們有一個新的
  • 更新crontab文件(我在git repo中存儲每個服務器的crontab文件,然后在部署時查看是否有新版本並相應地更新等)。
  • 刷新/重啟memcached

除了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM