Windows Subsystem for Linux（WSL)でUbuntu! and Git GitHub!!

:writing_hand_tone2:　WSL環境構築個人的メモ　:writing_hand_tone2:
---
この記事は
[「**N予備校Webプログラミングコース**」](https://www.nnn.ed.nico/)
２章ができる**最低限**の環境を構築を目標にした個人的メモです。

WSLは、バーチャルボックスで仮想環境を構築して～の手順を省いて
WinOS上でLinuxを扱えるスーパーな機能なのです。:v:

:skull:　必須環境　:skull:
`OS: Win10 バージョン1709（ビルド16299）以降`


`OSの更新`
スタートボタン　　(画面左下の四角)
　→ 設定⚙️
　　→ 更新とセキュリティ

##WSLインストール編

参考ページ　(というか、こっちを見てください:eyes:)
＠IT
https://www.atmarkit.co.jp/ait/articles/1608/08/news039.html


**WSL機能を有効にする**

**スタートボタン**を**右クリック**:punch_tone2:
　→ 「アプリと機能」　　　　(リスト一番上)
　　→ 関連設定「プログラムと機能」　　　　 (右側にあるリスト)
:point_up:`ウィンドウサイズが小さいと隠れます。見えない時は横にウィンドウを広げる
or 一番下までスクロール`:swimmer:

左リストのwindowsの機能の有効化または無効化をクリックして画面が開かれたら
「Windows Subsystem for Linux」のチェックボックスを**オン**にして**インストール**:star::sparkles:

インストールが終わったら再起動。

##Ubuntuパッケージをストアから導入

`スタートボタンから、Microsoft Store（買い物袋マーク）をクリック。`

スタートにピン止めしていない場合は、左端のリスト欄上から三番目の「すべてのアプリ」を
選択して「M」の項「Microsoft Store」を選択してください。

`Microsoft Store　右上の検索マークをクリックし「Ubuntu」で検索。`
表示されるリストの「**Ubuntu 18.04 LTS**」を選択。
（N予備校がUbuntuを使用しているので)。

選択したら
→　**入手**
　→　:star::sparkles:**インストール**:star::sparkles:

インストールを終わったら「**起動**」

ubuntu上で初期設定が始まるので、数分ほど待機。
設定が終わるとログイン名、パスワードを求められます。

ログイン名を入れ、そしてパスワードを記入。
パスワードはsudoという管理者コマンド使用時に聞かれます。空欄はダメらしい。

そしたら、ななななんと、Linuxが使えるように:angel:
## **WSLのUbuntu環境を日本語化編**
:star:はいここを参照してください:star:
＠IT
https://www.atmarkit.co.jp/ait/articles/1806/28/news043.html

1．パッケージ情報の更新
`sudo apt update`
`sudo apt upgrade`

2．日本語言語パックのインストール
`sudo apt -y install language-pack-ja`

3．ロケールを日本語に設定
`sudo update-locale LANG=ja_JP.UTF8`

4．ここでいったん終了してから、Ubuntuを再起動

5．タイムゾーンをJSTに設定
`sudo dpkg-reconfigure tzdata`

6．日本語マニュアルのインストール
`sudo apt -y install manpages-ja manpages-ja-dev`

##GitのインストールとGitHubでの設定
:point_right:　*既に自分のGitHubのページを持ってる状態で行ってください。*
1．Gitのインストール
`sudo apt install git`

2．GitHubとの連携に必要なSSHキーの作成
`ssh-keygen`
-秘密鍵のパーミッションを確認
 `ls -la ~/.ssh`

id_rsaのパーミッションが、
-rw-------
となっていないとGitHubと通信するときに
「セキュリティー甘いよ何やってんの！」と怒られます。:dancer_tone5:

なっていなければ、以下を実行。
`chmod 600 ~/.ssh/id_rsa`

3．問題がなさそうなら、クリップボードにキーをコピー。
`cat ~/.ssh/id_rsa.pub | clip.exe`

参考にしたページ
https://qiita.com/forest1/items/234026f7a305bf45f01a
##GitHub側の設定
(N予備生なら２章１３章をみたほうがわかりやすいです)

GitHubサイトの右上、アカウントのSettingsから "SSH and GPG keys" を選択。
**※前の設定は消さないでください。あっても問題ないですので。**

右上の"New SSH key"を押し

- Titleには、何のSSHKeyなのか自分でわかるような名前
- keyにクリップボードから公開鍵をペースト
- "Add SSH key"を押す
で完了。

##接続確認
`ssh -T git@github.com`
何か聞かれたらyes。

`Hi [github登録ID] ! You've successfully`
:point_up:と出たら成功です。

##ホームディレクトリをエクスプローラで開く。
WSLはlinuxのコンソールからエクスプローラー(win)が開けます。
エクスプローラを開くコマンド
`explorer.exe .`

＊N予備校のテキストに合わせる場合＊
上のコマンドでエクスプローラを開いたら、開いたところに
`workspace`フォルダを作成します。(フォルダは右クリックから作れます)

作ったら、そのフォルダを**VScode**の左側の空白(エクスプローラ)にドロップ:candy:
これで、WSL上でもN予備校と同じ環境にできた・・はず？
##PostgreSQL をインストール
まず、PostgreSQL のインストールから。
`sudo apt update`
`sudo apt install -y postgresql-10`
そしてLinux ユーザーでログインするまではN予備校のテキスト通りですが、
環境によっては、再起動しないと動きません。ので、このコマンド。
`sudo /etc/init.d/postgresql restart`
これで３章２２項もOK!
(wslのUbuntuは再開毎にリスタートコマンドを打たないとDBが起きない模様)

追記：データベース作成時に
`WARNING:  could not flush dirty data: 関数は実装されていません`
とでますが、これはWSLの問題らしくデータベース自体は問題なく作成
されているので無視していいようです。

##herokuのインストール
N予備校のテキストではSnappyを使った
`sudo snap install --classic heroku`  
コマンドでHeroku CLIをインストールとありますが、
WSLではサポートされていないので、こちらのcurlコマンドでインストールしてください。
`sudo curl https://cli-assets.heroku.com/install.sh | sh`

※yarn.lock と package-lock.json　ファイルが、デプロイ中のエラー原因になるときが
　ありますが、デプロイ中のログで rmコマンドでlockファイルを消せと丁寧に指示されるので、
　言われたら消せばデプロイできます。:thumbsup_tone2:

---
N予備校のLinux環境構築がどうにもうまくいかない時、
Win10の方はお試しください。

---
追記：**2章7項「通信とネットワーク」**
WSLは `tcpdump`コマンドが使えないそうなので、この部分は読むだけになります。

追記：**3章12項「ログ」**
あえて同じポート番号を使って二つのサーバーを立ち上げてエラーを起こすくだり、
後からたてたサーバをWSLが無視するのでエラーがでません。:robot:

![Z3BqLk5VYVZBQWNVcW5mM3RrRC9haWRlbS9tb2MuZ21pd3Quc2JwLy86c3B0dGg=-f42.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212989/bec5fd23-005f-0aba-4a6c-1c4a81da300d.jpeg)