Ruby on Rails 部署到 Heroku
簡介
本篇文章說明如何將開發好的 Rails 網站程式部署到 Heroku 平台上,並包含 Production 與 Staging 兩種環境。
環境
Mac OS
Rails 4
Git: 假設 repo 裡面已有兩個 branch: production 和 staging,分別部署至 production 與 staging 兩種環境
步驟
申請 Heroku 帳號
先到 Heroku 申請賬號
安裝 Heroku toolbelt
接著到這裡下載安裝 Heroku toolbelt
登入 Heroku
開啓終端機輸入
1 | heroku login |
並輸入帳號密碼完成登入
建立 SSH key
1 | ssh-keygen -t rsa |
都按 Enter 直接用預設值即可
加入 SSH key
1 | heroku keys:add |
複製環境設定
進入專案目錄下執行
1 | cp config/environments/production.rb config/environments/staging.rb |
設定 databasee.yml
編輯 config/databasee.yml,設定如下
1 | development: |
我採用的是本機開發使用 mysql,部署到 heroku 使用 postgresql,因為 heroku 只支援 postgresql
加入 unicorn.rb
建立 config/unicorn.rb,設定如下
1 | worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3) |
建立 Procfile
建立 Procfile,設定如下
1 | web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb |
部署的環境採用 unicorn 作為 Web server 以提供更好的效能
編輯 Gemfile
編輯 Gemfile,設定如下
1 | group :test, :development do |
最後一行加入
1 | ruby "2.1.1" |
如果沒有加入也可以,heroku 目前會自動使用 ruby 2.0.0 版本執行
建立 heroku app
於專案目錄下執行:
1 | heroku apps:create app-staging-name -r staging |
其中 app-production-name 和 app-staging-name 是你要在 Heroku 上建立的 app 名稱,後面的 production 和 staging 是要在 repo 建立的 remote 名稱
部署
1 | git push staging staging:master |
設定 staging 環境變數
進入 Heroku 後台,在 Staging 的 App 設定中找到 [Reveal config vars] 的按鈕按下取得環境變數
接著將 production 的字樣改成 staging 就可以了
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 小殘的程式光廊!
Comment