[WSL+Ubuntu] WSL上にRails環境を構築する。

# 環境構築法

色んなサイトで環境構築方法が記載されていますが、
今回は「ここを見ればWSL上でRailsを実行できる。」
というところまでの環境構築法を記載していきます。

[こちら](https://qiita.com/takmt/items/0858dbd3c53cabaa4395)の方ではCentOS上に環境構築を行いましたが、WSL+UbuntuはVM上のCentOSと比べて非常に速く動作します。
※はじめからこっちでやってればよかった。。。

# 環境構築の前提

下記条件で環境構築で行います。
主にWindows上だけで環境構築を行います。

##### ホストOS

* Windows 10
* WSL + Ubuntu


##### ゲストOS

* WSL上のUbuntu

##### ここでは伝えない事

* WSLのインストール方法やUbuntuのインストール方法。<br>マイクロソフトストアからダウンロードするだけなので割愛) <br>詳しくは[このページの初期設定](https://qiita.com/Aruneko/items/c79810b0b015bebf30bb)まで行って下さい。

# 以下環境構築方法


### カスペルスキーの設定変更

※カスペルスキーをインストールしていない方は無視してください。

Windows上にカスペルスキーをインストールされている方は、カスペルスキーによってWSLと外部の通信が遮断される為、下記設定変更が必要です。
`カスペルスキーインターネットセキュリティ` → `設定ギア` → `詳細` → `ネットワーク` → `設定したネットワークポートを監視する` の右側の選択をクリック → `ポート443`を無効化

![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383232/f2c36341-ca9b-5d34-4514-b8ae827057a2.png)

※本設定変更は自己責任でお願いします。

### WSLの初期設定

[こちらのサイト](https://qiita.com/Aruneko/items/c79810b0b015bebf30bb)を参考にUbuntu上から下記コマンドを入力します。
主にパッケージのアップデートを行っています。

```sh
sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list
sudo apt update
sudo apt upgrade
```

### Rootのパスワードの変更

下記コマンドを入力してRootのパスワードを入力しましょう。

```sh
sudo passwd root 
```

### bashrcを読み込ませるようにする。

Ubuntu起動時、bashrcが自動で読み込まれません。
テキストエディタで .bash_profileを読み込み後、

```
vim ~/.bash_profile
```

下記スクリプトをファイルの先頭に追加しましょう。

```
if [[ -f ~/.bashrc ]] ; then
    . ~/.bashrc
fi
```


### Windowsディレクトリのリマウント

WindowsのディレクトリはRoot権限でマウントされており、
単なるユーザーがWindowsディレクトリ上にファイルを作成しようとしても出来ません。
下記コマンドを入力して再マウントを行います。

```
sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c -o uid=1000,gid=1000
```

このコマンドで一般ユーザーでもWindows上のファイルを操作する事が可能です。

### Rubyのインストール

rbenvを使用してRubyをインストールしていきます。
まずはrbenvを使用する前の準備です。

```sh
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev libreadline-dev zlib1g-dev libmysqld-dev ruby-dev libnetcdf-dev libcrypto++-dev libgmp-dev nodejs mysql-client
```

このあとrbenvからRubyのインストールを行います。

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

実際にRubyのインストールとRubyの使用を行います。

```
rbenv install 2.6.3
rbenv global 2.6.3
rbenv rehash
gem install bundler solargraph pry-byebug rails
rbenv rehash
```

以上でWSLのUbuntu上にRails環境を作成できるようになります。
試しに `rails new` 等でアプリケーションを作成してみるとよいでしょう。

# 環境構築終了

以上が環境構築方法になります。

もし何かしら間違いや誤りなどありましたらご指摘お願いします。
またコメントやこうしたら良いよみたいなアドバイスがあればコメントいただけると嬉しいです。

余談ですが開発モードの変更に関しては下記コマンドが楽でよいです。

```powershell
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
```



# 参考URL

### WSL+Ubuntuに関して

* http://www.vwnet.jp/windows/w10/2018021701/WslInstallUpdate.htm
* https://qiita.com/Aruneko/items/c79810b0b015bebf30bb
* https://www.lisz-works.com/entry/wsl-root-password-change
* https://www.madopro.net/entry/bash_on_windows_bashrc
* https://bussorenre.hatenablog.jp/entry/2018/05/23/231732

### Rubyに関して

* https://qiita.com/shuhey/items/888e242ad666daa9f23a
* https://qiita.com/koyo-miyamura/items/0df9eece2a935669fc4b
* https://qiita.com/stkdev/items/96f507f46276c4e782c0