0
0

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-03-13

はじめに

今回記事を書くのが初めて。
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を作る。

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

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

1-1.必要なファイル

ファイル名 詳細
1 /etc/systemd/system/~~~.service 「~~~」の所は自分で好きなファイル名にしてもろて。
今回僕は適当に「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した時の実行処理内容
screenソケット名「minecraft」でrun.shを実行するよって意味。
ソケット名付けないと実行したscreenへアタッチするの難しくなるから、何かしら名前は付けようね。
ExecReload systemctl reloadした時「minecraft」ってソケットでリロードコマンド実行する
ExecStop systemctl stopした時(以下略
[Install] WantedBy default.targetとどっち書いときゃいいか分からん。
今回はこれで動いたしヨシ!

1-3.daemon読み込み

ファイルができたんでこれを読み込む。
因みにだけど、読み込まずにサービス操作しようとすると確か怒られた気がする。

    # systemctl daemon-reload

そしたら試しにサービスにあるか見てみよう。

    # 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で見てみて。
enabledになってればとりあえずここまでOK。
次は起動してみる。

    # 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案内します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0