ConoHa VPSでマイクラ鯖を立てた時の話

# はじめに
今回記事を書くのが初めて。
Markdownとか普段触らなくなってしまってよく分からないなりに頑張って書くので許してくだちぃ。(ネットワークエンジニア・25歳・男性)

# 概要
身内でマイクラやろうってなった時にMOD入マイクラ鯖(Forge)を立てたはいいけど自動バックアップやら自動再起動(OSもサービスも)したいよねってなった時の話。
おさらいも兼ねてここに残しておこうかなと。
(突然命令口調で書いてあったりするけど、それは自分に向けてなので許して。)

# そもそもとして
なんで残そうと思ったかって言うと、MOD入り鯖の作り方みたいなサイトはあるけども、鯖を常時起動させる設定はscreen使いましょうって言ってるとこまではいいんだけど、OS自体の再起動とかしたときに結局自分でscreen使って実態ファイル叩き起こしてあげないと復旧にならないじゃんって言うようなページしかなかったんだよね。
リフレッシュを兼ねて自動バックアップしたらOSも一回再起動して、OS起動時にマイクラ鯖サービスも起動してほしいなって僕は思ったのでそのメモ。

# 構成
- OS
    CentOS Linux release 7.9.2009
因みにConoHa VPSを使ってみた(CentOS8系にしなかったのは僕がまだ8系の細かい所知らなかったから)
今回遊ぶのはバニラじゃないのでMinecraftオプションは付けていない。(そもそもバニラ鯖ならココに記事は残してないと思う)

- マイクラバージョン
  1.17.1 Forge

# とりあえず最初の構築から
参考サイトは以下
- 【失敗しない】ConoHa VPSでマイクラMODサーバーを立てる方法
  - https://sukiburo.jp/setup-conoha-vps-mod/
↑ココにあるようにバージョン1.16まではサーバーファイルがjarだったんだけど、1.17からrun.shってファイルに置き換わったんだよね。

ここは本題ではないのでサクッとscreenで起動できるとこまで来たとして。

因みにインストールディレクトリは **｢/usr/local/games/minecraft/｣** を想定。

# 1.OS再起動しても自動で鯖が開始してほしい
なのでサーバーファイル(run.sh)をOS起動時にscreenから実行するseviceを作る。

<font color="Red">~~**OS起動時に実行するって検索すると｢rc.local｣でのやり方とか出てくるけど絶対これでやるな。(戒め)**~~</font>
互換性のためとか云々で残っているサービスだけど、systemd(推奨)に置き換わってるので特段理由がなければ素直にsystemdを使う。

ってことでsystemdに追加します。


## 1-1.必要なファイル

|＼|ファイル名|詳細|
|---|---|---|
|1|/etc/systemd/system/~~~.service|｢~~~｣の所は自分で好きなファイル名にしてもろて。<br>今回僕は適当に｢minecraftserver.service｣。|

## 1-2.~~~.serviceの内容

~~~ /etc/systemd/system/~~~.service
    [Unit]
    Description=Minecraft server start
    After=network.target

    [Service]
    User=root
    WorkingDirectory=/usr/local/games/minecraft/
    ExecStart=/bin/sh -c '/usr/bin/screen -DmS minecraft sh run.sh'

    ExecReload=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "reload"\\015'

    ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "save-all"\\015'
    ExecStop=/usr/bin/screen -p 0 -S minecraft -X eval 'stuff "stop"\\015'

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


一応設定内容の説明をすると＿
**※有識者の方僕の説明間違ってたらごめんなさい。**

|＼|オプション|詳細|
|---|---|---|
|[Unit]|Description|Unitの説明|
||After|このUnitより先に起動するUnit(今回コレいるかワカンネ)|
|[Service]|User|どのユーザでの実行権限でやるか|
||WorkingDirectory|作業ディレクトリ(カレントディレクトリ)|
||ExecStart|systemctl startした時の実行処理内容<br>screenソケット名｢minecraft｣で**run.sh**を実行するよって意味。<br>ソケット名付けないと実行したscreenへアタッチするの難しくなるから、何かしら名前は付けようね。|
||ExecReload|systemctl reloadした時｢minecraft｣ってソケットでリロードコマンド実行する|
||ExecStop|systemctl stopした時(以下略|
|[Install]|WantedBy|default.targetとどっち書いときゃいいか分からん。<br>今回はこれで動いたしヨシ!|

## 1-3.daemon読み込み

ファイルができたんでこれを読み込む。
因みにだけど、読み込まずにサービス操作しようとすると確か怒られた気がする。
~~~
    # systemctl daemon-reload
~~~
そしたら試しにサービスにあるか見てみよう。
~~~ systemctl list-unit-files
    # systemctl list-unit-files

    minecraftserver.service                       disabled (自分の作ったサービス名でこんな感じに出てくればおk)
    NetworkManager-dispatcher.service             enabled
    NetworkManager-wait-online.service            enabled
    NetworkManager.service                        enabled
    nfs-rquotad.service                           disabled
~~~ 

## 1-4.サービス起動
ここまで来たらあとはサービスを立ち上げてみる。
まずはサービスの有効化をする。

~~~ systemctl enable minecraftserver.service
    # systemctl enable minecraftserver.service
~~~
何も出なければきっと有効化している。
もっかい**systemctl list-unit-files**で見てみて。
<font color="Red">**enabled**</font>になってればとりあえずここまでOK。
次は起動してみる。

~~~ systemctl start
    # systemctl start minecraftserver.service
~~~

そしたら、何かあっても何もなくてもStatusチェック。(今回は無事OKとして。)

~~~ systemctl status minecraftserver.service
    # systemctl status minecraftserver.service

    ● minecraftserver.service - Minecraft server start
    Loaded: loaded (/etc/systemd/system/minecraftserver.service; enabled; vendor preset: disabled)
    Active: active (running) since Sun 2022-03-13 21:51:15 JST; 2h 6min ago
    Main PID: 963 (screen)
    CGroup: /system.slice/minecraftserver.service
           |-963 /usr/bin/SCREEN -DmS minecraft sh run.sh
           |-967 sh run.sh
           |-970 java @user_jvm_args.txt @libraries/net/minecraftforge/forge/...
~~~

ここまで出来ればあとはOS再起動しても勝手に立ち上がってくるはずなのでこれで完了。

バックアップやバックアップ後の再起動処理云々とかはまた別記事か、もしくはこの記事の後半として追記するかも。(いずれにしても近いうちに書く)

ひとまずはこれでお疲れ様。

続きの記事を公開したので以下URL案内します。
- ConoHa VPSでマイクラ鯖を立てた時の話(バックアップとかOS再起動とか)
  - https://qiita.com/tarpon2525/items/1e173bfee286d9339557