在敝公司五倍紅寶石每期的RUBY ON RAILS 從零開始課程中,常常會遇到學員詢問如何在 Linode 或 Digital Ocean 這類 VPS 平台中安裝 Ruby / Rails Stack 的相關問題,以下的文章將簡介在目前最新版的 RHEL 系 OS 上安裝 Rails Stack 的步驟。
本篇文章的 Rails Stack 包含:
- 系統上可以跑多重版本的 Ruby
- Rails 5
- PostgreSQL 9.6
- 使用 Passenger 為 Application Server,Nginx 為 Web Frontend Server
本篇文章適用的 Linux Distribution:
- RedHat Enterprise 7
- CentOS 7
- Fedora 24+
- 其它 RHEL 衍生的,以 systemd 為啟動系統的 Linux Distribution 們 (理論上)
從乾淨的 OS 開始,步驟大致如下:
- 安裝必要套件
- 安裝 PGDG Repo & PostgreSQL
- 編譯 Ruby
- 安裝與編譯 Passenger / Nginx Extension
- 編譯 Nginx
- 啟動設定
- Logrotate 設定
注意:以下所有步驟皆需以 root 身份或 sudo 執行
安裝必要套件
1
|
|
如果是 Fedora 的話,通常還會有 “C Development Tools and Libraries” 和 “D Development Tools and Libraries” 兩種
1
|
|
套件說明:
主要是針對編譯 Ruby 所需,以及其它常見的 RubyGem 如 RMagick 或是 Asset Pipeline 編譯 JS 所需要的套件等。
安裝 PGDG Repo / PostgreSQL
什麼是 PGDG
PGDG (PostgreSQL Global Development Group) 是 PostgreSQL (以下簡稱 PgSQL) 的開發單位的簡稱,PGDG Repo 是 PgSQL 的官方為各大 Linux Distribution 提供的套件庫。
安裝步驟:
在這邊找到對應的 PgSQL 版本與 Distribution 的對應 RPM Url 後,在 Console 下:
以 Fedora 25 + PgSQL 9.6 為例:
1
|
|
然後安裝 PgSQL Server 與開發套件
1
|
|
請注意如果你安裝的不是 9.6 的話,請將上面的 96 改成對應的版號即可
編譯 Ruby
這邊不使用 rvm 或 rbenv 等 Ruby 版本管理套件,而是採用將不同的 Ruby 版本安裝到不同路徑的方式來解決可能在 Server 上同時運行多版本 Ruby 的需求。
路徑設定原則:
例如 2.3 就安裝到 /usr/local/ruby23
,2.4就在 /usr/local/ruby24
以此類推
流程:
- 下載 CRuby source code
1
|
|
- 解壓縮
1
|
|
- configure
1
|
|
- make
1
|
|
其它版本可以比照辦理。
安裝 Passenger 與 Nginx Module
- 在執行任何 Ruby 指令前請記得設定系統路徑到要使用 Ruby 版本的 bin 目錄,例如:
1
|
|
或是把以上內容加到 ~/.bash_profile
的尾端,讓每次登入時自動執行。
- 安裝 bundler & passenger Gem
1
|
|
此時要注意安裝的 Passenger 版號,進入 Passenger 目錄編譯 Passenger Nginx Module,以 Ruby 2.3 和 Passenger 5.1.1 為例:
1 2 |
|
- 下載 Nginx 源碼並使用編譯好的 Passenger Module 編譯 (以 1.10.1 版為例)
1 2 3 4 5 6 7 |
|
至此為止 Nginx 已設定完成,後續操作請看下篇