Ruby on Rails開発環境準備まとめ(CentOS6.6)


```
自分なりのまとめです。結構調べはしましたが、『あぁ、これで動きますわ』程度の物です。
参考にしていただければ幸いですが、参考にして不具合等が起きた場合、保障はできませんのであしからず。
間違い等あればご教授いただけると助かります。
```

# Linux環境準備

## ○ 名称
+ VB :Virtual Box
+ ホストPC ：使用しているPC
+ 仮想環境 :VBで作成する仮想マシン

## ○ 事前準備
### Virtual Boxのインストール
 [Virtual Box](https://www.virtualbox.org/wiki/Downloads)をダウンロードしインストールしておく（以下使用しているのは v4.3.22）
 ホストPCに仮想環境を作成・管理するためのフリーソフト。(Vagruntで作成したものも管理できるようです)

### ISOファイルのインストール
 [こちら](http://ftp.riken.jp/Linux/centos/6/isos/)のディレクトリから、64bitは「x86_64」32bitは「i386」から『CentOS-6.6-xxxxxx-netinstall.iso』をダウンロード
　本家からだとDLに数時間かかるので最低限揃っているnetinstall版を使用させて頂きます。

### Tera Term・WinSCPのインストール
　各公式サイトからインストールをお願いします。

## ○ 仮想マシンの作成
 Virtual Boxを起動し、左上の『新規』ボタンをクリックし『仮想マシンの作成』ダイアログを表示する。

### １．『名前とオペレーティングシステム』

　名前 ：分かりやすい名前を付けてください。(シンプルに "CentOS6.6" でもいいかと。)
　タイプ ：これから作成するマシンのOSを指定。今回使用するCentOS6.6はLinuxなので『Linux』を指定する。
　バージョン ：これから作成するマシンのバージョンを指定。今回は『Red Hat(xxbit)』を指定する。
　※タイプ・バージョンを指定するのが面倒であれば、名前に『CentOS』と入力すると自動選択されます。

### ２．『メモリーサイズ』

　作成する仮想マシンに割り当てるメモリーの容量を指定する。
　後で変更できるので、各環境で調整するといいかと思います。
　私は大体1,024MBにしています。
　数値を大きくしすぎるとホストPCが動作しなくなる可能性があるのでお気を付けください。

### ３．『ハードドライブ』

　特に何も考えず『仮想ハードドライブを作成する』を選択してください。
　この時は右下は「作成」ボタンになっていると思いますが、「作成」ボタンから続けてください。

### ４．『ハードドライブのファイルタイプ』

　今回はデフォルトのまま(VDI)で進めてください。

### ５．『物理ハードドライブにあるストレージ』

　今回はデフォルトのまま（可変サイズ）のままで進めてください。

### ６．『ファイルの場所とサイズ』

　ファイル名は仮想マシンに付けた名称が使用されていると思います。
　分かりやすいのでそのままが良いかと。
　ハードドライブのサイズは特に逼迫してなければ16.0GBあると安心じゃないですかね。。。

　*一度8.0GBで作ったら数MBしか余裕がなくなったことがあって面倒な思いをしました。*

　次に進むとダイアログが自動に閉じて、VBマネージャーの白枠に先ほど設定した仮想マシンが増えているかと思います。

## ○ 仮想マシンの設定

　先ほど作成した仮想マシンを選択し、上部の「設定」ボタンを押すと設定ダイアログが表示されます。
　（右クリックも同様）

### １．『ISOファイルのセット』

　仮想マシンにOSをインストールする為に、先ほどDLしたISOファイルを読み込ませる必要があります。
　設定ダイアログの左枠内の「ストレージ」を選択します。
　「コントローラー：IDE」円盤マークと空という文字があると思います。
　クリックすると右側に詳細が表示されるので、「属性>CD/DVDドライブ」を弄ります。

　プルダウンは「IDEプライマリマスター」を選択。
　隣の円盤をクリックし先ほどDLしたISOファイルを選択。
　ここまでで一度右下の「OK」ボタンを押し、設定ダイアログを閉じます。
　そのまま仮想マシンをダブルクリックしてください。
　別ウィンドウが出て『Welcome to CentOS 6.6!』と書かれた青い画面が表示されればOKです。
　この先、*候補を選択するときは上下キー* そして *ボタンを選択するときは左右キー*になります。(大抵)
　マウスカーソルは出ませんのでご注意を。
　もし画面をクリックしてしまった場合は、ウィンドウの右下に *Right Shift* や *Right Ctrl* などと書かれていると思いますので、
　指示通りのボタンを押下してください。マウスキャプチャ(？)が解除されます。

### ２．『Welcome to CentOS 6.6!』
　いくつか選択肢が出てきますが、「Install or upgrade an existing system」を選択してください。

### ３．『Disc Found』
　テストしますか？という確認ですが「Skip」でOKです。

### ４．『Choose a Language』
　使用する言語を選択します。
　大抵JapaneseかEnglish辺りですかね。
　確認画面が出てくると思いますが、「OK」で大丈夫です。

### ５．『Keyboard Type』
　自身のキーボードの種類に合わせて設定してください。
　日本語版キーボードであれば **jp106**
　英語版キーボードであれば **us**

### ６．『installation Method』
　一番下のURLを選択してください。
　
### ７．『Configure TCP/IP』
　そのまま「OK」を選択してください。

### ８．『URL Setup』
　先頭の入力欄にご自分の環境に合わせて入力してください。
　32bit「http://ftp.riken.jp/Linux/centos/6/os/i386/」
　64bit「http://ftp.riken.jp/Linux/centos/6/os/x86_64/」
　そのまま次へ進み、処理を待っているとセットアップ画面が起動します。
　以降、使用言語を日本語に設定したと仮定して進めます。

## ○ CentOS6の設定

### 1.『セットアップ画面』
　正常にセットアップ画面が起動すれば、中央にCentOS6・右下に「次」ボタンがある画面が表示されると思います。
　そのまま「次」ボタンを選択してください。
　画面内をマウスでクリックすると仮想マシン内でマウスが使用できます。
　（画面外に戻すときはウィンドウ右下に記載されているボタンをクリックしてください(Right Shift等)）
　これまで通り上下左右キーとTabキーでも操作は可能です。

### 2.『どちらのタイプのストレージデバイスにインストールしますか？』
　「基本ストレージデバイス」が選択されていると思いますが、そのまま次へ進んでください。
　「以下のストレージデバイスは、有用なデータを含んでいるかもしれません。」という警告ダイアログが表示されると思いますが、
　「はい、含まれていません」を選択してください。

### 3.『ホスト名の指定』
　必要であれば書き換えてください。

### 4.『タイムゾーンの選択』
　デフォルトで「アジア/東京」が選択されていると思いますが、大抵はそのままで構いません。

### 5.『rootユーザーのパスワード設定』
　必ず忘れないパスワードを設定してください。
　これを忘れてしまうと、仮想マシンを作りなおさないといけなくなります。(おそらく)

### 6.『どのタイプのインストールをしますか？』
　「すべての領域を使用する」を選択してください。
　確認ダイアログが表示されると思いますが、「変更をディスクへ書き込む」を選択してください。

### 7.『追加のソフトウェアの選択』
　使用用途によってセットアップと合わせてソフトウェアをインスコしてくれます。
　今回は「Desktop」でOKです。
　次へを押すと必要なパッケージをインスコし始めるのでしばらく放置で・・・。(約１時間程)

### 8.『インストール完了後』
　CentOSのインストールが完了しました。とのメッセージが表示されます。
　再起動ボタンがありますが、一旦シャットダウンします。
　左上の「仮想マシン>閉じる」かウィンドウ自体を閉じてください。
　「仮想マシンを閉じる」というダイアログが表示されますので、「仮想マシンの電源オフ」を選択してください。

### 9.『ISOファイルの除去』
　VBマネージャーに戻り、作成した仮想マシンの設定ダイアログを開きます。
　「ストレージ>コントローラー：IDE」の「CentOS-6.6-x86_64-netinstall....」を選択して、
　右側の「CD/DVDドライブ」の円盤をクリックし、「仮想ドライブからディスクを除去」を選択します。
　「CentOS-6.6-x86_64-netinstall....」の箇所が「空」になればOKです。
　*これをせずに、再起動した場合はもう一度セットアップ画面が起動するので注意してください。*
　*仮に再起動した場合は、何もせずに仮想マシンを閉じれば問題ありません。*

### 10.『その他の設定』
・ ゲストPCと仮想マシン間で共有/やり取りが出来ます。便利。
　「一般 > 高度 > クリップボードの共有」：双方向
　「一般 > 高度 > ドラッグ&ドロップ」：双方向

・ホストPCから仮想マシンにアクセスするためにIPを割り当てる
　「ネットワーク > アダプター2 > ネットワークアダプターを有効化」：チェックを付ける
　「ネットワーク > アダプター2 > 割り当て」：ホストオンリーアダプター
　「ネットワーク > アダプター2 > 名前」：VirtualBox Host-Only Ethernet Adapter　を選択。
　　(複数ある場合はいずれかを選択)　

### 11.『再起動』
　設定ダイアログをOKボタンを押して閉じ、もう一度仮想マシンを起動させます。

### 12.『初期設定』
　「ようこそ」と書かれた画面が表示されると思います。
　次へ移動すると、ライセンス情報が表示されます。同意してください。
　次へ移動すると、ユーザーの作成を要求されます。ユーザ名からパスワードの確認まで入力してください。
　　*基本Rootユーザーで作業をすることは望ましくないので適当にユーザーを作成しましょう。*
　次へ移動すると、日付と時刻の設定画面が出ます。そのままで問題ないかと思います。
　次へ移動すると、「kdumpの自動有効化にはメモリーが不足しています。」という警告ダイアログが表示されると思います。
　　割り当てたメモリーが1,024MBだと足りないようですが、気にせず「OK」を押して終了としてください。
　　*kdumpとはシステムがクラッシュした場合に原因を特定できるdumpファイルを保存してくれるものです。*
　この後、正常にログイン、CentOSのホーム画面が表示されれば仮想マシンの準備は完了です。
　　*この状態で、VMマネージャーから仮想マシンの上でコンテキストメニューを開き、クローンをしておくとマシンの複製が楽になります。*
　　*(但し、仮想マシンをシャットダウンしてからでないとクローンはできません。)*

## 外部からSSH接続

### ホスト側の設定
1. 上のセッション１０で設定した「ネットワーク > アダプター2 > 名前」を確認します。
2. 一旦閉じた後にVBマネージャーの「ファイル > 環境設定」から環境設定ダイアログを表示させます。
3. ダイアログ内の「ネットワーク > ホストオンリーネットワーク」を開き、1に設定していた名前をダブルクリック。
4. IPv4アドレスに表示されているのが、マシンのIPです。
　ホストオンリーネットワークのリストは自分で増やすこともできます。

### 仮想マシンの設定
1. 上部の「アプリケーション > システムツール > 端末」をクリックします。
2. 設定ファイルのコピー

```

# Root権限に変更
su root
# フォルダの移動
cd /etc/sysconfig/network-scripts
# ファイルの複製
cp ifcfg-eth0 ifcfg-eth1

```

3\. 複製した設定ファイルの編集

```
# ファイルの編集
vi ifcfg-eth1
```

以下のように書き直します。

```lang:ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="static"
# 仮想マシンの「設定 > ネットワーク > アダプター２ > MACアドレス」を入力。(コロンは残す)
HWADDR="XX:XX:XX:XX:XX:XX"
ONBOOT="yes"
TYPE="Ethernet"
NAME="eth1"
# 任意のIP
IPADDR=192.168.56.101
NETMASK=255.255.255.0
# 割り当てたIP
NETWORK=192.168.56.1
```

4\. 設定を適用

```
ifup eth1
```

5\. 接続
ホストPCの Tera Term から確認します。
ホストアドレスは先ほど編集したファイル(ifcfg-eth1)のIPADDR(192.168.56.101)です。

```
# sshコマンドを使えるようにしていれば、以下のコマンドで構いません。
ssh userId@192.168.56.101
```

参考にさせていただきました。
・[macからVirtualBox VMにssh接続する](http://qiita.com/boscoworks/items/56d2ab2a9c5b1b100ce6)
・[node.jsをyumでインストールする(centos6.5)](http://qiita.com/you21979@github/items/4efd9fc4363573191b5c)

# Ruby開発環境準備
## 必要になるパッケージのインストール
```
su root -
yum update -y
yum install -y git sqlite-devel gcc openssl-devel
rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install -y nodejs --enablerepo=epel

```

rbenvとrubyを[こちらのサイト様](http://qiita.com/inouet/items/478f4228dbbcd442bfe8)の方法に合わせてインストールしてください。

参考にさせていただきました。
・[まっさらなCentOS6.5(AWS)にRails4.1.1とruby 2.1.2p95を入れる](http://qiita.com/TasukuNakano/items/cc52d10585f7295cefef)

# Rails開発環境準備

## 必要パッケージをインスコ

```
gem install rails
sudo yum install -y readline readline-devel
sudo yum install -y gcc gcc-c++
```

## ホストPCから確認できるようにする

### ポートの解放
１． `sudo vi /etc/sysconfig/iptables`で設定ファイルを開く。
２．`-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT` 辺りに改行を入れ、
　　`-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT` の一行を追加。
３．`/etc/init.d/iptables restart`とシェルに打ち込み、リスタートをかけて完了。
４．`iptables -L -n`とシェルに打ち込み、`ACCEPT ~~~~~ state NEW tcp dpt:3000`と表示されていればおｋ

### 確認用プロジェクトの作成
```
# testProjectという名のプロジェクトが作成される
rails new testProject
```

+ testProject内のGemfileに追記
*Rails 4.2系を使っていますが、これが無いと サーバー起こせないという・・・*

```

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.3'
gem 'rb-readline' # これを追加
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
```

### Rails側のIP指定
ホストPCからRailsプロジェクトの確認をしたいので、IPアドレスを指定する必要があります。
`rails server`というRailsプロジェクトを動かすコマンドでは複数のオプションが用意されているので、
以下のように指定すれば特定のIPアドレスで起動できます。
`rails s -b 192.168.56.101`
*※ このコマンドはプロジェクトのディレクトリ内（testProject）でのみ使用できます。
※ IPはSSH接続で使用しているIPアドレス*

### ホストPCからページの閲覧
URL：http://192.168.56.101:3000/ へアクセスし、「Ruby aboard」という
メッセージの載ったページが表示されればおｋです。

## rails serverコマンドの簡略化
毎回IP指定をするのは面倒なので、バッチファイルを作成したり、エイリアスを作成したりするといいかと思います。
その方法を書きましたので、その時の状況にあった方を選択してみてください。

### ＠バッチファイルを用意する方法

１．runというバッチファイルを作成

```
# ファイル作成
touch run
# 実行権限付与
chmod -X run
# その他権限付与
chmod 755 run
```
２．`vi run`でファイルを開き、以下の一行を記述して保存

```run
rails s -b 192.168.56.101
```
３．実行 `./run`

### ＠エイリアスを用意する方法
※.bash_profileとかに追記しておくと便利かもですね。

```
# エイリアス作成(rrという名前を''内のコマンドに対して付けております)
alias rr='rails s -b 192.168.56.101'   
# 実行
rr                                     
```