さくらVPSでCentOS8の環境を用意する

# 概要

さくらVPSを契約すると、デフォルトでCentOS7の環境になってしまいます。
せっかく使うなら新しい環境がいいので、CentOS8の環境を用意します。

# CentOS8のセットアップ

各種設定 -> OSインストール

![スクリーンショット 2020-10-02 19.48.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/23bf8e55-4bb9-7843-0681-5c614d052fb2.png)

カスタムOSを選択し、インストールOSから CentOS 8 x86_64 を選択する。

![スクリーンショット 2020-10-02 19.48.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/d230b0bf-3fa9-f8be-ceeb-93a4ed911763.png)

インストールを実行するボタンを押下。

![スクリーンショット 2020-10-02 19.49.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/5bed3503-78eb-815a-2232-27b5cd5521ab.png)

しばらく待つと、画面下部にVNCコンソールを起動ボタンが表示されるので押下。
`Language Support`と`Installation Destination`の2つの設定をしていく。

![スクリーンショット 2020-10-02 19.53.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/b65ffa2a-ede8-356a-a2c5-863f8bd58fd0.png)

 まずは`Language Support`で日本語を選択してDone

![スクリーンショット 2020-10-02 19.54.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/27f1e88e-b8a6-013f-c23b-30ad4a33ca38.png)

`Installation Destination`の画面で表示されている赤枠部分をとにかく選択して全部削除（`-`ボタンを押下）

![スクリーンショット 2020-10-02 20.00.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/dc123ee5-6869-c2de-f4e0-ed81f189dcee.png)

削除したらこんな感じ。

![スクリーンショット 2020-10-02 20.00.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/c155e493-748a-2de9-7868-aab6d83b769b.png)

`Click here to create them automatically`リンクを押下

![スクリーンショット 2020-10-02 20.01.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/124d5438-6968-00d2-e252-46e1b24ef810.png)

こだわりがあればパーティションを自分で設定し、特になければDoneボタンを押下

![スクリーンショット 2020-10-02 20.03.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/630bac3d-76fd-f09f-557a-b72b99f67509.png)

`Accept Changes`ボタンを押下

![スクリーンショット 2020-10-02 20.28.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/277aaaf8-b5d8-4d82-7cc1-f53732762cb3.png)

`Begine Installation`ボタンを押下

![スクリーンショット 2020-10-02 20.03.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/31e1be33-f3a3-bf23-e87e-409a90ad869a.png)

インストール中の画面になるので、ここで`Root Password`を設定

![スクリーンショット 2020-10-02 20.03.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/024cbab9-b2dc-0d38-6f09-ea46a4e1a42f.png)

任意のパスワードを設定してDone

![スクリーンショット 2020-10-02 20.05.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/cc56871e-420c-13bf-671d-7648b490b1cd.png)

rootユーザー以外に作る場合は作ってDone

![スクリーンショット 2020-10-02 20.07.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/7489e453-0f46-b483-52c8-c648bfeea6d2.png)

なんかエラーみたいな画面が出ますが、この状態がインストール完了の状態っぽいです。

![スクリーンショット 2020-10-02 20.24.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/11e64a5f-7603-f1d1-b472-608fb0b651b2.png)


さくらVPSのコントロールパネルから起動ボタンを押下

![スクリーンショット 2020-10-02 20.16.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/631e2ba6-d7a9-4a2a-d74a-5c2e747f26c8.png)

私の環境はMacなのでTerminalを起動して、以下のコマンドでSSH接続を確認する。

```shell-session
$ ssh yamaguchi@199.19.199.199
The authenticity of host '199.19.199.199 (199.19.199.199)' can't be established.
ECDSA key fingerprint is SHA256:abcde99zxyJ1jMEtDSr8DZC6GzrmvExoE1oPoySlw30.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '199.19.199.199' (ECDSA) to the list of known hosts.
yamaguchi@199.19.199.199's password: 

$ less /etc/redhat-release 

CentOS Linux release 8.2.2004 (Core) 
/etc/redhat-release (END)

```

とりあえずCentOS8のインストールだけ完了。

# 初期設定いろいろ

## とりあえずdnf update

```shell-session
$ sudo dnf -y update

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

[sudo] yamaguchi のパスワード:
メタデータの期限切れの最終確認: 0:07:40 時間前の 2020年10月02日 20時28分01秒 に実施しました。
依存関係が解決しました。
行うべきことはありません。
完了しました!
```

特に更新は無いんですね

## Time Zoneの確認

日本人に優しいですね。すでにAsia/Tokyoになってるんです。

