MacにRails実験用環境を作成してみた


## 目的

毎月行ってる勉強会にて、学生さんが勉強のために下記構成を構築しようと頑張っていたので、
virtualboxの環境を作り直したかったのもあり、便乗してPostgreSQLで実施してみた。

## 目標

ローカル間でのみ通信できる、Railsアプリを動作させる用環境を作成してみる。

## 構成

CentOS7+rbenv+passenger+postgresql

## 手順

## インストール

```
$ vagrant --version
-bash: vagrant: command not found
$ VBoxManage --version
-bash: VirtualBox: command not found
```
virtualboxとvagrantが入ってなければインストール

```homebrew-caskでインストール
$ brew cask install virtualbox
$ brew cask install vagrant
```

下記サイトでOSを選択し、boxにaddする
[Vagrantbox.es](http://www.vagrantbox.es/)

```CentOS7.0を設定
$ vagrant box add centos70 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
$ mkdir ~/Documents/centos70
$ cd ~/Documents/centos70
$ vagrant init centos70
```

centos70に出力された設定ファイルを編集

``` Vagrant
# config.vm.network "private_network", ip: "192.168.33.10"
↓
config.vm.network "private_network", ip: "192.168.33.10"
```

起動

```
$ vagrant up
```

接続

```
$ vagrant ssh
```

***


## 環境作成

### Git(rbenvインストール時に必要なため)

```
$ sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
```

新しめのを取得

[The Linux Kernel Archives:Git](https://www.kernel.org/pub/software/scm/git/)


```
$ wget https://www.kernel.org/pub/software/scm/git/git-2.7.4.tar.gz
$ tar zxvf git-2.7.4.tar.gz
```

```
$ cd git-2.7.4
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
$ git --version
git version 2.7.4
```

### rbenv

```rbenv本体
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ rbenv --version
```

```ruby-buildプラグイン
$ mkdir -p ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ cd ~/.rbenv/plugins/ruby-build
$ sudo ./install.sh
```

```ruby本体(記載当時安定板)
$ rbenv install --list
$ rbenv install 2.3.0
```

※めっちゃ終わらなかったので時間を確認・修正してから再度実行したら20分くらいで終わった

```
date
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
```

### passenger

```passenger本体
$ gem install passenger
```

apache2-moduleインストール時に怒られるので

```
$ sudo chmod o+x /home/vagrant
$ sudo yum -y install httpd httpd-devel
$ sudo yum -y install ruby-devel
```

```モジュール
$ passenger-install-apache2-module

Press Enter to continue, or Ctrl-C to abort.
Use <space> to select.
Press Enter to continue anyway.
Press ENTER when you are done editing.
Press ENTER to continue.
```

必要値設定

```
$ passenger-install-apache2-module --snippet
LoadModule passenger_module /home/vagrant/.gem/ruby/gems/passenger-5.0.26/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /home/vagrant/.gem/ruby/gems/passenger-5.0.26
  PassengerDefaultRuby /usr/bin/ruby
</IfModule>

$ sudo vi /etc/httpd/conf.d/passenger.conf
<IfModule mod_passenger.c>
  PassengerRoot /home/vagrant/.gem/ruby/gems/passenger-5.0.26
  PassengerDefaultRuby /usr/bin/ruby
</IfModule>

$ sudo service httpd restart
```

ローカルでしか使わないのでファイアウォール止める(publicで使用する場合は別途設定推奨)

```
$ sudo systemctl stop firewalld
```

面倒なので設定したままにする

```
$ sudo chkconfig httpd on
$ sudo systemctl disable firewalld
```

MacからWebブラウザで下記IPに接続
[192.168.33.10](192.168.33.10)

### postgresql

新しめのを取得

[PostgreSQL RPM](http://yum.postgresql.org/)

```
$ wget http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm
$ sudo rpm -ivh pgdg-centos95-9.5-2.noarch.rpm
$ sudo yum -y install postgresql95-server postgresql95-devel postgresql95-contrib
$ sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb
$ sudo systemctl start postgresql-9.5
$ sudo systemctl enable postgresql-9.5
$ sudo -u postgres psql
```

## 遊んだ後は

停止

```
$ vagrant suspend
```

## 感想

今までVirtualBoxやVMwareでの仮想環境は、チマチマと手動で作っていたような気もするけど、思ったより簡単に環境を構築できて便利な世の中になったなと実感。

### 補足

* Vagrantで作成したイメージのrootのデフォルトPassはvagrantの様子

### 参考にさせていただいたサイト

* [Vagrantの初期設定、コマンド、スナップショットの設定](http://qiita.com/yoshiokaCB/items/b0f6a2784670482c6c7e)
* [CentOSに最新版のGitをインストール・アップデートする方法](http://www.task-notes.com/entry/20150622/1434942000)
* [rbenv を利用した Ruby 環境の構築](http://dev.classmethod.jp/server-side/language/build-ruby-environment-by-rbenv/)
* [CentOS 7にPostgreSQL最新版をインストール](http://www.hack-log.net/entry/2015/04/26/100000)
* [vagrantで時刻がおかしい場合の対処法](http://polidog.jp/2014/01/08/vagrant/)