Heroku簡介和部署

最后更新于:2022-04-01 02:31:55

[Heroku](http://heroku.com/)提供了 PaaS 雲端服務,讓 Ruby 應用程式可以跑在上頭(所以不只是 Rails,像是 Sinatra 也可以跑在上面),以及提供 PostgreSQL 這套關聯式資料庫和其他許多的外掛服務。它的底層硬體資源是採用了可擴展的 Amazon EC2,透過 Heroku 的 dynos (它的資源單位) 只要拉上拉下就可以增加伺服器負載了,非常厲害,請看 Rapportive 的故事: > 想要擁有一個可隨時延展的架構(scalable architecture),你只要選對廠商(hosting provider)就可以做到。如果Rapportive一開始隨便選了一個便宜的VPS,流量一衝進來的時候可能就會像全面啟動電影中Cobb的混沌世界(Limbo)一樣崩潰。Rapportive的服務是放在知名廠商Heroku上,對於突然湧進的流量只需要增加Dynos的數量(Heroku提供服務的基本單位),基本上你是不需要修改你的程式的;當然,程式的優化、調整可以在同樣能耐的硬體等級上容納更多人。 使用Heroku、不需要調整程式、只需要增加Dyno數量?真的有這麼美好嗎?事實上Rapportive就是這麼辦到的,在來自全世界的流量突然湧進時,Rahul Vohra手邊沒有電腦,於是他隨即拿起iPhone並且利用Nezumi這個設計來管理Heroku的應用程式,將Rapportive的Dynos增加到20個,就這麼簡單,可能不到一分鐘吧?!系統的能耐馬上就提昇了。 不過,這麼方便的工具也是有一些缺點。首先它的價格昂貴,當你的網站有穩定流量時會不划算,另外他的伺服器位在美國或歐洲,從亞洲連過去比較慢。最後是有Vendor lock-in的風險。因此,通常我們只利用它的提供的免費方案,作為玩具專案的展示之用, ## 第一次設定 Heroku 1. 註冊 [Heroku](https://heroku.com/) 帳號 2. 下載及安裝 [toolbelt](https://toolbelt.heroku.com/) 工具 3. Heroku預設使用PostgreSQL資料庫,所以我們也在本機安裝PostgreSQL,請執行 `brew install postgresql` ## 第一次在 Heroku 開 App 前提:Heroku 使用Git進行佈署,你的專案必須用Git做版本控制。 請在你的專案目錄下執行 `heroku create` ## 更新你的Code 1. Gemfile 加上 pg gem 和 rails_12factor gem,如果你本來用 sqlite3 或 mysql2 gem,請移除或搬到只有 `:development` 和 `:test` 模式才使用 。 ~~~ gem 'pg' gem 'rails_12factor', group: :production group :development, :test do gem 'sqlite3' # .... end ~~~ 2. bundle 3. config/database.yml 的 production 改用 postgresql adapter: ~~~ production: adapter: postgresql encoding: unicode ~~~ 4. commit 你的修改 ## 部署到 Heroku 1. 在你的專案目錄下執行 `git push heroku master` 將程式推送到 heroku 去 2. 執行 `heroku run rake db:migrate` 3. 執行 `heroku open` 就會打開瀏覽器了 ## 如何瀏覽 Logs? `heroku logs --tail` ## 如何打開遠端的 Rails console? `heroku run rails console` ## 參考資料 * [Heroku 官方文件: Getting Started with Rails 4.x on Heroku](https://devcenter.heroku.com/articles/getting-started-with-rails4)
';