やりたいこと
指定したRubyのバージョンを入れて、指定したNodeを入れて、指定したMySQLを入れて、railsの開発がしたい
前提
Vagrantがある。VirtualBoxがある。大体自己責任でどうにかできる。 ちなみにWindowsで開発しているので、Macではいらない努力かもしれない。 初めてNode入れたのでいろいろミスった工程もそのまま載せているので注意。
メモ
# xxx # 全般のメモ > xxx # Windowsのcmd.exeでの操作 $> xxx # Centosのvagrantユーザーの操作 %> xxx # Centosのrootユーザーの操作
下記を実践する場合のおすすめ
vagrant saharaを入れておきましょう。適宜commit~rollbackで巻き戻れます。
にっちもさっちもいかなくなったら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/