0からMonobitでクラサバシステムを構築した備忘録 #1 サーバー構築編

# はじめに
本記事ではMonobit(Unity)を利用して簡単なクライアントサーバーシステムを作るための作業を、備忘録として残します。
サーバーとかよく分からん、クライアントサイドのことしか知らねーって人のために、サーバー構築から全て資料として残しておきます。

## 構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/f682522e-bec8-d97d-9dba-28786f6d0f37.png)

サーバーのOSは、MUN2.0が対応しているものであれば、使い慣れたもので良いかと思います
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/dec3339f-8e0b-9d55-599a-3e5e63be2818.png)


## AWSでサーバーを作る
基本的に下記の公式ドキュメントの通りに設定していきます。
以下に記載する内容は公式ドキュメントの内容をうすーくなぞっているだけなので、
ちゃんとやる気がある人は↓を読んでください(読みたくないからQiita見てるんだろうけど)
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html

### 1.AWSにログインする(アカウント作成は省略)
### 2.キーペアを作成する
キーペアとは、後に作成するEC2のインスタンスを起動する際に求められる認証用の鍵です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/46addd94-7549-e260-6926-56168cb3d108.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/3db406ea-417c-84fb-e698-9c8f2c3c293a.png)

キーペアを作成すると「～.ppk」という名前の秘密鍵がDLされます。
秘密鍵を無くすとインスタンスに接続できなくなるので、作った鍵は大切に保管しましょう。

### 3.セキュリティグループを作成する
セキュリティグループとは、後に作成するEC2のインスタンスのファイアウォールです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/c15e3853-ad5a-3e27-f80b-e391dc081496.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/4e4a559e-3ee5-7f77-58a1-3d4279dc4d4d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/586a14e6-96bf-a012-ce7e-698445dac5fa.png)


### 4.EC2ダッシュボードよりEC2インスタンスを起動する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/0ed892df-bd7b-0ec2-2a0a-baeaf7a26438.png)
特に拘りがなければ「Amazon Linux 2」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/b236fa08-9b02-9aa7-4402-8d292a1baa66.png)
(とりあえず)無料利用枠の「t2.micro」でインスタンスを作成します。
後でインスタンスタイプは変更可能なので、インスタンスを作る際は石油王でなければとりあえずt2.microを選んでおけばおｋ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/3fee68d0-4a3e-df28-b7a3-8048046fadd3.png)
特に拘りがなければこのまま次のステップを押し続けてステップ6:セキュリティグループの設定まで進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/f2837300-b063-edaf-0690-a37d0f5860af.png)
ステップ7で確認を求められるので「起動」を押下すると、キーペアの入力を求められるので、前のステップで作成したキーペアを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/65449934-4db3-1f07-5386-732c86da12cb.png)

インタンス作成後、EC2のインスタンスに名前をつけます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/78ac20ba-e26b-b417-dc61-8dc1b852161b.png)

以上で、とりあえずAWS上にサーバーを立ち上げることができました。

## サーバーの初期設定
お好きなSSHクライアントを使用して立ち上げたEC2インスタンスに接続します。
とりあえずここではPuttyを使用します(Puttyのインストール方法は割愛します)
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

### サーバー接続設定
Puttyを起動して下記の通り設定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/83acf599-bb0e-be3a-0da0-6adb5a95e413.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/91f02dc1-1ea4-0572-3907-6e37522bb93e.png)
接続に成功するとコンソールが開くので、下記の通り入力してEnter
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/882efe57-9b5d-8f65-a4de-e64e37697e5d.png)

おめでとうございます。これでサーバーにログインすることができました。
CUI(Vim)に慣れてない人は、こんなコンソール見せられても何したらええんじゃって感じだと思いますが、

**良い機会です。Vimに慣れましょう。**
VimのことはGoogle先生に聞けば色々教えてくれます。
流石にVimのことを説明するのはめんどいので、調べてください。

一応LinuxをGUIで動かせますが、本資料ではこのままVimで説明を続けます。
GUI化すると、とっつきやすくはなりますが、世の中の資料がたいていVimで説明されているので
初心者は逆に混乱しそうな気がします。

### サーバーの初期設定
T.B.D.

### MUN2.0のデプロイ

WinSCPを使用してMUN2.0のサーバープログラムをデプロイ(配置)します。
ルート権限がないとWinSCPからファイルのデプロイができないので、そのへんも合わせて下記の通り設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/48443544-661a-a521-e62f-8ead3b746efe.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/da08400e-4a49-2832-f6b1-641fd99db5ab.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/ed7b73ab-89fb-874e-7234-9f3f886dd7a4.png)

あとは下記の資料の通り、MUN2.0のサーバープログラムをデプロイします。
http://www.monobitengine.com/doc/mun/contents/SetupServer/Prepare_Linux.htm#%E3%82%AA%E3%83%B3%E3%83%97%E3%83%AC%E3%83%9F%E3%82%B9%E7%89%88%20MUN%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E5%B0%8E%E5%85%A5

パッケージのインストール**(C++,C#両方)**まで進めてください。

**※重要※　上記Monobitの資料中のfirewallの設定は2021/05/20時点で誤っています。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/8b040828-e420-a1dc-88ec-b3974d0a4761.png)
**上記のポートを開放せよと書いてありますが、実際は/opt/mun/server/csharp/appsettings.json定義されているポート番号を開放する必要があります。公式資料の通りに設定してもクライアントからサーバーに接続することはできませんので注意してください(気づくのに丸2日かかりました)**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/43f1e5d0-fe41-cbae-0beb-88c61b6f948f.png)


また、今回AWS上にサーバーを立てたので、**上記資料のポート開放の部分はAWSのセキュリティグループで設定します。**
AWS上のセキュリティグループからインバウンドルールの設定を下記の通り追加してください。
下記はTCPとUDPを使う場合の設定例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216921/79cdec10-0639-953f-7bf5-2e84123a75a3.png)


## サーバーサイドのビルド等
サーバーサイドプログラムのビルド・実行等は下記の資料の通り。
http://www.monobitengine.com/doc/mun/contents/SetupServer/Execute.htm

ここまでやればとりあえずサーバーサイドの準備は完了です。