ConoHaでCentOS8のVPSを用意する

#はじめに
縁あって、とある用途で使っていたVPSを移設することになりました。
移行先は[ConoHa](https://www.conoha.jp/vps/)
選定理由は色々あるけど、詳しくはかけないので省略。

**個人的なおすすめ点**を挙げるなら、
ConoHa応援団長の美雲このはちゃんが可愛いこと！　→　[オフィシャルサイトはこちら](https://conoha.mikumo.com/)
CVは上坂すみれさん。
私はすみっぺが声優デビューする前にKERAに出ていた頃からのファンなので、この点もポイントが高い。
また、ログイン後のコントロールパネルをこのはちゃん仕様にする「このはモード」が実装されているので、
ログインすればいつでもこのはちゃんと会えちゃいます！（会社では痛い目で見られることがあるけどね）
おっと、オタク語りが過ぎて、ただのキモオタおじさんになっていた。

本題に戻って、
今後、またサーバーいじる自分のために覚書の意を含めて記していきます。
ゴールについてはひとまず以下の通り。

* CentOS8の最低限のセットアップ
* 恐らく何かしらをするときに使うであろう以下のモノを用意
    * nginx
    * データベース
    * python

#早速設定をしていく
##今回やったこと
###VPSを立ち上げる
サイドメニューからサーバー追加をクリックすると構築情報入力画面に遷移する
今回はVPSを立てるので、VPSタブを選択
リージョン：東京（シンガポールも選べるが、東京の方が安い）
サーバープラン：今回は1GBを選びました
イメージタイプ：CentOS(8.0 64bit) ※現在8.1が最新
rootパスワード、VPSの名前を設定する
必要があればその他のオプションも設定する。
料金を確認して、問題なければ「追加」ボタンを押下する。

###OSの各ソフトウェアアップデート

```shell
yum update
```

###SELiuxの確認
確認したときは無効だったので、CONOHAではデフォでSELinuxが無効になっているようである。
しかし有効だとはまる原因になるので、一度自分の目で確認しておいて損はない。

```shell
getenforce
#SELinuxの無効化（必要な場合のみ）
setenforce 0
```
###FireWallが有効か確認
```shell
systemctl status firewalld
systemctl is-enabled firewalld
```

###時刻同期設定確認
```shell
systemctl status chronyd
systemctl is-enabled chronyd
```

###nginxの用意
```shell
yum install nginx
systemctl start nginx
systemctl enable nginx
systemctl status nginx
curl localhost
```

###Firewallの80ポートを開ける
```shell
firewall-cmd --add-port=80/tcp
firewall-cmd --runtime-to-permanent
```

ConoHaのコントロールパネルから　サーバー＞当該のサーバーを選択＞ネットワーク情報＞接続許可ポート
のチェックボックスが「全て許可」になっている事を確認する
※AWSで言うセキュリティグループ的なもの
　細かい設定をするにはAPIを叩かなければいけないので、
　任意のポートを開けるような設定をするときは少々めんどくさい
　本来は併用する方がセキュリティ的にはいいのかもしれないが、今回は未使用

設定後、Webサーバーに接続できるか、ブラウザから確認する。
ファイアーウォールやサーバーの設定が間違っているとつながらないはずなので、もしつながらなかったら、今までの設定を見直す。


###pythonのインストール
今回入れたConoHaのCentOS8はpython3.6が既に入っていた
pyまで入れてタブを打ってバージョンなどを確認
入っていなければyumで入れる(2系はサポートが終わっているので、3系が良い)

###pythonにエイリアスを付けておく
私はこれが使いやすいので、入れておくだけ

```shell
alias python=python3.6
```

###pipを入れる
```shell
curl https://bootstrap.pypa.io/get-pip.py -O
python get-pip.py
```

###dbのインストール
今回はmariadbを入れていきます。別に好きなDB入れてもらってかまわないです。mysqlでもぽすぐれでも

```shell
yum install mariadb
yum install MariaDB-server
systemctl start mariadb
systemctl status mariadb
systemctl enable mariadb
mysql
```

これでmysqlに入れるとこまで確認出来たので、続いて下記のコマンドを実行して中身を確認。

```SQL
show dagtabases;
quit
```

###SSHポート変更
viでSSHで接続できるポートを増やしていきます。
注意するべきことは、まず「増やす」ということ。
一気に切り替えようとすると**二度と接続できなくなる**こともあるので注意すること。
（なお、ConoHaにはWebコンソール機能が用意されているので、万が一の場合はこちらからアクセスを試みる）

```
vi /etc/ssh/sshd_config

---(変更前)
#Port 22
---
↓
---(変更後)
Port 22
Port 10022
---

firewall-cmd --add-port=10022/tcp
firewall-cmd --runtime-to-permanent
reboot
```

※ConoHaの許可ポートをいじっている場合は、10022も開けるように修正する。

SSHで10022で接続できることを確認する。
接続出来たら、22番ポートを閉じていく

```
vi /etc/ssh/sshd_config

---(変更前)
Port 22
---
↓
---(変更後)
#Port 22
---
```

###ユーザー作成
```shell
useradd username
passwd username
```

###作成したユーザーの昇格権を設定
```shell
usermod -G wheel username

vi /etc/pam.d/su

---(変更前)
#auth       required     pam_wheel.so use_uid
---
↓
---(変更後)
auth       required     pam_wheel.so use_uid
---
```

ここまで設定出来たら、新しいユーザーでssh接続して、sudo su -　が有効に実行できるか確認する。

###rootログイン制限
```shell
vi /etc/ssh/sshd_config
PermitRootLogin yes → no
systemctl restart sshd
```

##今回やらなかったこと
###セキュリティソフトの導入
本当は各種セキュリティソフト（tripwire,chkrootkit,Anitvirusなど）入れたほうが良い。
自分はあまり積極的に入れないが、重要度に応じてやればいいと思う。

###鍵認証によるログインの設定
こちらもセキュリティ的に設定したほうが良いのだが、今回は色々な理由から導入はいったん見合わせた。
なお、ConoHaではVPSを構築する際にSSH Keyを生成して設定しておいてくれる機能があるので、そちらを使うほうが便利である。


#まとめ
- コントロールパネルなども使いやすく、思っていたよりも簡単に導入できた
- 初期プリセットも無難になっておりパッと見では特に問題なさそう
- このはちゃんがやっぱりかわいい