在使用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
今回僕は適当に「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
简单介绍一下设定的内容吧。
※如果有专家发现我的解释不正确,请原谅。
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