Link Search Menu Expand Document

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 會用到)

image

接著我們進入 mysql console 建立新的資料庫:

執行 mysql -u root -p 進入 mysql console 後,輸入:

CREATE DATABASE rails_recipes CHARACTER SET utf8mb4;

這會建立一個叫做 rails_recipes 的資料庫(註意,資料庫名稱不要包括橫線-),等會你的Rails就用這個資料庫。執行完,輸入 exit 離開 mysql console。

image

請把 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 會用到)。

image

執行 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!

image


Copyright © 2010-2021 Wen-Tien Chang All Rights Reserved.