今回はARKのゲームサーバーをCrontabでモニターして起動する方法で使ってきましたが、Systemdのデーモン(Service)化すると異常停止時に再起動したり、ログを残せたり簡単に再起動できたりと良いことずくめなのでデーモン化することとしました。
起動スクリプト
まず、起動用のスクリプトを用意します。
基本的にはゲームサーバーのメインのバイナリをオプションと一緒に起動するだけのシェルスクリプトになります。
今回はフィヨルドのマップにしました。
保存する場所はどこでもいいですが、私はoptに置きました。
/opt/ark/bin/Fjordur.sh
Serviceの登録
次に、サービスとして登録していきます。
登録の仕方は以下のディレクトリに(サービス名).serviceというUnit定義ファイルを作成するだけです。
/etc/systemd/system/
今回はフィヨルドマップなので「ark_fjordur.service」という名前にしました。
内容は以下の通りです。
Restartのところをon-failureとすることで異常終了した際に再起動するようにしています。
ExecStartで先ほど作成したスクリプトを指定してあげます。
これで基本的にはServiceの登録は終了です。
Serviceの起動
次に登録したサービスを起動していきます。
基本的には管理者権限が必要となります。(sudo必要)
まずはサービスの有効化をします。
sudo systemctl enable ark_fjordur
これで有効化されます。
次に起動します。
sudo systemctl start ark_fjordur
これで起動されます。
あとは基本的にはずっと起動してくれます。
状態を確認するには以下のコマンドを使用します。
sudo systemctl status ark_fjordur
以下のように状態を確認できます。
● ark_fjordur.service - ARK Fjordur Game Server Loaded: loaded (/etc/systemd/system/ark_fjordur.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2023-07-16 11:44:51 JST; 12h ago Main PID: 3628739 (Fjordur.sh) Tasks: 17 (limit: 4584) Memory: 3.0G CGroup: /system.slice/ark_fjordur.service ├─3628739 /bin/bash /opt/ark/bin/Fjordur.sh └─3628740 /home/akira/Steam/servers/ark/ShooterGame/Binaries/Linux/ShooterGameServer Fjordur?listen?SessionName=YokohamaKaitaku?ServerPassword=Kaitakumin?ServerAdminPassword=KatakuminAdmin -server -log 7月 16 11:44:51 v133-18-232-25 systemd[1]: Started ARK Fjordur Game Server. 7月 16 11:44:52 v133-18-232-25 ark_fjordur[3628740]: [S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed. 7月 16 11:44:53 v133-18-232-25 ark_fjordur[3628740]: Setting breakpad minidump AppID = 346110
Serviceの停止・再起動
サーバーのアップデート等で停止・再起動が必要になりますが以下のコマンドで行うことができます。
停止
sudo systemctl stop ark_fjordur
再起動
sudo systemctl restart ark_fjordur
以上、ARKサーバーのデーモン化でした。