Part 3: 網站伺服器安裝
7. 更新和安裝 Linux 套件
apt-get
是 Ubuntu 內建的套件管理工具,類似於 Mac 上的 homebrew。拿到一臺伺服器,首先就是先更新系統套件的清單,然後進行升級。
以下需要 root 權限的指令一律都加上 sudo,如果你是 root 身份其實不需要 sudo,但沒關系都可以作用。
執行 sudo apt-get update
執行 sudo apt-get upgrade -f
看到 Do you want to continue? [Y/n] 繼續按 Enter 即可
然後設定系統時區:
執行 sudo dpkg-reconfigure tzdata
進入選單選 Asia 然後選 Taipei 就是 UTF+8 時區
接著我們安裝新的套件們,這些是 Ruby on Rails 所需要的東西。請輸入以下指令(這是一行):
執行 sudo apt-get install -y build-essential git-core bison openssl libreadline6-dev curl zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 autoconf libc6-dev libpcre3-dev libcurl4-nss-dev libxml2-dev libxslt-dev imagemagick nodejs libffi-dev
看到 Do you want to continue? [Y/n] 繼續按 Enter 即可
設定 apt-get 只使用 ipv4
使用 Linode 的學員,因為 ipv6 線路不穩,如果 apt-get update 卡在 0% [Connecting to security.ubuntu.com (2001:67c:1360:8001::17)] 的話,請編輯 /etc/sysctl.conf
加入這三行
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
然後執行 sudo sysctl -p
後,再次執行 sudo apt-get update
8. 安裝 Ruby
我們使用 Brighbox 已經編譯好的 Ruby 套件,輸入以下指令,會把 Brighbox 提供的套件加進清單,然後安裝:
執行 sudo apt-get install software-properties-common
執行 sudo apt-add-repository ppa:brightbox/ruby-ng
執行 sudo apt-get update
執行 sudo apt-get install ruby2.4 ruby2.4-dev
安裝好之後,輸入 ruby -v
應該就會看到 ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux-gnu]
就是成功了。
接著安裝 Bundler gem,等會安裝 Rails 時會需要這個 Ruby 套件:
執行 sudo gem install bundler --no-ri --no-rdoc
--no-ri --no-rdoc
參數的意思是不需要安裝文檔,可以節省安裝時間
如果伺服器在中國境內的話,可以改用 sudo gem install bundler --no-ri --no-rdoc --source https://gems.ruby-china.org
會比較快。
9. 安裝資料庫伺服器
以下提供 MySQL 和 PostgreSQL 的安裝方式,請擇一安裝即可:
本機電腦可以用 brew 安裝 MySQL 和 PostgreSQL,對於正式營運上線的專案,本機電腦最好也更換成和伺服器一樣的資料庫,讓本機環境與伺服器環境盡量一樣。
MySQL
MySQL 是一個非常受歡迎的關聯式資料庫,可以說是大多數網路公司的首選。以下是安裝MySQL的指令,過程中會提示你設定資料庫的root密碼(請記下來,等會設定 Rails 會用到)。
執行 sudo apt-get install mysql-common mysql-client libmysqlclient-dev mysql-server
過程中請配置一個資料庫的 root 密碼 (請記下來,等會設定 rails 的 database.yml 會用到)
接著我們進入 mysql console 建立新的資料庫:
執行 mysql -u root -p
進入 mysql console 後,輸入:
CREATE DATABASE rails_recipes CHARACTER SET utf8mb4;
這會建立一個叫做 rails_recipes
的資料庫(註意,資料庫名稱不要包括橫線-
),等會你的Rails就用這個資料庫。執行完,輸入 exit 離開 mysql console。
請把
rails_recipes
換成你自己專案的名稱
PostgreSQL
MySQL 是網路公司的最愛,分佈式擴充和商業支持的生態系非常豐富。PostgreSQL 則是對進階的 SQL 語法支援比較多,以及支援更多的儲存格式,例如 PostGIS。
你也可以選擇安裝PostgreSQL:
執行 sudo apt-get install postgresql libpq-dev postgresql-contrib
修改帳號 postgres 的密碼
執行 sudo -u postgres psql
,然後打 \password
後,就可以設置資料庫的密碼(請記下來,等會設定 rails 的 database.yml 會用到)。
執行 sudo -u postgres createdb rails_recipes
建立一個叫做 rails_recipes 的資料庫
10. 安裝 Nginx + Passenger 網站伺服器
在本機開發的時候,我們使用 puma 這一套由 Ruby 寫的網站伺服器,無論是靜態檔案(圖片/CSS/JS)或是會進到 Rails 處理的動態網頁,一律都是由 puma 來處理。
在正式 production 環境中,我們會用更高效能的網站伺服器來處理,其中 Nginx 是目前最流行的網站伺服器(用C語言開發的),可以非常高效能地提供靜態檔案,效能是純 Ruby 網站伺服器的數十倍以上。因此像圖檔/CSS/JS等等靜態資源,都會由 Nginx 處理。至於 Rails 動態網頁的部分,我們會安裝 Passenger 這個 Nginx 的擴充模組來執行 Ruby 程序:Nginx 會把非靜態檔案的 HTTP Request 轉交給 Passenger 來處理。
以下安裝程序參考自 Installing Passenger + Nginx 的步驟:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sudo apt-get install -y apt-transport-https ca-certificates
sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main > /etc/apt/sources.list.d/passenger.list'
sudo apt-get update
sudo apt-get install -y nginx-extras passenger
打開你的瀏覽器,輸入伺服器的 IP 位置,應該就可以看到預設的 Nginx 靜態網頁了:Welcome to nginx on Ubuntu!