30代無職のロズ雑記

30代無職で高卒ニートの職歴なし絶望的人生。社会不適合者で真面目系のクズです。そんな人生をエンターニートで逆転するブログ。最近はグルメリポートが中心で田園都市線沿いの美味しいお店をご紹介しちゃってます。

ptengine

IT

vagrant環境でRailsの環境構築

2018/02/13

開発環境用にVagrantにRails環境を構築する

開発環境の構築に通常ならCloud9を使うことが多いと思う。

また、MacユーザーならMacの環境に構築することもあるであろう。

ではなぜVagrantでやるのか

Vagrantへのメリット

端的にポイントをまとめると

  • WindowsやMacに問わず環境を構築できる。(環境に依存しない)
  • インフラの知識が得られる
  • 自身のサービスを世の中に出す助けになる
    ※本番環境の構築に役立つという意味

前提環境

  • MacBook(Windowsでも行けると思うであんまり関係ないか)
  • Vagrant 2.0.1
  • VirtualBox 5.2.2

※VagrantとVirtualBoxにはバージョン毎に相性があります。バージョン毎の組み合わせでインストールしてください。

仮想マシン立ち上げ

ターミナル上にて

$ mkdir myApp
$ cd myApp
$ vagrant init bento/centos-6.8 // centos6.8用

# Vagrantfileを編集して仮想マシンのIPアドレスを192.168.33.10にする
$ sed -i '' -e 's/# config.vm.network "private_network", ip: "192.168.33.10"/config.vm.network "private_network", ip: "192.168.33.10"/' Vagrantfile

# 仮想マシンを起動する(少し時間かかります)
$ vagrant up

# 仮想マシンの状態を確認する
$ vagrant status

# SSHログイン
$vagrant ssh
or
$vagrant ssh-config // ssh情報確認
$ssh -i .vagrant/machines/default/virtualbox/private_key -p 2222 vagrant@127.0.0.1

# OSを最新状態にアップデート(時間かかります)
# mountエラーを引き起こす可能性がある為、実行しないようがよいかも
sudo yum -y update

もしmountエラーを起こしてしまったら

# http://blog.a-way-out.net/blog/2016/03/11/vagrant-failed-to-mount-folders-in-linux-guest/
$ vagrant plugin install vagrant-vbguest //プラグインインストール
$ vagrant reload //プラグイン適応

# https://dotinstall.com/lessons/basic_localdev_mac_v2/38506
# ただし、 vagrant-vbguest プラグインの導入はエラーを引き起こす可能性がある

CentOSへ各アプリのインストール

各種のソフトをインスールしていきます

Git

$ sudo yum install -y git

rbenv

下記はrootユーザー必須

## vagrant内にrbenvのインストール
git clone https://github.com/rbenv/rbenv.git /usr/local/rbenv

### rbenvを参照するように初期設定する
vi /etc/profile.d/rbenv.sh

### 設定情報を貼り付ける
export RBENV_ROOT=/usr/local/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"

### 環境情報を再読み込みさせる
source /etc/profile.d/rbenv.sh

## さくら内にruby-buildのインストール
git clone https://github.com/rbenv/ruby-build.git /usr/local/rbenv/plugins/ruby-build

### 動作確認
rbenv install -list

or

ルートユーザでない場合

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ . .bash_profile

各種ツールのインストール(お好みで)

各種ツールをあらかじめインストールしないとRuby内部で動かないことがあるあらしい(しらんけど・・・)

### ツールをインストールする
yum -y groupinstall "Development Tools"

### ツールをインストールする
yum -y install gcc-c++ glibc-headers openssl-devel readline libyaml-devel zlib zlib-devel libffi-devel libxml2 libxslt libxml2-devel libxslt-devel mysql-devel readline-devel

nodebrew(お好み)

$ wget git.io/nodebrew
$ perl nodebrew setup
$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bash_profile
$ . .bash_profile

node

nodebrewの場合

# コンパイラをインストールしないとnodeインストールがコケます
$ sudo yum install -y gcc gcc-c++

# node安定板インストール
$ nodebrew install stable # 失敗する場合 $ nodebrew install-binary stable
# nodebrew useコマンドで、通常使うnodejsのバージョンを指定
# stableで最新の安定版
$ nodebrew use stable
$ node -v # => v8.9.4

参考:http://www.task-notes.com/entry/20141130/1417319179

通常

### JavaScript実行用ツールをインストール
yum install nodejs --enablerepo=epel

###これでいいですか? [y/N]と表示されたら入力
y
なぜnodeが必要か

railsのassets precompileの機能を利用する際に、javascriptの処理系が必要。

なので、nodebrew、nodeをつかってインストールしました。

Ruby

# rubyインストールの際にopensslがないと言われるので
$ sudo yum install -y openssl-devel
$ sudo yum install -y readline-devel
# rubyインストール
$ rbenv install 2.4.3
# 標準で使うバージョンをRuby2.4.3にする
# つまり、nodebrewのuseコマンドと同様に、ruby 2.4.3を通常使うrubyにしますよ、という設定
rbenv global 2.4.3
rbenv rehash
ruby -v

 

gems (rails, sqlite3, mysql2, pg, nokogiri, rmagick)

しかしこのままではrails newしたプロジェクトのbundle installに失敗してしまいます。

それらのgemをこれから入れていきます

sqlite3

$ sudo yum install -y sqlite-devel
# (お好みでgemにインストール)
# ※ i = installの省略
$ gem i sqlite3

mysql2

$ sudo yum install -y mysql-devel
$ gem i mysql2

pg (PostgreSQL)

$ sudo yum install -y postgresql-devel
$ gem i pg

nokogiri

$ sudo yum install -y libxml2 libxml2-devel libxslt libxslt-devel
$ gem i nokogiri -- --use-system-libraries

rmagick

$ sudo yum install -y ImageMagick-devel
$ gem i rmagick

Nginx, MySQL

Nginx(本番環境で必要。開発ではいらねー)

Rails5のrackサーバーであるPUMAとnginxを組み合わせて公開するのが一般的

Rails4だとrackサーバーはunicornかな?(うろ覚え)

# Nginxのインストール
yum -y install nginx
chkconfig nginx on
/etc/init.d/nginx start

MySQL

$ sudo yum install -y mysql-server

お好みで

SQlite

yum install sqlite

rails new するときに依存エラーが起こる時の対応

An error occurred while installing ffi (1.9.21), and Bundler cannot continue.
Make sure that `gem install ffi -v '1.9.21'` succeeds before bundling.

# http://tomcha.hatenablog.jp/entry/2018/02/08/184334
# http://kinosuke.hatenablog.jp/entry/2018/02/08/153056
$ sudo yum install ruby-devel libffi-devel

-IT
-,