在上一篇:在VM裡建置rails專案(上) 已經成功將我們的 VM 環境建置完成,也可以使用 SSH key,在 MacOS 操作 VM Linux,接下來將開始安裝我們的 rails 專案。


安裝 Git

首先,先安裝 git 做為我們未來專案的版控。

sudo apt install git

查看版本號是否安裝成功。

git --version

將 git 設定在 global 裡。

git config --global user.name "yourname"

(在 “” 裡設定你的用戶名稱)

git config --global user.email "yourname@yourname.com"

(在 “” 裡設定你的用戶mail)

確認是否有設定成功。

cat ~/.gitconfig

將 Git 與 GitLab 做連接

建立 SSH key

ssh-keygen

開啟 SSH-pub key 並將其貼至 GitLab 做為遠端版控連線。

cat ~/.ssh/id_rsa.pub

User Settings / SSH keys ,貼至 GitLab。

確認是否有設定成功。

git status

git clone 你的專案

*補充: 每次在產生 SSH-KEY時,會有一對金鑰,分別是私鑰與公鑰,公鑰(public key)會放置在遠端(GitHub、GitLab、AWS等等),任何人都可以看到其內容,用於加密;另一個稱為私鑰(private key),只有擁有者才能看到,用於解密。 通過公鑰加密過的密文使用私鑰可以輕鬆解密,但根據公鑰來猜測私鑰卻十分困難。*


安裝 RVM 做為 Ruby 版控

RVM是什麼?

RVM 全名 Ruby Version Manager,是一個命令行工具,提供 Ruby 版本環境的管理和切換,簡單的說法就是 Ruby 版本控制器。

RVM官網

copy 官網上的安裝指令貼上 terminal。

\curl -sSL https://get.rvm.io | bash -s stable

發現缺少了 curl 因此無法使用此指令,安裝 curl 後,再次安裝 RVM。

sudo apt install curl

一樣會告知該安裝會使用掉你多少空間,確認並輸入y後,繼續安裝。

\curl -sSL https://get.rvm.io | bash -s stable

依提示安裝 GPG v2 key。

gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BBB2D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

重新輸入 \curl -sSL https://get.rvm.io | bash -s stable

開啟新的 terminal 檢視所有 RVM 中可安裝的 Ruby 版本。

rvm list known


安裝 Ruby

sudo apt install ruby

確認一下 ruby 安裝後的版本。

ruby -v

因為在前面已經安裝了 RVM,接下來要安裝任何 Ruby 版本只要 rvm install 版本號 即可。

rvm install 2.1.0

確認是否有安裝成功。

rvm list

想移除某個版本時。

rvm uninstall 版本號

將該版本設定為預設,這樣之後每次開 terminal 就會自動幫你切換到該版本。

rvm use 2.1.0 --default

在 terminal 做偏好變更,才可以使用 rvm use 指令。

開啟新的 terminal 並再次嘗試。

rvm 2.1.0 --default

查詢 ruby 裝在哪。

which ruby

irb

irb 是一個互動的 Ruby 環境,可以讓我們練習使用 ruby 語法,做些簡單的指令操作。

安裝完成後,進入 irb 試著輸入 ruby 指令。

irb


安裝 Rails

在進行安裝 Rails 前,要先確認目前使用的 Ruby 版本號是否可支援。

如我現在要安裝的為 rails 4.1.7,那我的 ruby 版本就必須 >= 1.9.3 。

RubyGems

安裝 rails。

gem install rails -v 4.1.7

依提示需求再安裝 minitest。

gem install minitest -v 5.12.0

再次安裝 rails。

gem install rails -v 4.1.7

建立 rails 專案,rails new 專案名稱。

rails new ubuntu_rails

安裝完成後,切換到 rails 所存放的地方。

cd Desktop

cd ubuntu_rails

啟動 rails server。

rails s

依提示需求再安裝 node.js。

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

sudo apt-get install -y nodejs

確認是否有安裝成功。

再次啟動 rails server。

rails s


接下來將是我自己在安裝 rails 4.1.7 版本時的一些 trial & errors。

目前我已經將遠端 GitLab 處的專案 clone 至我的桌面。

Bundler

Bundler 是一種通過追蹤和安裝所需的確切 Ruby 版本,為我們的 Ruby 專案提供一致的環境。 在執行 bundle install 時,會根據應用程式目錄中 Gemfile 的設定,檢查指定的 Gem 與相依套件是否已安裝,如果已安裝了該 Gem,就會顯示 Using,如果是新下載安裝的 Gem,就會顯示Installing。

bundle install 其中 install 可省略

啟用 ‘universe’ 元件。

安裝ruby bundler。

sudo apt install ruby-bundler

發現仍然無法順利安裝,這時可以先 update 再嘗試安裝。

sudo apt update

sudo apt install ruby-bundler

輸入 y 後繼續安裝。

檢查是否有安裝成功。

bundler -v

再次執行 bundle install 。

bundle

根據錯誤訊息,安裝gem mysql2。

gem install mysql2 -v '0.3.21'

權限不足,使用 sudo 來安裝。

sudo gem install mysql2 -v '0.3.21'

根據錯誤訊息,發現缺少了 ‘libmysqlclient-dev’,安裝它後再安裝 gem mysql2。

sudo apt-get install libmysqlclient-dev

gem install mysql -v '0.3.21'

再次執行 bundle

依提示安裝 digest-sha3。

gem install digest-sha3 -v '1.0.2'

看起來是 gem native extension 的錯誤。

bundle config build.digest-sha3 --with-cflags="-Wno-format-security" > 來源

再次 bundle


安裝 database

先查看目前使用的版本。

dpkg -l | grep mysql

因為我在專案上要使用的是 mysql5.6,所以要先移除目前現有的。

sudo apt-get purge mysql*

再次確認是否有移除成功。

dpkg -l | grep mysql

確認已無其他版本號後,安裝 mysql5.6。

sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'

sudo apt-get update

sudo apt install mysql-server-5.6 mysql-client-5.6

sudo chmod 777 /var/cache/app-info/xapian/default -R

設置 mysql root 密碼。

確認密碼。

設置完後,在 log 裡可以看到,安裝正在進行中。

確認是否有安裝完成。

啟動 mysql。

sudo /etc/init.d/mysql start

開啟 rails server。

mysql 的 password 有誤,在專案的 database.yml 裡的 password 處輸入mysql 所設置的密碼。

選擇 Database。

mysql -u root -p

查看有哪些 DB 可使用。

show databases

這裡選擇使用 mysql。

use mysql

查看這個 DB 裡有哪些tables。

show tables

退出 mysql 回到 rails 並建立剛剛選擇的資料庫。

rake db:create

rake db:migrate


Reference:

簡介 Bundler

ssh公鑰私鑰認證原理