WSL2+docker+PHPのWindows開発環境構築(1) WSL2編

本記事はWindows Insider Previewを使っています。
**ご利用は計画的に**

ヾ(・ω<)ﾉ"　三三三●　ⅱⅲ コロコロ♪


----
------------------- ↓ 余談はここから ↓-------------------

 [WSL2+docker+PHPのWindows開発環境構築(1) WSL2編]:https://qiita.com/dozo/items/9d9e958d4acefffb3fb8
[WSL2+docker+PHPのWindows開発環境構築(2) docker編]:https://qiita.com/dozo/items/17d0ebfb05bb4446caed
[WSL2+docker+PHPのWindows開発環境構築(3) PHPStorm編]:https://qiita.com/dozo/items/7bc21b59bae91bfd1ae1

 関連記事
* [Bash on Ubuntu on Windowsを使う(1)](https://qiita.com/dozo/items/07ae85ab3937d2ed675a)
* [Bash on Ubuntu on Windowsを使う(2)：初期設定](https://qiita.com/dozo/items/6cbedf3fd057b50d0ada)
* [Bash on Ubuntu on Windowsを使う(3)：WindowsからLinuxを使う](https://qiita.com/dozo/items/ff41ece3771affda8845)
* [WSL2+docker+PHPのWindows開発環境構築(1) WSL2編](https://qiita.com/dozo/items/17d0ebfb05bb4446caed) ← イマココ
* [WSL2+docker+PHPのWindows開発環境構築(2) docker編]
* [WSL2+docker+PHPのWindows開発環境構築(3) PHPStorm編]
 
仕事でdockerを使う機会が増えた。
なぜか知らんがMacを使わされるので大変面倒くさい。
（どこが便利なんだ？これ。）

現在の仕事はPCを持ち込みができるらしいので、
この際Windows上で開発環境を作ろうと思う。

数年前に登場したWSLというものがあって、
それについて記事も書いているが、
順調に進化してこのたびver2となる。
（リリースは令和２年５月頃）
そのときを見据えて今からPreview版を使って環境を作ってみよう。

##### 注意
 * 記事が長くなったのでdocker編は別記事で。


##### 令和2年5月20日追記

WSL2のインストールは以下のようになると発表されました。

```
C:\> wsl --install
```

https://devblogs.microsoft.com/commandline/the-windows-subsystem-for-linux-build-2020-summary/


##### 令和2年6月13日追記

Windows 10 May 2020 Update(バージョン 2004、ビルド 19041)が正式リリースされたので、
Windows Preview云々の箇所は後書きへ移動

----
------------------- ↓ 本題はここから ↓-------------------
## 事前準備

##### ・Windows Update

前提としてWindowsを最新にしておく。
https://support.microsoft.com/ja-jp/help/4028685/windows-10-get-the-update

##### ・Windows Subsystem for Linux のインストール

PowerShellを管理者モードで起動
1. 「スタート」「Windows PowerShell」「Windows PowerShell」を右クリック
2. 「管理者として実行」
![2020-02-22 (3)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40697/7a061604-05ce-aff0-5b4a-655062c9314f.jpeg)

以下のコマンドを実行

```shell-session:
PS C:\> dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
展開イメージのサービスと管理ツール
バージョン: 10.0.19041.329

イメージのバージョン: 10.0.19041.329

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
```
### WSL 2 に更新する

```shell-session
PS C:\> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
展開イメージのサービスと管理ツール
バージョン: 10.0.19041.329

イメージのバージョン: 10.0.19041.329

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
```

そして**PCを再起動！** (ここ重要)

(コマンド記述ミスのご指摘をいただき修正)



##### ・バージョンの確認

「コマンドプロンプト(またはPowerShell)」で以下のコマンドを実行

```shell-session
C:¥> ver
Microsoft Windows [Version 10.0.19041.84]
```

数字が10.0.18917以上なら成功

## WSL2のインストール

##### *デフォルト設定をWSL2にする

wslコマンドのデフォルト設定をWSL2になるようにしておく。
前置きが長くなったがここからが本番。

```shell_session
C:¥> wsl --set-default-version 2
```

##### ・Linuxを取得
windows Storeで好きなLinux Distributionをダウンロードしておく
ここではベタな[Ubuntu](https://www.microsoft.com/ja-jp/p/ubuntu/9nblggh4msv6)を選択。
https://www.microsoft.com/ja-jp/p/ubuntu/9nblggh4msv6
（私は[Pengwin](https://www.microsoft.com/ja-jp/p/pengwin/9nv1gv1pxz6p)派）

##### 状態確認

```shell-session
C:¥> wsl -l -v
  NAME   STATE  VERSION
* Ubuntu  Stopped 2
```

あとは普通にUbuntuを使うだけ。

```
C:¥> wsl
$ cat /etc/os-release
NAME="Ubuntu"
VERSION=
〜〜〜〜〜〜
```

さて、次はdockerだ。
[WSL2+docker+PHPのWindows開発環境構築(2) docker編]

----
------------------- ↓ 後書はここから ↓-------------------

### WSL1からWSL2に変換する

すでにに手持ちのLinuxを使っていて、
WSL2に変えたいときがあるだろう。
変換する手段はあるので慌てずに。

##### 状態の確認

```shell-session
C:¥> wsl -l -v
  NAME   STATE  VERSION
* WLinux  Stopped 1
  Ubuntu  Stopped 2
```

##### WSL2に変換

```shell-session
C:¥> wsl --set-version WLinux 2
変換中です。この処理は数分かかることがあります...
```
もう一度状態を確認してみる。

```shell-session
C:¥> wsl -l -v
  NAME   STATE  VERSION
* WLinux  Stopped 2
  Ubuntu  Stopped 2
```

### WSL2のリセット方法

「アプリと機能」のアプリの詳細から「リセット」するのが定番だったけど、
コマンド一つでできるようになるみたい。

```shell-session
C:¥> wsl --unregister ubuntu
```

コマンドの後、「スタート」からLinuxを起動すると初期状態になっている。

### ターミナルをWindows Terminalに変える

個人的におすすめしたいターミナルが[Windows Termminal](https://www.microsoft.com/ja-jp/p/windows-terminal-preview/9n0dx20hk701)。
https://www.microsoft.com/ja-jp/p/windows-terminal-preview/9n0dx20hk701
タブ機能が標準で付いている。

### powerline対応フォントを入れる

powerlineというPython製のシェルがあるのだが、
それに対応したフォントがある。
https://github.com/powerline/fonts
install.ps1シェルをpowershellで走らせるとフォントがインストールされる


## Windows Insider Previewを使う場合

##### ・Previewプログラムに参加

　1. [Windows Preview Program](https://insider.windows.com/ja-jp/insidersigninboth/)に参加
　2. [Windows Insider の設定](ms-settings:windowsinsider)で「開始する」を押下

![2020-02-22 (7)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40697/bc5e054f-3a70-72a0-0d00-f30992a7b30c.jpeg)

　3. 「アカウントリンク」より自身のアカウントと紐付ける
　4. 「スロー」を選択
　5. 「再起動」
　6. 「設定」「更新とセキュリティ」「更新プログラムのチェック」を押下
　7. すべてのインストール完了後「再起動」
　8. （「Windows 10、バージョン????の機能更新プログラム」がインストールされるまで6,7を繰り返す）

![2020-02-22 (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/40697/a2c02898-5eec-0227-4c5c-cdd085fbb6e3.png)