おっさん初学者のRails環境構築(centOS)

Railsチュートリアルを完走後はサイト作成に挑戦です
テキストではcloud9を用いてクラウド環境で学習してきましたが、実際の開発現場ではLinax環境で開発が行われるケースがほとんど。ということを解説動画でも言っていました。。
そこで、ここは多少苦労してでも自分で環境構築しようと決意しました。
いろんなところから情報かき集めて、結果的に分からないなりにうまくいったので、そこまでの軌跡を記録しておきます

**CentOS上にRails環境を構築するということにトライしています**

##開発環境##

- Mac + Vagrant
- CentOS7.8
- rbenv：1.1.2
- bundler：2.2.17

##Ruby , Railsのバージョン##
Railsチュートリアルの復習も含めてサイト作成に取り組むため、テキストに合わせて以下のバージョンで始められるように構築しております

- Ruby： 2.6.3
- Rails： 6.0.3

###1. Virtual Box と Vagrantをインストール###
「Linux」や「Virtual Box」や「Vagrant」が何なのかについてはここでは説明しませんが、Linax環境立ち上げるなら、まずそれぞれをインストールします
「Virtual Box」：[Virtual Box公式サイト](https://www.virtualbox.org/wiki/Downloads)
「Vagrant」：[Vagrant公式サイト](https://www.vagrantup.com/downloads)
「Virtual Box」や「Vagrant」が何なのかは[「こちら」](https://kitsune.blog/linux-environment)でわかりやすい説明がありました
###2. centOS7.8のインストール###
ターミナルを開いて以下のコマンドを送信

```
$ vagrant box add bento/centos-7.8 --provider virtualbox
```
これで「centOS 7.8」が「bento/centos-7.8 」という名前でインストールされます

以前インストールしていた余計なcentOSのバージョンがあったらここで削除します
<font color="red">※余計なバージョンが既にインストールされている場合のみ</font>
まずはどのバージョンがインストールされてるかチェックします

```
$ vagrant box list
```
ここでリストが表示されたら消しましょう

```
$ vagrant box remve 消したいバージョン
```
###3. MyVagrantディレクトリを作成###
TOPページにまずはMayVagrantフォルダを作成

```
$ mkdir MyVagrant
```
###4. MyVagrantに移動###
作成したフォルダに移動する

```
$ cd MyVagrant
```
###5. Vagrantfileを作成する###
MyVagrantファイル内にVagrantfileを作成します

```
$ vagrant init bento/centos-7.8
```
###6. FinderからVagrantfileを開いてipの設定###
作成したVagrantfileの中身を編集します
以下の階層にVagrantfileがあります
Finderを開く > ユーザー > user > MyVagrant
ファイルを開いて以下の部分を探して、「#」を消します。
<font color="red">上書き保存を忘れずに！！</font>

```
ここの「#」を消してね
# config.vm.network "private_network", ip: "192.168.33.10"
```
###7. Vagrantを起動する###
ここでやっと仮想マシンとかいうものを起動させます

```
$ vagrant up
```
ターミナルで以下のコマンドを実行し、仮想マシンの状態を確認

```
$ vagrant status
```
これを入力して
　　**「default   running」**
が表示されてたらOK
###8. 仮想マシンにログイン###
仮想マシンを立ち上げたので中に入っていきましょう

```
$ vagrant ssh
```
これで「ContOS」が入った仮想マシンに「vagrant」というユーザーでログインできました
一応ログアウトして仮想マシンを終了させるには

```
$ exit
$ vagrant halt
$ exit
```
これで、
「プロセスが完了しました」
が、表示されればOKです
###9. SELinuxを無効化する（環境開発ではトラブルの元になるため）###
余計なものになるらしいので以下を送信しておきます

```
$ sudo sed -i "s/(^SELINUX=).*/disabled/" /etc/selinux/config
```
###10. rbenvをインストールして、Rubyのバージョンを変更可能にする###
これからやっとRubyを入れる準備に入ります
まずはrbenv をインストールするために必要な yum パッケージを入れます

```
$ sudo yum install -y git gcc openssl-devel readline-devel zlib-devel sqlite-devel gcc-c++ libicu-devel cmake vim
```
ここからrbenvをインストールする

```
$ git clone https://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 -v
```
###11. ruby-buildプラグインを追加###
Rubyをインストールするための準備第2段階です

```
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
```
###12. Rubyをインストールする###
やっとRubyをインストールできるようになりましたので早速やっていきましょう
今回インストールしたいバージョンを「2.6.3」に指定しますのでコマンドはこうなります

```
$ rbenv install 2.6.3
```
そのままですね。数字の部分を変えれば自分のインストールしたいバージョンでインストールしてくれるそうです
###13. CentOS環境全体で使えるrubyのバージョンを指定###
CentOS環境で使用するRubyのデフォルトバージョンを決める

```
$ rbenv global 2.6.3
```
これで、特に指定しなかったら勝手にRubyのバージョン「2.6.3」が適用される

あとで、「いや！2.7を使いたいんだ！」ということであれば

```
$ rbenv local 2.7
```
とすればよい
###14. Rubyのバージョンや設定を反映###
Rubyに関する設定をしましたので反映させる

```
$ rbenv rehash
```
ちなみにこのコマンドはよく出てきます・・・

**ここで無事にRubyのバージョン「2.6.3」が適用されたか確認しときます**

```
$ ruby -v
```
###15. Bundlerのインストール###
Rubyのライブラリ管理ツールであるBundlerをインストールします
<font color="red">Rubyを使う上ではBundlerは絶対利用することになるのでインストール必須です！</font>

```
$ gem install bundler
```
Rubyに関する設定を反映させる

```
$ rbenv rehash
```
Bundlerが適用されたかどうかを確認する

```
$ budle -v
```
###16. Ruby on Railsのインストール###
やっとここまできた・・・
まずはRubyドキュメントをインストールしないようにしてインストールの時間短縮する

```
$ echo "gem: --no-document" >> ~/.gemrc
```
バージョンを「6.0.3」に指定してRailsをインストールする

```
$ gem install rails -v 6.0.3
```
終わりましたら、無事に適用されているか一応確認します

```
$ rails -v
```
##そのほかの機能も追加する##
これで、目的であったRubyとRailsを目的のバージョンでインストールすることがが完了しました。
が、今のままではまだまだ足りてません。ここでは以下の機能を追加していきます

- Linux(CentOS)にMySQLをインストール
- yarnのインストール

###17. Linux(CentOS)にMySQLをインストール###
まずはCentOSに初めから入ってるデータベース(MariaDB)を削除する

```
$ sudo yum remove -y mariadb-libs
```
MySQLのリポジトリをインストール(CentOS7のデフォルトのリポジトリに「MySQL8.0」が存在しないため)

```
$ sudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
```
MySQLをインストールする

```
$ sudo yum install -y mysql-community-server
```
インストールしたSQLを起動する
まずは現時点の状態を確認

```
$ systemctl status mysqld
```
　起動時：「Active: active (running)」
　停止時：「Active: inactive (dead)」
これで停止状態だったら起動する

```
$ sudo systemctl start mysqld
```
起動したかどうかを再度確認

```
$ systemctl status mysqld
```
最後にSQLが自動で起動するように設定する
まずは現時点の状態を確認

```
$ systemctl is-enabled mysqld
```
「disabled（無効）」になっていた場合は、以下のコマンドを実行して有効にする

```
$ sudo systemctl enable mysqld
```
###18.yarnのインストール###
yarnをインストールするにはNode.jsを先にインストールする必要がある
まずはNode.jsのリポジトリを追加する

```
$ curl -sL https://rpm.nodesource.com/setup_8.x | sudo bash -
```
そのあと、Node.jsをインストールする

```
$ sudo yum install nodejs
```
一応バージョンを確認

```
$ node -v
```
yarnのインストールの準備ができたので、yarnのリポジトリを追加する

```
$ sudo curl –silent –location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
$ sudo rpm –import https://dl.yarnpkg.com/rpm/pubkey.gpg
```
yarnをインストールする

```
$ sudo yum install yarn
$ yarn -v
```