yps並走備忘録　Task1 EC2インスタンス作成～SSH接続～環境設定＠Win環境

Twitterで無料で公開されているカリキュラム[yps](https://github.com/yotaro-ok/yps)に今月より並走を開始しました。
備忘録がてら一通り書き残しておこうと思います。

ちなみに自分の環境は少数であろうWin環境なので、マイナーが故に困った人の役に立てばと思います。
用語や理解は適当なので間違ってたら教えてくださいまし…

事前準備
- [Task0](https://github.com/yotaro-ok/yps/blob/master/task_0.md)をまず読みルールを理解する
- amazon AWSのアカウント
- GitHubのアカウント(task3までは不要)

##推奨
- [Linux標準教科書](https://linuc.org/textbooks/linux/) 
*無料のPDF、Linuxコマンドで迷ったら読む
- [TeraTerm](https://forest.watch.impress.co.jp/library/software/utf8teraterm/)　
*yotaro氏は推奨,個人的にはVS Code x コマンドプロンプトでも今のところ不自由なし

#[Task1](https://github.com/yotaro-ok/yps/blob/master/task_1.md) クラウド環境の準備

**事前にやること** 
- AWSのアカウント開設
- コマンドプロンプトをすぐ使えるようにしておく（自分はタスクバーに固定しています）

##Task1 手順
参考：https://github.com/yotaro-ok/yps/blob/master/task_1.md

###Step1. EC2でCentOSインスタンスを作成（クラウドに仮想サーバーをセットアップ）
**ザックリとした流れ**
EC2 ⇒　インスタンス　⇒　インスタンス作成　⇒　無料枠のCentOS7選択 ⇒　料金表を確認、t2.micro（無料枠）を選択　⇒　ストレージを30GiBに変更　⇒　インスタンスの作成＆起動　⇒　キーペアを作成　⇒　インスタンスの表示

**ステップ詳細**
1. AWSマネジメントコンソールで**「EC2」**を選択
2. 左側のメニューから**「インスタンス」**を選択
3. 青い**「インスタンスの作成」**ボタンを押す
4. 左側の**「無料枠のみ」にチェック**を入れ、**「AWS Marketplace」**をクリック
5. 上部の検索バーに**「CentOS7」**と入力してEnter
5. 無料枠終了後の料金表が出てくるので右下の**Continue**をクリック
6. インスタンスタイプの選択画面で上から２番目、**「無料利用枠の対象」**と緑色で表示されている**「t2.micro」**をにチェックを入れる
7. 右下の**「次のステップ：インスタンス詳細の設定」**をクリック
7. 詳細設定は特に設定するところなしなので、そのまま右下の**「次のステップ：ストレージの追加」**をクリック
8. 真ん中らへんにサイズ（GiB）と書いたボックスがあるので**30と入力**（※初期はおそらく8になってます）
9. **「次のステップ：タグの追加」**をクリック
10. タグは特に追加しなくてもＯＫなので、追加しなければ**「次のステップ：セキュリティグループの設定」**をクリック
11. **「確認と作成」**をクリック
12. 「起動」をクリックすると「既存のキーペアを選択するか、新しいキーペアを作成します。」と表示されるので、**「新しいキーペアの作成」を選択、適当な名前をつけ、ダウンロード**します（これのファイルが後ほどパスワードの代わりなります）
13. 請求が不安な方は「請求アラートの作成」からメールを設定しておけば無料枠を使い切りそうな時に通知が来ます。
14. **「インスタンスの表示」**をクリック
15. **インスタンスの状態が「running」になっていれば作成完了**
（このウインドウは環境設定などでもそのまま使うので閉じずに残しておきましょう）

### Step.2 SSH接続（クラウドに作成したインスタンスに自分のパソコンから接続）
1. ダウンロードした秘密鍵ファイル（.pemファイル）をデスクトップに移す
2. 作成したインスタンスを選択し、IPv4パブリックIPと書いてあるものをコピー（※右側にコピーアイコンが出るので使うことを推奨）
2. コマンドプロンプトを開いて下記3 ~ 5のコマンドを順番に打つ
3. `mkdir .ssh` （**解説：**.sshという隠しフォルダを作成）
4. `copy Desktop\xxxx.pem .ssh`  （**解説：**デスクトップの秘密鍵ファイルを先ほど作成した.sshファイルにコピー）
5. `ssh centos@xx.xx.xx.xx -i .ssh/xxx.pem` (**解説：** centosユーザーとしてxx.xx.xx.xxのIPアドレスにssh接続　-i の後ろの秘密鍵ファイルを使いますよ）
6. `whoami`と打ってcentosと表示されれば接続完了

###Step.3 環境設定（色々いじれるようにしていく＆悪意のある接続がされないように設定変更）
上記SSHで接続した状態で以下のコマンドを入力してSELinuxを無効化し、設定をいじれるようにする

2. `sudo setenforce 0` (**解説：**sudoは管理者権限を利用できるようにするコマンド、SELinuxを一時的に無効化）
2. `sudo vi /etc/selinux/config`(**解説：**SELinuxのファイルを編集）
3. 画面に表示された中から **「SELINUX = enforcing」**と書いてあるところを見つけて**「SELINUX=disabled」**に変更 
    - *iキーで編集モード、wqで保存して終了
4. `getenforce` と打って**Permissive**と返ってくれば一先ずＯＫ
5. AWSのマネジメントコンソール画面に戻って右下のセキュリティグループと書いてある横の**「CentOs 7」から始まる青文字のリンク**をクリック
6. 下の方にある**「インバウンドルール」**をクリックして、**「インバウンドルールを編集」**ボタンをクリック
7. 左側にある**「ルールを追加」**をクリック
8. タイプは**「カスタムＴＣＰ」**を選択
9. ポート範囲に**「49152～65536内の任意の番号」**を入力（ポート≒サーバーに入るためのドア番号）
9. ソースは**「カスタム」**ですぐ横の虫眼鏡のところに**0.0.0.0/0**を入力
10. 右下の**「ルールを保存」**をクリック
11. コマンドプロンプトで下記のコマンドを入力
12. `sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org` （**解説:** sshd_configの元のファイルをsshd_config.orgというファイル名でバックアップ)
13. `sudo vi /etc/ssh/sshd_config` (**解説：** sshd_configファイルを編集して、サーバーコンピューターのアクセス周りの設定をする）
14. sshd_config ファイル変更点（ルートユーザーのログインを禁止して、自分で設定したポートからしか入れないようにする操作）
 - 「#Port 22」と書いてあるところの22という数字を10.で設定したポート番号へ変更（#はコメントアウトの意なので外す）
 - 「#PermitRootLogin Yes」と書いてあるところを「PermitRootLogin No」へ変更（#はコメントアウトの意なので外す）
 - i で編集モードを終了し、:wqで変更を保存してターミナルへ戻る
15.　変更が正しいかを確認
- `sudo sshd -t` と打って何も表示されなければ設定はＯＫ
- `sudo systemctl restart sshd` でサーバーを再起動して設定を反映する
16. 以下のコマンドを打ってスワップ領域（サーバーのメインメモリ足りなくなった際に使うsshdの領域）を作成
 - `sudo -s /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024`
 - `sudo -s /sbin/mkswap /var/swap.1`
 - `sudo -s /sbin/swapon /var/swap.1`
 
### Step.4 環境設定完了の確認
1. ログインしているターミナル画面で`exit`と打って、一度ログアウト
2. コマンドプロンプトで下記のコマンドを打ってログインできるか確認
 - `ssh -p xxxxxx(設定したポート番号) centos@xx.xx.xx.xx(EC2のIPアドレス） -i .ssh/xxx(秘密鍵のファイル名）.pem`
3. ログインできていればポートの設定は問題なくできているので
    4. AWSのマネジメントコンソールへ戻り
    5. インバウンドルールの編集から
    6.SSH （ポート22)を削除、ルールを保存

**なお、インスタンスが１つ以上稼働しているとAWSは課金されるので、使用しているインスタンス以外は停止もしくは終了させる**

ここまでできたら一先ずクラウドにサーバーができたのでTask1終了

###おまけ
サーバーにログインした際に分かり易いように下記の手順を行うとターミナルの色が変わるので分かり易くなります。
1. `vi ~/.bashrc`
2. `#User specific aliases and functions`と書いてあるところの下へ下記をコピペ
3. `export PS1="\[\e[1;36m\][\u@\h \W]\\$ \[\e[m\]"`
4. `:wq`で保存
5. `source ~/.bashrc`で設定を反映

なお、`[1;36m\]`の36を変更することによりターミナルの色を変更できます
> 参考： https://qiita.com/wildeagle/items/5da17e007e2c284dc5dd