Pager 1Rails 部署實踐 系列 | 弦而時習之

Rails 部署實踐 系列

蒼時弦也蒼時弦也

Rails 部署實踐 - 補上 Rails 教學缺少的一塊

在我們學習 Rails 的過程中,從安裝環境、設計系統到撰寫程式在市面上都已經有非常詳細的教學,然而到了部署階段受限於篇幅大多只有 Heroku 這個選項,很少有人針對 Rails 的部署深入討論。

這會是一系列的文章,你可以選擇訂閱弦而時習之來收到最新的文章更新,同時在未來如果有額外的內容,也會透過訂閱列表發送給有訂閱的讀者。

蒼時弦也蒼時弦也

Rails 部署實踐 - 以容器部署 Rails 的方案

過去幾年,使用容器技術(Container)來部署 Ruby on Rails 專案已經變成我個人最喜歡的方式之一。除了生態系完整之外,也有著容易安裝、部署環境,並且可以很好的維持部署環境乾淨的優點存在。

基於這樣的理由,在 Rails 部署實踐這一系列,我們會由 Rails 的容器部署方案最為起點開始討論可以使用的部署方案。

蒼時弦也蒼時弦也

Rails 部署實踐 - 部署前置準備

我們在以容器部署 Rails 的方案介紹了以容器化的方式部署 Rails 專案的方案,然而在部署之前我們還有不少前置準備需要處理。

如果你已經有部署過網站,很可能已經有大部分需要的條件,那麼可以考慮跳過這篇文章。如果是第一次準備部署,那麼可以先來看看這些需要預先準備的東西有哪些。

蒼時弦也蒼時弦也

Rails 部署實踐 - 使用 HTTPS 協定加密連線

當我們透過 Docker Compose 在伺服器上將 Rails 運行起來後,基本上已經符合了部署的條件,也就是我們已經完成了一個可以提供服務的環境。

然而,在現代的網站部署中,使用 SSL 將使用者的連線加密已經是必備的條件,有 Let’s Encrypt 提供的免費憑證也能讓我們快速的搭建安全的網站服務。

蒼時弦也蒼時弦也

Rails 部署實踐 - 健康檢查

在過去傳統的部署方式中,我們大多是單機的方式部署,因此網站如果發生障礙連不上,那麼就可以視為無法使用。

然而當我們有多個網站節點的時候,大多會使用負載平衡(Load Balancer)來將流量分散到不同的節點上,這個時候哪一個節點可以接受流量,就會仰賴健康檢查(Health Check)來回報狀態。

蒼時弦也蒼時弦也

Rails 部署實踐 - 滾動更新

完成網站部署後,我們還需要持續的更新網站。然而如果只有一個節點的話,網站是會有一瞬間服務暫停的狀況,為了避免這樣的問題可以採取滾動更新(Rolling Upgrade)的方式處理。

過去我們需要仰賴人工切換,然而到了虛擬機、容器的階段就能夠透過預先安裝好環境來做到半自動、自動的處理。