GCPの無料枠でWordPressを起動して運用するまでの備忘録 1

### 背景
AWSで利用していた無料利用枠の期限が来てしまったので、GCPの無料枠に移行してみました。その時ハマってしまったことを備忘録として残しておきます。
### 動作環境
- dynabook B351/13D PB35113DSTW
    - OS:Windows 10 Home Ver.1809

Windows 10 から Tera Term で GCP の VMインスタンスに接続して設定しています。
### GCP の無料枠に登録
- [これから始めるGCP（GCE）　安全に無料枠を使い倒せ][1]
[1]:https://qiita.com/Brutus/items/22dfd31a681b67837a74
↑こちらを参考にさせて頂きました。「プロジェクトの作成」までは、手順通りです。

### 仮想マシンインスタンスの作成
ここもほぼ一緒ですが、イメージは使い慣れている Ubuntu で軽い方がよいと判断したため「Ubuntu 18.04 LTS Minimal」を選択しました。
この後気付かされますが、「Minimal」だと vim が入っていないなど不便な点もありました。
### SSH接続
SSH のプルダウンから「gcloud コマンドを表示」を選ぶと、Cloud Shell でインスタンスに接続できるのですが、正直言ってどこに繋いで何をしているのかよくわかっていません。取り敢えず、ブラウザウィンドで接続します。

#### SSH 認証鍵の作成
「PuTTY key generator」で public(公開鍵)/private(秘密鍵)の key pair を作成します。
![PuTTY01.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236301/f3a29e95-2438-2064-854b-7b6de2c12de0.jpeg)

#### SSH 公開鍵の登録
作成した公開鍵をメタデータ>SSH認証鍵にコピぺして保存。
メモ帳からコピペするとき改行が入っているので、一行に修正してペーストする。
![メタデータ02.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236301/dc4bedab-4265-3d5c-bf1a-8ab4d48a0343.jpeg)
#### Tera Term で接続
ユーザ名は Google アカウントになります。パスフレーズは、key pair 作成時のもの。
秘密鍵は、公開鍵とペアのモノを選択して「OK」押下します。
![TeraTerm01.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236301/72f529e8-91b8-041f-fd35-7bb67ce1d2d6.jpeg)
![TeraTerm02.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236301/32b8bd12-97fc-3f67-9353-1966a38b18d3.jpeg)
#### sshd.conf の設定変更
- 以下のコマンドを実行して、設定ファイルをバックアップ

`$ sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org`

- 以下のコマンドを実行して、ポート番号を変更

`$ sudo sed -i -e "s/#Port 22/Port 変更したいポート番号/g" /etc/ssh/sshd_config`
#### ファイアーウォール ルールの設定
プロトコルとポートの22を、上記で変更した番号に変えて保存。
![ファイアウォール01.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236301/14eb409e-ca91-d3a3-f25e-bf59dfdd29ac.jpeg)
インスタンスを再起動しておく。
#### Tera Term でインスタンスに入れることを再確認
ポート番号を変更して接続できることを確認します。
再起動するとサイトの外部IPが変わっている場合があるので、注意して接続する。
### 時刻設定を日本時間にする
インスタンスの時刻設定はUTCになっているため、タイムゾーンをアジア(東京)に設定する。

- 以下のコマンドを実行

`$ sudo apt-get install tzdata`
地域とタイムゾーンを以下のとおり選択する。
`Geographic area: 6`
`Time zone: 79`

date コマンドで時刻を確認。

`$ date
Sat May  4 17:36:41 JST 2019`

※tzdata がインストールされている場合は、次の通りに設定する。
`$ sudo timedatectl set-timezone Asia/Tokyo　#タイムゾーン設定`
`$ sudo timedatectl #設定確認`
### vim をインストールしておく
viが入っていないとなにかと不便なので、vim をインストールしておきます。
`$ sudo apt-get update`
`$ sudo apt-get upgrade`
`$ sudo apt-get install vim`
### スワップ領域の設定
- [【第5回】GCPの無料枠でdev.toなみの爆速WordPress環境を構築する（KUSANAGI Runs on Docker編）][2]
[2]:https://www.karelie.net/free-fast-wordpress-site-kusanagi-docker/
ここからは、↑ こちらを参考にさせて頂きました。

無料枠のメモリは 0.5GB と少ないので、スワップ領域を確保しておきます。

```latex
$ free -m
              total        used        free      shared  buff/cache   available
Mem:            581         422          77          16          81          64
Swap:             0           0           0
```
スワップが「０」と表示されているため、未設定。
Swapファイル領域を 2.0GB 確保してみた(処理に1ー2分かかる)。

`$ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048`

パーミッションの変更

`$ sudo chmod 600 /swapfile`

Swapの作成

`$ sudo mkswap /swapfile`

Swapを有効にする

`$ sudo swapon /swapfile`

Swapの確認

```latex
$ free -m
              total        used        free      shared  buff/cache   available
Mem:            581         355          46          20         180         114
Swap:          2047         286        1761
```
先ほど「0」になっていたのが「2047」となっている。
このままでは再起動した際にSwapファイルは無効になるので下記のコマンドで永続化する必要がある。

```latex
$ sudo sed -i '$ a /swapfile                                 swap                    swap    defaults        0 0' /etc/fstab
```

再起動

`$ sudo reboot`

再起動後、Swap の確認。

```latex
$ free -m
              total        used        free      shared  buff/cache   available
Mem:            581         355          46          20         180         114
Swap:          2047         286        1761
```
### 静的アドレスを予約する
インスタンスを停止して再起動するとIPアドレスが変わってしまうため、静的アドレスを予約してIPアドレスが変わらないようにします。
![IP アドレス01.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236301/c473e400-22da-f0ae-98e5-159991b26326.jpeg)
予約して未使用の場合は料金が発生するので、使わなくなったらすぐに解放しておきましょう。
### まとめ
これで環境が整いました。次回はいよいよ Docker をインストールします。