在使用ConoHa VPS搭建Minecraft服务器的时候的经历

首先

这是我第一次写这篇文章。
由于很久没有接触Markdown之类的东西,所以不太明白,但是我会尽力写的,希望你们能谅解。(网络工程师,25岁,男性)

摘要

在我们决定在家里玩《我的世界》时,我设立了一个安装了Forge的服务器,但是后来我们想要自动备份和自动重启(包括操作系统和服务),对吧。
也顺便复习一下,就把这个留在这里吧。
(虽然写作里有突然的命令口吻,但那只是对自己说的,请原谅。)

首先

为什么我想要保留这段对话呢,因为虽然有一些关于制作带MOD的服务器的网站,但是他们只是说要使用screen来设置服务器的长期运行,但实际上,当操作系统进行重新启动时,你仍然需要手动使用screen来启动服务器的实体文件,否则无法进行恢复。我觉得可以在自动备份的同时进行一次操作系统重启,希望在操作系统启动时也启动我的Minecraft服务器服务。这就是我想写的备忘录。

组成

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ってファイルに置き換わったんだよね。

既然这不是正题,那就快速地启动屏幕,直到能够到达这一点。

顺便提一下,安装目录假设为”/usr/local/games/minecraft/”。

希望服务器能够在操作系统重新启动后自动开始运行。

所以要创建一个在操作系统启动时从screen中执行服务器文件(run.sh)的service。

当你搜索在操作系统启动时执行的相关信息时,会出现一些关于在”rc.local”中实现的方法之类的,但是绝对不要使用这种方法。(警告)
尽管这些服务可能是为了兼容性之类的原因而保留下来的,但是系统已经推荐使用systemd进行替代,所以如果没有特殊理由,就应该毫不犹豫地使用systemd。

这样,我们将把它添加到 systemd 中。

1-1. 必需的文件 de

\ファイル名詳細1/etc/systemd/system/~~~.service「~~~」の所は自分で好きなファイル名にしてもろて。
今回僕は適当に「minecraftserver.service」。

1-2.~~~.service的内容 -> 1-2.~~~.服务的内容

    [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]DescriptionUnitの説明
AfterこのUnitより先に起動するUnit(今回コレいるかワカンネ)[Service]Userどのユーザでの実行権限でやるか
WorkingDirectory作業ディレクトリ(カレントディレクトリ)
ExecStartsystemctl startした時の実行処理内容
screenソケット名「minecraft」でrun.shを実行するよって意味。
ソケット名付けないと実行したscreenへアタッチするの難しくなるから、何かしら名前は付けようね。
ExecReloadsystemctl reloadした時「minecraft」ってソケットでリロードコマンド実行する
ExecStopsystemctl stopした時(以下略[Install]WantedBydefault.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 list-unit-files命令来看看。
如果是enabled状态,那暂时可以说到这里没问题。
下一步我们尝试启动。

    # systemctl start 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/...

只要做到这一步,然后重新启动操作系统,它应该会自动启动,这样就完成了。

备份和备份后的重新启动处理等等,可能会另外有一篇文章,或者追加在本文后半部分。(无论如何,我会尽快写)

暂时先用这个表示辛苦了。

由于发表了续文,下面是相关的URL链接。

    • ConoHa VPSでマイクラ鯖を立てた時の話(バックアップとかOS再起動とか)

https://qiita.com/tarpon2525/items/1e173bfee286d9339557

广告
将在 10 秒后关闭
bannerAds