Minecraft Java 版 1.18 服务器升级备忘录

首先

こんにちは withでエンジニアをしているhayatonです。(最近入社したのでピチピチの若手です。)
withでは サーバ周りのお仕事をさせてもらっています。

今回、アドベントカレンダーで記事を書かせていただくこととなり、何を書こうかと悩んでいたところに、
Minecraftの大型アップデートがきた。ということもあり、その内容を記事にさせていただきました。

このドキュメントはマイクラサーバの構築手順ではありません。バージョンアップ作業にフォーカスをおいたものです。

私は、マイクラ(Minecraft JavaEdition 1.11ぐらいから)にハマっています。(公共事業大好き勢)
一人だけでは飽き足らず、自前でサーバを構築し友人同士と同じ世界で楽しんでおります。(鯖管兼任)
そのサーバのアップデートについて

    • 自分の作業備忘録

 

    気づいたポイント(3つ)

の2点についてこの記事に記載します。

割と定期的にあるバージョンアップ作業なのですが、忘れがちなので、次のバージョンアップ向け自分用メモだったりしますが、
もしこの記事を読んで、何かしらで詰まっている方の解決への気づきなどが提供できたら嬉しいなと思い、書いてます。

2021/12/13 追記
先日のlog4j脆弱性問題を受けて、サーバのバージョンが1.18.1に変更となっています。
1.18の方は、バージョンアップをおすすめします。
https://www.minecraft.net/ja-jp/article/minecraft-java-edition-1-18-1
JDKバージョンはそのままでOKです。

我的服务器环境信息。

AWS Lightsail

内存/CPU/磁盘:4GB RAM / 2 vCPU / 80GB SSD
操作系统:Debian
模块:无(原始)
备份:每日(到谷歌云存储)
Java路径:/usr/local/java
Minecraft路径:/home/minecraft
操作用户:minecraft

作业备忘录(版本升级)

1. 改变运行的Java版本

之前的Minecraft 1.17.1需要运行的Java版本是16。
而本次的Minecraft 1.18则升级到了Java版本17。(本次一同进行版本升级。)
順便提一下,這個環境使用的是openjdk運行,但我認為也可以正常運行在JavaSE上。

成为任务用户。

$ su minecraft

[1] 下载Java17

$ wget "https://download.java.net/java/GA/jdk17.0.1/2a2082e5a09d4267845be086888add4f/1
2/GPL/openjdk-17.0.1_linux-x64_bin.tar.gz"

[2] 进行展开并安装Java

在我的环境中,我将想要使用的Java文件创建了一个符号链接,路径位于/usr/local/java。
※ 虽然最好使用alternatives,但请原谅我。
lrwxrwxrwx  1 root      root        10 Dec  1 02:07 java -> jdk-16.0.1
drwxr-xr-x  8 minecraft minecraft 4096 Jun 25 22:57 jdk-16.0.1

所以,

$ tar zxvf openjdk-17.0.1_linux-x64_bin.tar.gz 
$ sudo mv jdk-17.0.1 /usr/local/.
$ cd /usr/local
$ sudo rm java
$ sudo ln -s /usr/local/jdk-17.0.1 java
$ ls -la /usr/local
...
lrwxrwxrwx  1 root      root        10 Dec  1 02:07 java -> jdk-17.0.1
drwxr-xr-x  8 minecraft minecraft 4096 Jun 25 22:57 jdk-16.0.1
drwxr-xr-x  8 minecraft minecraft 4096 Dec  1 02:07 jdk-17.0.1
...

作为安装完成后的确认。

$ /usr/local/java/bin/java --version
openjdk 17.0.1 2021-10-19
OpenJDK Runtime Environment (build 17.0.1+12-39)
OpenJDK 64-Bit Server VM (build 17.0.1+12-39, mixed mode, sharing)

那就好了。

2. 下载并安装用于Minecraft服务器的jar文件。

[1] 下载 Minecraft 服务器用的 jar 文件。

$ wget "https://launcher.mojang.com/v1/objects/125e5adf40c659fd3bce3e66e67a16bb49ecc1b9/server.jar"
$ mv server.jar minecraft_server.1.18.1.jar

[2] 安装jar文件.

我在我的环境中将其安装在/home/minecraft。
目前根据每次版本升级的需要,我重新创建了符号链接。
-rw-r--r--  1 minecraft minecraft 43626592 Jul  6 21:05 minecraft_server.1.17.1.jar
-rw-r--r--  1 minecraft minecraft 43621201 Jun  8 20:03 minecraft_server.1.17.jar
lrwxrwxrwx  1 minecraft minecraft       25 Dec  1 01:54 minecraft_server.jar -> minecraft_s
erver.1.17.1.jar

