AWS Lightsail 入門4 基本設定（CentOS 7）

## 本記事の内容
- Lightsailインスタンス（CentOS 7）に対して、OSの基本設定を行う。

## 前提条件
- Lightsailインスタンス（CentOS 7）を作成済み。

※他のOS・バージョンでは、コマンドが異なる場合があります。

[AWS Lightsail 入門1 インスタンス作成](https://qiita.com/s8ta/items/fd274b05b083bcf36dba)

## 作業の進め方
ブラウザ版ターミナルか、SSHクライアントでコマンドを入力していく。

次の例では、コマンド`cat /etc/redhat-release`を入力し、OSのバージョンを確認している。

```
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
```

※入力するコマンドには、プロンプト`$`を含めない。

## 管理者（root）への切替
本記事で入力するコマンドは、管理者権限が必要なものが多い。
最初にrootに切り替えておく。（末尾のハイフンを忘れずに）

```
$ sudo su -
```

管理者権限が必要なコマンドは、プロンプトを`#`で表記する。

## スワップ領域の追加
Lightsailの最安プラン（3.5ドル）はメモリが512MBと少ない。
メモリが不足してもプログラムを実行できるよう、スワップ領域を追加する。

※SSDをメモリの代わりに使うので、速度的には遅くなる。
本設定はメモリが一時的に不足したときのためのエラー防止策で、日常的に不足するならメモリ量が十分な上位プランを選択した方が良い。

### スワップ領域の確認（追加前）
```
$ free -h
              total        used        free      shared  buff/cache   available
Mem:           485M         98M        260M        8.4M        126M        365M
Swap:            0B          0B          0B
```

Swapの[total]が0Bとなっており、スワップ領域が割り当てられていない。

### スワップファイルの作成・有効化
ディスク上に1GBのスワップファイルを作成し、有効化する。
※複数のコマンドを1行にまとめているので、コピー漏れに注意。

```
# dd if=/dev/zero of=/swapfile bs=1M count=1024 && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
```

1GB以外で作成する場合は`count=n`を変更する。例えば`count=2048`では、2GBになる。

※スワップのサイズを増やせばメモリ不足のリスクは減るが、ファイル保存先として使えるディスク容量は少なくなる。
Lightsail最安プランのディスクは20GBなので、バランスを考えて設定する。

### スワップ領域の確認（追加後）
```
$ free -h
              total        used        free      shared  buff/cache   available
Mem:           485M         96M        6.0M        8.4M        382M        367M
Swap:          1.0G          0B        1.0G
```

### OS起動時の自動マウント設定
OS起動時、自動的にスワップ領域が有効化されるようにする。

```
# echo "/swapfile swap swap defaults 0 0" >> /etc/fstab
```

## パッケージの更新
導入済みのパッケージを更新する。
内容を確認しながら進める場合は、オプション`-y`を外す。

```
# yum -y update
```

最後に「Complete!」と出力されれば更新完了。
念のため、更新可能なパッケージが残っていないか確認する。

```
$ yum check-update
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: d36uatko69830t.cloudfront.net
 * extras: d36uatko69830t.cloudfront.net
 * updates: d36uatko69830t.cloudfront.net
```

## OSの再起動
パッケージの更新を確実に反映するため、Lightsail管理画面よりインスタンスを再起動する。

<img width="50%" alt="aws-lightsail-04-001.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010477/87887bd4-c391-a5f8-7aff-0f15b71fd600.png">

コマンド`sudo reboot`で再起動しても問題なかったが、EC2ではOSコマンド以外の方法が推奨されている。

>インスタンスからオペレーティングシステムの再起動コマンドを実行する代わりに、Amazon EC2 コンソール、コマンドラインツール、または Amazon EC2 API を使用してインスタンスを再起動することをお勧めします。Amazon EC2 コンソール、コマンドラインツール、または Amazon EC2 API を使用してインスタンスを再起動する場合、インスタンスが数分以内に完全にシャットダウンしないと、ハードリブートが実行されます。

[インスタンスの再起動 - Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-reboot.html)

Lightsailは管理画面での手順のみで、コマンドによる再起動については言及されていなかった。
[Amazon Lightsail インスタンスの開始、停止、または再起動 | Lightsail ドキュメント](https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/lightsail-how-to-start-stop-or-restart-your-instance-virtual-private-server)

## タイムゾーンの変更
デフォルトは時刻がUTCで表示されるため、日本時間に変更する。

### 時刻の確認（変更前）

```
$ date
Sun Jan 17 10:42:45 UTC 2021
```

### 日本時間に変更

```
# timedatectl set-timezone Asia/Tokyo
```

### 時刻の確認（変更後）

```
$ date
Sun Jan 17 19:42:52 JST 2021
```

## まとめ
Lightsailの最安プランで、CentOSを使用する場合の基本設定を紹介した。
特に、メモリは512MBと少ないので、スワップ領域の追加は忘れずに行っておきたい。