環境構築 さくっとまとめ（vagrant・CentOS7・rails・mysql8.0）

#◇記事の概要
こちらの記事は、環境構築する際にドキュメントを探しにいくのが面倒なので、個人的な備忘録として残したものです。
※必要最低限の設定

##その１： Vagrantfileの設定
※vagrant及びvirtualboxがインストールされている前提とします。
まずは、ターミナルを開く。
vagrantfileを置きたいフォルダで以下のコマンドを叩く

```terraform
$ vagrant init centos/7
```

フォルダ上にvagrantfileが作成される。
その「Vagrantfile」を修正します。
修正内容は必要最低限の内容になります。

```ruby:vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.network "private_network", ip: "192.168.33.10"
end
```

##その２：vagrantの起動
vagrantを起動して、ssh接続します。

```terraform
$ vagrant up
```
起動後、、

```terraform
$ vagrant ssh
```

これで、こんな感じのターミナルが表示される

```terraform
[vagrant@localhost ~]$
```
これで一旦vagrant上の作業環境ができた。

##その３：rubyのインストール関連
必要なパッケージをインストールする。

```terraform
[vagrant@localhost ~]$ sudo yum install -y git gcc openssl-devel readline-devel zlib-devel sqlite-devel gcc-c++ libicu-devel cmake vim
```

次に、rbenvをインストールします。環境変数を追加し、「source ~/.bash_profile」で内容を反映させます。

```terraform
[vagrant@localhost ~]$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv    
[vagrant@localhost ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
[vagrant@localhost ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
[vagrant@localhost ~]$ source ~/.bash_profile
```
rbenv --versionと打って、バージョンが表示されれば、OK！

次に、「ruby-build」というプラグインをインストールします。
これは、rbenv installコマンドを使用するために必要なので、下記コマンドを入力します。

>こちらの記事より
>http://ruby.studio-kingdom.com/rbenv/ruby_build/

```terraform
[vagrant@localhost ~]$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
```

次に、rubyをインストールします。
注意：個人的な都合で、こちらのバージョンを指定しています。

```terraform
[vagrant@localhost ~]$ rbenv install 2.6.3
[vagrant@localhost ~]$ rbenv global 2.6.3
[vagrant@localhost ~]$ rbenv rehash
```

ruby -vと打って、バージョンが表示されれば、OK!

最後に、gem同士の互換性を補完するなど、gemを管理してくれる「bundler」をインストールします。

```
[vagrant@localhost ~]$ gem install bundler
[vagrant@localhost ~]$ rbenv rehash
```
bundle -v と打って、バージョンが表示されれば、OK！

##その４：git clone作業（必要な場合のみ）
今回は、sshを使用して既存のコードをクローンしてきました。

```terraform
[vagrant@localhost ~]$ cd ~/.ssh
[vagrant@localhost ~]$ ssh-keygen -t rsa
[vagrant@localhost ~]$ sudo cat id_rsa.pub
```
これで公開鍵・秘密鍵ができます。
公開鍵をgit（今回はbitbucket）に登録し、クローンしました！

##その５：Mysql8.0の導入
ここからmysql8.0を使えるようにしていきます。

```terraform
[vagrant@localhost ~]$ sudo yum install mysql80-community-release-el7-{version-number}.noarch.rpm
[vagrant@localhost ~]$ sudo yum install mysql-community-server
[vagrant@localhost ~]$ sudo systemctl start mysqld
[vagrant@localhost ~]$ sudo grep 'temporary password' /var/log/mysqld.log // 一時的に設定されているパスワードを確認
[vagrant@localhost ~]$ mysql -uroot -p //上記で確認したパスワードを使用
[mysql]$ ALTER USER 'root'@'localhost' IDENTIFIED BY 'ここに新パスワード'; //パスワード変更
[mysql]$ quit;
// bundle installするとmysql関連でエラー出るので、それを回避するために以下のプラグイン等をインストールする
[vagrant@localhost ~]$ sudo yum install mysql-devel 
[vagrant@localhost ~]$ gem install mysql2 -v '0.4.10' --source 'https://rubygems.org/'　// ここはクローンしてきたgemに含まれていなかったので。。。
[vagrant@localhost ~]$ bundle install
```
◇参考
・[Mysql公式](https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html)
・[HARU-LABO](https://blog.harukun-space.com/?p=103)

mysqlを使用できるようになるまであと少し。
何が足りないかというと、「database.yml」の設定です。
設定しないと、「rails s」してアクセスするとエラーが出るはず！
参考までに設定ファイル載せておきます。
ファイル設置場所は、app名/config/database.yml

```database.yml
default: &default
  adapter: mysql2
  pool: 5
  username: root
  password: 設定したパスワード
  encoding: utf8mb4
  charset: utf8mb4
  collation: utf8mb4_general_ci
  host: localhost

development:
  <<: *default
  database: 開発用DB名

test:
  <<: *default
  database: テスト用DB名
  username: テスト用ユーザー名
  password: テスト用パスワード

production:
  <<: *default
  database: 本番用DB名
  username: 本番用ユーザー名
  password: 本番用パスワード
```
database.ymlを設定し下記コマンドを入力すると、「database.yml」で設定したdatabaseが作成される。

```
[vagrant@localhost app名]$ rails db:create
```
テスト用・本番用は必要に応じて設定。

##その６：「rails s」を起動
bundle installもうまくいくはずなので、rails sを行ったところ、以下のエラーが発生。
※一部抜粋

```
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
```
というエラー内容。
Javascriptを実行するために必要なプログラムが必要とのこと。
解決策としては、
①「mini_racer」のgemをインストール
②「Node.js」をインストール
前の環境ではNode.jsを利用していたので、②の手順を示します。

```terraform
// 投稿時点のバージョン
[vagrant@localhost ~]$ curl -sL https://rpm.nodesource.com/setup_15.x | sudo bash -
[vagrant@localhost ~]$ sudo yum install -y nodejs
```
これで、rails sも実行可能に。