所以 (suǒ yǐ)

$ mv minecraft_server.1.18.1.jar /home/minecraft/.
$ cd /home/minecraft
$ rm minecraft_server.jar
$ ln -s minecraft_server.1.18.1.jar minecraft_server.jar
$ ls -la 
...
-rw-r--r--  1 minecraft minecraft 43626592 Jul  6 21:05 minecraft_server.1.17.1.jar
-rw-r--r--  1 minecraft minecraft 43621201 Jun  8 20:03 minecraft_server.1.17.jar
-rw-r--r--  1 minecraft minecraft 46323386 Nov 30 18:20 minecraft_server.1.18.1.jar
lrwxrwxrwx  1 minecraft minecraft       25 Dec  1 01:54 minecraft_server.jar -> minecraft_s
erver.1.18.jar
...

假设这样。

3. 在启动前备份世界数据。

备份保留

尽管没有发生过故障,但出于习惯而这样做。(养成这个习惯非常重要)

在进行备份时,附上版本信息可能会很方便。

$ cd /home/minecraft
$ cp -rp world world_1.17.1

4. 启动 (qǐ

开启

在我的环境中,已经包含了systemctl。
$ sudo systemctl status minecraft 
$ sudo systemctl start minecraft
$ tail -F logs/latest.log
[02:08:39] [Worker-Main-2/INFO]: Loaded 7 recipes
[02:08:40] [Worker-Main-2/INFO]: Loaded 1141 advancements
[02:08:43] [Server thread/INFO]: Starting minecraft server version 1.18
[02:08:43] [Server thread/INFO]: Loading properties
[02:08:43] [Server thread/INFO]: Default game type: SURVIVAL
[02:08:43] [Server thread/INFO]: Generating keypair
[02:08:44] [Server thread/INFO]: Starting Minecraft server on *:25565
[02:08:44] [Server thread/INFO]: Using epoll channel type
[02:08:44] [Server thread/INFO]: Preparing level "world"
[02:08:44] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld

如果有这样的情况发生,那就可以了。
我还看到了关于1.18版本正常运行的日志。

注意到的要点

[1] 升级后的初始启动需要花费一些时间。

这次更新之后,服务器启动的时间花了很长时间。(一瞬间还以为崩溃了。)
即使花费时间很长,也请不要强制退出。

[02:10:32] [Server thread/INFO]: Done (108.070s)! For help, type "help"

大约不到2分钟吧。

[2] 有时候,在发布后,服务器端的Jar文件可能会比前一个版本落后一步。

我根据此页面表示已经更新至1.18版本立即下载了jar文件,然后替换了jar文件,准备启动!但是在此时,日志一直显示1.17.1已启动。

[01:49:31] [Server thread/INFO]: Starting minecraft server version 1.17.1

唉,其实我已经拿来了新的啊,但在比较之前的jar文件和哈希值时,发现它们是相同的,原来我下载了旧版本。
然后我再次访问了上述的网站,确认已经更新为新的版本,并进行了替换操作。
虽然在发布后网页显示已变化,但下载的jar文件可能仍然是旧版本。
通过检查之前的jar文件和下载的jar文件的md5值,确认是否有变化可能是个明智的选择。

[3] 尽管并不远离,但是新的元素已经得到反映。

我认为这是这次最令人惊叹的地方。虽然不是关于技术的问题,而是关于游戏内的问题,但以前,只有在远离的地方移动时才能确认更新内容,才能将世界信息从升级前的版本带过来是很常见的。以前,只有走到之前没读过的区块才能出现新元素。

然而,这次的更新使得之前已探索过的区块也能通过进入地下发现新元素。这真是令人惊讶的事情。非常感谢Minecraft开发团队的努力和辛苦工作。(向他们致敬)

最后

感谢您阅读这篇文章直到末尾。虽然自从进行了版本升级以来目前还没有出现问题,但如果有任何情况发生的话,我会再次撰写文章。

希望这篇文章首先是作为我工作备忘录的主要目的,
但如果有人遇到问题并阅读了这篇文章后能够找到一些有用的东西,我会很高兴。

在师走忙碌的时期,Minecraft 开发团队居然推出这么大规模的更新,真是厉害啊!他们可真是 Minecraft 界的鬼才呢!哈哈

广告
将在 10 秒后关闭
bannerAds