```shell-session
$ timedatectl status
               Local time: 金 2020-10-02 20:37:22 JST
           Universal time: 金 2020-10-02 11:37:22 UTC
                 RTC time: 金 2020-10-02 11:37:21
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
```

## Localeの確認

あ、ここは`en_US.UTF-8`なんですね。

```shell-session
$ localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: jp106
      X11 Layout: jp
```

```shell-session
$ sudo localectl set-locale LANG=ja_JP.UTF-8
[yamaguchi@tk2-253-36402 ~]$ localectl status
   System Locale: LANG=ja_JP.UTF-8
       VC Keymap: jp106
      X11 Layout: jp
```

## Vimは入れておきます

```shell-session
$ sudo dnf -y install vim
```

## SSH Keysでのセキュアな接続設定

クライアントマシン（Mac）のターミナルでRSAキーペアを作成します。

```shell-session:Macでのコマンド
$ cd ~/.ssh
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/you_name_is_yu/.ssh/id_rsa): sakura_id_rsa
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in sakura_id_rsa.
Your public key has been saved in sakura_id_rsa.pub.
The key fingerprint is:
....


$ ls -la | grep sakura
-rw-------   1 you_name_is_yu  staff  2675 10  2 20:56 sakura_id_rsa
-rw-r--r--   1 you_name_is_yu  staff   592 10  2 20:56 sakura_id_rsa.pub
```

Macで作ったRSAキーペア


```shell-session:Macでのコマンド
$ ssh-copy-id -i sakura_id_rsa.pub yamaguchi@199.19.199.199

/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "sakura_id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
yamaguchi@199.19.199.199's password: 

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'yamaguchi@199.19.199.199'"
and check to make sure that only the key(s) you wanted were added.
```

この時点で、さくらVPSのサーバーに`sakura_id_rsa.pub`のキーが指定されたアカウントにアップロードされています。
念のため確認してみましょう。

```shell-session:さくらVPSのコマンド
$ cd ~/.ssh
$ $ ls
authorized_keys
```

これでMac側からssh接続する際、ID/PASSを入力せずに鍵認証でログインできるようになります。

```shell-session:Macのターミナル
$ ssh yamaguchi@199.19.199.199 -i ~/.ssh/sakura_id_rsa
Last login: Fri Oct  2 20:52:39 2020 from 60.125.73.203
```

パスワードなどは聞かれませんでした。

## rootアカウントでのSSH接続の無効化

```shell-session:さくらVPS
# sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
# sudo vim /etc/ssh/sshd_config
```

```config:/etc/ssh/sshd_config
PermitRootLogin no  # yes -> no に変更
```

設定が完了したらsshdを再起動

```shell-session
$ sudo systemctl restart sshd
```

rootでsshできないことを確認する。
以下のように`Permission denied`と出ればOK

```shell-session:Macターミナル
$ ssh root@199.19.199.199
root@199.19.199.199's password: 
Permission denied, please try again.
```

もちろん、さくらVPSのコントロールパネルから、コンソールでアクセスすることは可能なので、
何かミスってrootどころか普通のユーザーでもssh接続できなくなっちゃった場合でも大丈夫です。

とりあえず、CentOS8の環境の基本的な部分は設定できたと思います。

## さくらVPSパケットフィルタの設定

今回構築している環境では、nginx+phpでのWebアプリケーションを想定しているため、80や443のポートに接続できる必要があります。
デフォルトでは、どのポートも空いていないようなので、その設定をしておきます。

パケットフィルタ設定へボタンを押下

![スクリーンショット 2020-10-03 7.53.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/6a411c6e-291c-8eb8-efbf-0e789327a5e0.png)

パケットフィルタを利用するを選択　＞　フィルタの用途からWebを選択　＞　設定を保存するボタンを押下

![スクリーンショット 2020-10-03 7.54.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/b67a37ae-4a5d-dce1-8565-a59651922ff1.png)

設定が完了するとパケットフィルタタブの表示が以下のようになる。

![スクリーンショット 2020-10-03 7.55.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/7914e23f-f3cb-fc09-7603-069490d10964.png)

**この設定をすると、今度はSSHが繋がらなくなるみたいなので、SSHもパケットフィルタに設定する必要があるみたいです。**

パケットフィルタ以外に、CentOS8のfirewallの設定でもhttp/httpsの設定をしてあげないといけないっぽいので

```shell-session
$ sudo firewall-cmd --add-service=http --zone=public --permanent
$ sudo firewall-cmd --add-service=https --zone=public --permanent
$ sudo firewall-cmd --reload
```

これをしてあげれば、とりあえずnginxのWelcomページに遷移できました。