EC2でPalWorldサーバを起動する。（Ubuntu Server 20.04 + LinuxGSM )


### EC2サーバ(Ubuntu Server 20.04)を立てる

###### Amazon マシンイメージ (AMI)
Ubuntu Server 20.04 を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2276454/7ad3f20e-1f96-271b-200f-8c62095186bb.png)

###### インスタンスタイプの選択
3-4人で遊ぶ想定ならm6a.large か　m6a.xlarge 
(公式推奨はメモリ16GB以上で3人ぐらいで少しラグがあるので、xlargeにしたほうが良い)

###### インスタンスの詳細の設定
特に変更なし

###### ストレージの追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2276454/117bbcf2-0719-36db-202d-4aca531df759.png)


:::note warn
余裕をもって15-20GBくらいにしておくと安心してインストールできます。
:::

###### タグの追加
特に変更なし

###### セキュリティグループの設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2276454/8af20967-e54d-0867-2ea0-85b793d54201.png)

デフォルトなら8211を開けてれば良い。

上記で設定出来たら「インスタンスの起動」でインスタンスを構築


### palworldサーバのインストール

lib32gcc1のインストール(LinuxGSM実行のための前準備）
```
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install curl wget file tar bzip2 gzip unzip bsdmainutils python3 util-linux ca-certificates binutils bc jq tmux netcat lib32gcc-s1  lib32gcc1 lib32stdc++6 libsdl2-2.0-0:i386 steamcmd

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2276454/99627c87-c189-bbdc-45a3-335c36544e56.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2276454/bea35cfb-5015-4974-6a00-bce410b8179b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2276454/80e6a263-426d-12ba-399e-aa4550f71a85.png)

:::note info
Do you want to continue? [Y/n] 
が表示されたら Y　を押下
:::
pwserverのユーザを追加。passwordの入力を求められるので入力する。
```
$ sudo adduser pwserver
```

一応、pwserverにsudo権限を与えてからユーザを変更する
```
$ echo "pwserver ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/pwserver
$ su - pwserver
```


linuxgsmをダウンロードしてから、palworldのサーバをダウンロードできる状態に設定する。
```
$ wget -O linuxgsm.sh https://linuxgsm.sh 
$ chmod +x linuxgsm.sh 
$ bash linuxgsm.sh pwserver
```

palworldのサーバをインストールする。
Y/nの入力を求められるので、Yを押下する。
```
$ ./pwserver install
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2276454/2e1bb7d7-6f7f-b325-0a41-2b77302fbeca.png)

```
$ ./pwserver start
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2276454/94606319-6fd0-ef9e-fe1d-4d0aa7c2c436.png)

サーバの状態を確認する。
```
$ ./pwserver details
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2276454/0b6c336a-ae9b-3818-1bd3-d20607791fee.png)

:::note info
 status:STARTED　となっていればサーバは問題なく起動している
:::

実際にゲームから接続してみて、接続できることを確認する。

:::note info
 パッチが当たった場合は以下のコマンドを実行してサーババージョンを更新する
:::
```
$ ./pwserver update
```

### サービス登録
 EC2起動時にpalWorldが起動するようにサービス登録をする
 参考：https://docs.linuxgsm.com/configuration/running-on-boot

サービスファイルを作成する
```
$ sudo vim /etc/systemd/system/palworld.service
```

内容は以下（userやdirectoryを変更している場合は読み替えてください）
 ```
 [Unit]
Description=pal world server
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
User=pwserver
WorkingDirectory=/home/pwserver/
#Assume that the service is running after main process exits with code 0
RemainAfterExit=yes
ExecStart=/home/pwserver/pwserver start
ExecStop=/home/pwserver/pwserver stop
Restart=no

ExecReload=/bin/kill -HUP $MAINPID
Type=simple

[Install]
WantedBy=multi-user.target
```

コマンドを実行して、サービス登録＋実行します。
```
sudo systemctl daemon-reload
sudo systemctl enable palworld.service
sudo systemctl start palworld.service
```

実行状態の確認
```
ps -eaf | grep pw
```

以下の内容が表示されていれば、起動に成功しています。
```
pwserver  ~~~省略~~~ tmux -L pwserver-cd269eb5 new-session -d -x 80 -y 23 -s pwserver  ./PalServer-Linux-Test EpicApp=PalServer -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -servername='LinuxGSM'
pwserver  ~~~省略~~~ ./PalServer-Linux-Test EpicApp=PalServer -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -servername=LinuxGSM
```

----------------------------------------------------------
その他　発生したエラーと対応

###以下のようなエラーが発生する
[ FAIL ] Starting pwserver: executable was not found
/home/pwserver/serverfiles/Pal/Binaries/Linux/PalServer-Linux-Test

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2276454/6f60a623-9fb0-75b2-78f5-26a64b2106c4.png)

対応
vi  ~/lgsm/config-lgsm/pwserver/pwserver.cfg
executable="./PalServer-Linux-Shipping"の記載を追加すると解決する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2276454/4f0039b4-7252-74fa-4dfa-691bf2132831.png)