2015年11月26日 星期四

Ruby on Rails 筆記 — 在Ubuntu14.04部署(Deploy) Ruby on Rails網站於Heroku



I. 寫在開始之前 (對於部署概念很熟的朋友可以直接跳第II部份)

會來搜尋這篇的朋友應該都是將Ruby on Rails的CRUD做的差不多,有一個小網頁想deploy到網路上看看效果如何~對於部署這件事我也是搞了很久才漸漸了解,所以想要先敘述我所理解的部署(有錯誤或疑問歡迎指正或提出來討論!畢竟我講的不一定完全正確XD),讓初學者能對這件事有更加深刻的認識。

在網頁開發(Development)階段,也就是我們在練習CRUD、各種controller, model,view coding的時候,那時我們所看到的網頁(輸入localhost:3000後可以看到的~)都是使用一套稱為WeBrick的伺服器(Server),是一套純Ruby實作的HTTP伺服器,其效能適合開發階段,但不適合真正網站使用。當我們最終完成網頁想要放到網路上供大家瀏覽時,我們需要透過另一套適合Production的伺服器來幫我們實現網站的部署。

伺服器指的是管理資源並為使用者提供服務的電腦軟體,而執行以上該軟體的電腦稱為「主機」。從以上的敘述可以了解要部署網站至少需要有一台當作伺服器的電腦提供服務,有兩種可以達成的方式: (1)自行架設、(2)線上租用。而我們採用的就是線上租用,詳細的分類可見ihower實戰聖經[1],利用網路租用「遠端的主機+伺服器」,我們就可以順利的部署網站。常見的廠商如Linode、DigitalOcean等,租金相對都比較便宜(但說來說去都還是要錢XD)。

而本文章選用的是一個稱為Heroku的平台[2],支援Ruby語言且有免費方案!!XD也是蠻多初學者會選來部署網站的平台。由下圖可以看到Heroku提供免費的專案空間,不過由於是免費的所以就會有比較多限制,例如當網站超過30分鐘沒人瀏覽時要再次瀏覽他一開始就會跑久一點、每天24小時中有6小時你的專案會進入睡眠狀態無法進行編輯等等,不過對於我們初學者來說已經是很夠用了!



II. 提醒事項

§ 本文作業系統為Ubuntu14.04,Rails 4.2.4,Ruby2.2.3
§ 在本文中寫給讀者看的註解會使用 % 符號
§ Heroku使用Git(版本控制)進行部署,因此專案必須有Git做版本控制
§ [ ] 為reference,會將網址放在最後提供參照

 

III. 部署步驟

1. 註冊Heroku帳號[3],就是填Email、密碼等等

2. 接著進入到你的帳戶內按下Ruby Get Started的選項就會一步一步教你了 。或者你要繼續往下看我的筆記也可~!


3. 安裝Heroku Toolbelt工具,安裝了之後在Command Line(終端機)裡面就可以使用heroku這個指令,非常的方便,建議要安裝!
選擇自己的作業系統(我是Ubuntu的),之後就會自動幫你進行安裝。





4. 修改專案資料庫:由於Heroku要求production的資料庫必須為PostgreSQL,如果你原本在development的時候是使用SQLite3或其他資料庫的話這個步驟就是必要的(像我依開始是根據ihower大實戰聖經安裝開發環境,所以是使用SQLite3),此步驟的話可以參考我另一篇文章:Ruby on Rails 筆記 — Ubuntu14.04安裝PostgreSQL [4]


5. 在Heroku上建立專案,終端機移至專案底下,輸入:
$ heroku create appname
% <appname>取你想要的專案名稱,如 heroku create calculator


6. 修改Gemfile的Production選項,變成使用PostgreSQL
(1) 打開專案Gemfile,將production的地方加入:
gem 'rails_12factor'
gem 'pg'
% 而原本使用的sqlite3只能放在development中使用,例如:

(2) 修改config/database.yml的Production選項:
adapter: postgresql
database: db/my_database_production
pool: 5
timeout: 5000
% 可參考下圖

(3) 都修改完後,終端機移至該專案下,輸入:
$ bundle install
$ rake db:migrate


7. Git Commit,由於剛剛修改了專案的內容所以必須重新commit一次
$ git add .
$ git commit -m “first deploy on Heroku”


8. 準備部署至Heroku

(1) 終端機移至專案下準備push專案到Heroku,並更新資料庫,輸入:
$ git push heroku master
$ heroku run rake db:migrate
% 以上就完成了將專案部署至Heroku平台上

(2) 接著可以輸入以下指令:
$ heroku open 
$ heroku logs --tail
% open指令可以打開專案的網站,logs指令可以看到日誌


參考資料

[1] https://ihower.tw/rails4/heroku.html
[2] https://www.heroku.com/
[3] https://signup.heroku.com/?c=70130000001x9jFAAQ
[4] http://alanyeh20001.blogspot.tw/2015/10/ruby-on-rails-ubuntu1404postgresql.html

沒有留言 :

張貼留言