感情的ドリル

Ruby県から飛び出して関東にきたオタク

Vagrantでrails server が動くまでの一連の流れ

やりたいこと

指定したRubyのバージョンを入れて、指定したNodeを入れて、指定したMySQLを入れて、railsの開発がしたい

前提

Vagrantがある。VirtualBoxがある。大体自己責任でどうにかできる。 ちなみにWindowsで開発しているので、Macではいらない努力かもしれない。 初めてNode入れたのでいろいろミスった工程もそのまま載せているので注意。

メモ

# xxx  # 全般のメモ
> xxx  # Windowsのcmd.exeでの操作 
$> xxx # Centosのvagrantユーザーの操作
%> xxx # Centosのrootユーザーの操作

下記を実践する場合のおすすめ

vagrant saharaを入れておきましょう。適宜commitrollbackで巻き戻れます。 にっちもさっちもいかなくなったらvagrant reloadとかで再起動。hostsいじったら再起動。

本文

ホスト側(Windows)でよしなに

> vagrant init bento/centos-7.2
# private_networkの設定やメモリの設定があればする
> vagrant up

ゲスト側(Centos)でよしなに

# コンパイルやbundle installで必要なものを全部入れる
$> yum -y install git make curl-devel expat-devel gettext-devel \
     openssl-devel zlib-devel perl-ExtUtils-MakeMaker gcc gcc-c++ \ 
     readline-devel bzip2  mysql-devel

# gitを入れる
# yum で入れたgitでリポジトリ持ってきてインストールして最終的に最新までアップデートしたあとyum産のgitを殺す
$> su
%> wget https://www.kernel.org/pub/software/scm/git/git-2.4.0.tar.gz
%> tar zxvf git-2.4.0.tar.gz
%> cd git-2.4.0
%> make prefix=/usr/local all
%> make prefix=/usr/local install
%> cd /usr/local/src/
%> git clone git://git.kernel.org/pub/scm/git/git.git
%> cd git
%> make prefix=/usr/local all
%> make prefix=/usr/local install
%> yum remove -y git
%> exit

# rbenvを使ってRubyを入れる。今回は2.4.1がいい
# Vagrantなので使い捨ての環境ではあるけどrbenvが慣れてるのでこれ
# 開発のみに利用する前提で、システム全体に入れる必要があるならいい感じに読みかえること
$> git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$> echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$> echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$> exec $SHELL -l
$> git clone git://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
$> rbenv install 2.4.1
$> rbenv global 2.4.1
$> gem update --system # bundlerもこれで入った

# node.jsを入れる
# nodeはじめてさわる わからん ぐぐる
# 今回の要求は8.1.0
# 全ての工程をrootでやったのがおそらく全ての間違いだった。この後Nodeなのかwebpackなのかがうまくいかなくて立ち往生する
# ここはスキップしていい(ただのログだと思ってほしい)
$> su # 多分これが間違い
%> wget https://nodejs.org/dist/v8.1.0/node-v8.1.0.tar.gz
%> tar zxvf node-v8.1.0.tar.gz
%> cd node-v8.1.0
%> ./configure
%> make
%> make install
%> npm install -g yarn 
%> yarn install
%> exit

# ndenvがあった
# ndenvというのはrbenv的なやつらしく、場所によっていい感じにnodeのバージョンを使い分けられる
# らしい
# 今回は知らなかったのでスキップしている
# 要するに上記みたいな頑張るインストールは不要だった
# 調べた限りの手順を載せておくけど実行はしてないので信じないほうがいい
$> git clone https://github.com/riywo/ndenv ~/.ndenv
$> echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bash_profile
$> echo 'eval "$(ndenv init -)"' >> ~/.bash_profile
$> exec $SHELL -l
$> git clone https://github.com/riywo/node-build.git $(ndenv root)/plugins/node-build
$> ndenv install v8.1.0
$> ndenv global v8.1.0

# MySQLを入れる
# 要求が5.6系
# 元からいるMariaDBを抹消したり5.7じゃなくて5.6を直視してもらうようにしている
$> su
%> yum remove -y mariadb-libs
%> rm -rf /var/lib/mysql/
%> yum localinstall -y http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
%> yum -y install yum-utils
%> yum-config-manager --disable mysql57-community
%> yum-config-manager --enable mysql56-community
%> yum -y install mysql-community-server
%> systemctl enable mysqld
%> systemctl start mysqld
%> exit

# 小休止
# 入ったバージョンを確認したい
$> git --version # 2.10 ~
$> ruby --version # 2.4.1
$> bundler  --version # 1.16.0
$> node --version # 8.1.0
$> npm --version #
$> mysql --version # 5.6.x

# もらったrailsプロジェクトをcloneしてきてbundle installしたりrails cしたりdatabase.yml修正したりする。
# 下記がいい感じにうごくことを確認する。
bundle install --path vendor/bundle
bundle exec rails c
bundle exec rails db
bin/setup

# Readmeを見る限りよく知った rails server がいないので検討を付けて
$> bundle exec foreman start

# Node.jsで引っ掛かってるっぽい
# というよりwebpack-dev-serverあたりで問題が起きているようなので調査開始
# 最終的に以下の方法でnodeを入れなおした(ような感じ)
$> mkdir ~/.npm-global
$> npm config set prefix '~/.npm-global'
$> export PATH=~/.npm-global/bin:$PATH
$> source ~/.profile
$> npm install -g yarn webpack-dev-server webpack
$> bundle exec rails webpacker:install
$> bundle exec foreman start

Vagrantとかwebpackerの設定とかでうまく動かないのでhostsを直したりしてどうにか解決。お疲れ様でした。

おまけ

zshとdiff-highlightがいないと生きていけない不憫な体なので以下も実施

sudo yum install zsh
cd /usr/local/src/git/contrib/diff-highlight
sudo make 
mv diff-highlight 
sudo cp /usr/local/src/git/contrib/diff-highlight/diff-highlight /usr/local/bin

cd /usr/local/src/
wget https://github.com/peco/peco/releases/download/v0.5.1/peco_linux_amd64.tar.gz
tar zxvf peco_linux_amd64.tar.gz
cp peco_linux_amd64/peco  /usr/local/bin/