打开/关闭菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

检测到您可能正在使用存疑的代理服务器访问寻星知识库。为了避免匿名用户使用代理服务器恶意破坏,我们已经限制了您在寻星的部分权限(例如编辑和创建账户)。

您可以关闭代理使用国内真实IP或联系寻星团队为您的IP添加白名单,从而使用寻星知识库的全部功能。如果您曾经正常注册过寻星知识库账户,则您在当前情况下登录将解除部分限制。

如果您已经使用正常的IP访问寻星知识库,但仍然出现此消息,请您尝试刷新缓存或联系寻星团队。

Minecraft开服:修订间差异

✨寻星知识库——携手与您,寻觅群星。
 
(未显示2个用户的23个中间版本)
第79行: 第79行:


=== 下载使用第三方JDK ===
=== 下载使用第三方JDK ===
据说 Azul Zulu 这种第三方JDK 比 OpenJDK 性能要好。
''据说一些第三方JDK 比 OpenJDK 性能要好。''


请阅读:[https://docs.papermc.io/misc/java-install Papermc的java安装教程]


1. 访问 https://www.azul.com/downloads ,往下翻,选好Java Version、Operating System、Architecture,点下载
=== 使用数据盘而不是系统盘 ===
''有些[[云服务商]]会把系统盘和数据盘分开,你希望把服务端存档放在数据盘上。''
 
 
 
 
1. 使用<code>fdisk -l</code>查看系统中所有磁盘信息。(用<code>lsblk</code>显示所有块设备信息也行)
/* 这里省略掉一些 /dev/loop* 块 */
Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 1446C59D-B388-4F17-9F44-E4B60CCC0FAC
Device      Start      End  Sectors Size Type
/dev/vda1    2048    4095    2048  1M BIOS boot
/dev/vda2    4096  2101247  2097152  1G Linux filesystem
/dev/vda3  2101248 41940991 39839744  19G Linux filesystem
Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 18.102 GiB, 20396900352 bytes, 39837696 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 
从这个示例输出上我们可以看出,/dev/vdb 是还没使用的数据盘,/dev/vda 是已挂载的数据盘。(接下来的教程将以 vdb 和 vda 做例子,实际使用时请以你的块设备名字(如/dev/sdb)为准。)
 
 
 
2. 用 <code>cfdisk</code> 对 /dev/vdb 进行一个分区(下面是分区完毕的截图)。(和 <code>fdisk</code> 相比,有TUI,使用“方便”点)
 
[[文件:Minecraft开服-cfdisk.png|边框|284x284像素]]


2. 浏览器右键复制下载链接、取消下载:


[[文件:MC开服-提示和技巧-第三方JDK-获取下载链接.png|边框|415x415像素]]


3. 转到服务器SSH,运行下面命令把安装包下到你服务器上:
3. 分区完毕。使用 <code>mkfs.ext4 /dev/vdb1</code>指令给这个分区创建一个[https://wiki.archlinuxcn.org/wiki/Ext4 Ext4文件系统]。
  wget [你刚才获取到的下载链接]
 
4. 用包管理器把第三方JDK安装到你服务器上(我这里是apt):
4. OK!现在你就可以把这个分区挂载到一个文件夹看看效果了。
  apt install ./[下载过来的安装包文件名]
 
不知道安装包文件名的话,使用  <code>ls</code> (列出当前文件夹下的文件)命令即可。
<code>mkdir test</code>  ''':新建一个test文件夹'''
 
<code>mount /dev/vdb1 ./test</code> ''':挂载 /dev/vdb1 到 该目录下的 test 文件夹'''
 
用 <code>lsblk</code> 看看挂载上没有:
 
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
  loop0                      7:0    0  55M  1 loop /snap/core18/1880
loop1                      7:1    0 55.7M  1 loop /snap/core18/2812
loop2                      7:2    0 63.9M  1 loop /snap/core20/2105
loop3                      7:3    0 71.3M  1 loop /snap/lxd/16099
loop4                      7:4   0 91.9M  1 loop /snap/lxd/24061
  loop5                      7:5    0 29.9M  1 loop /snap/snapd/8542
sr0                        11:0    1  364K  0 rom  /mnt/cdrom
vda                      252:0    0  20G  0 disk
├─vda1                    252:1    0    1M  0 part
├─vda2                    252:2    0    1G  0 part /boot
└─vda3                    252:3    0  19G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0  19G  0 lvm  /
vdb                      252:16  0  20G  0 disk
└─vdb1                    252:17  0  20G  0 part /root/test
 
vdb1 右边的 MOUNTPOINT 值不为空,而是<code>/root/test</code>,说明已经挂载上了。
 
<code>cd test</code>  ''':转到 test 文件夹。'''
 
目前 test 文件夹被 vdb1 挂载,所以你在 test 文件夹里面做的新建、删除等操作就是对 vdb1 设备的根目录下做的操作。
 
原 test 文件夹下内容会被“屏蔽”。
 
<code>ls test</code> ''':显示 test 文件夹下的内容。''' 由于 test 文件夹被 vdb1 挂载,所以这个指令实际上显示的是 vdb1 设备根目录下的内容。
 
<code>umount test</code> :'''把''' '''挂载在 test 文件夹下的文件系统 卸载掉。'''简单理解就是把 vdb1 卸载。这里不仅可以用 <code>umount test</code> 还能用 <code>umount /dev/vdb1</code>。
 
 
 
 
5. 测试完毕!不过 mount命令 挂载的vdb1,重启就失效了 。。。
 
好消息! 我们可以修改 <code>/etc/fstab</code> 文件,让系统在启动时把 vdb1 自动挂载上,避免重启就失效的问题。
 
 
用 <code>cfdisk /dev/vdb</code>指令获取<code>/dev/vdb</code>硬盘下的分区信息(包括文件系统UUID)。。
 
[[文件:Minecraft开服-cfdisk2.png|180x180像素]]
 
 
 
 
<code>nano /etc/fstab</code> :用 <code>nano</code> 编辑器'''打开 <code>/etc/fstab</code> 这个文件''',这里也可以用你喜欢的编辑器如 vim。
 


=== 使用数据盘而不是系统盘 ===
有些[[云服务商]]会把系统盘和数据盘分开,你希望把服务端存档放在数据盘上。


<code>> lsblk</code>
<code>/etc/fstab</code>添加下面一行,来让系统在启动时自动把 <code>[你分区文件系统的UUID]</code> 对应的文件系统挂载到<code>[你想要挂载到的目录]</code>
UUID=[你分区文件系统的UUID] [你想要挂载到的目录] ext4 defaults 0 2


<syntaxhighlight lang="bash">
参见 https://wiki.archlinuxcn.org/wiki/Fstab<nowiki/>,了解<code>/etc/fstab</code>以及你添加的那行文字的含义。
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                      7:0    0  55M  1 loop /snap/core18/1880
loop1                      7:1    0 55.7M  1 loop /snap/core18/2812
loop2                      7:2    0 63.9M  1 loop /snap/core20/2105
loop3                      7:3    0 71.3M  1 loop /snap/lxd/16099
loop4                      7:4    0 91.9M  1 loop /snap/lxd/24061
loop5                      7:5    0 29.9M  1 loop /snap/snapd/8542
sr0                        11:0    1  364K  0 rom  /mnt/cdrom
vda                      252:0    0  20G  0 disk
├─vda1                    252:1    0    1M  0 part
├─vda2                    252:2    0    1G  0 part /boot
└─vda3                    252:3    0  19G  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0  19G  0 lvm  /
vdb                      252:16  0  20G  0 disk
</syntaxhighlight>


* 用 MCSManager 的话,可以把实例的“工作目录”设定为 vdb1 挂载的文件夹,或者直接把 vdb1 挂载到实例当前正在使用的工作目录上
* 可以将defaults按需修改为其他值来获取一些性能提升,参见 https://wiki.archlinuxcn.org/wiki/Fstab#atime&#x20;参数


=== 以非root账户运行mc服务端 ===
mc服务端 或许还有未被发现的安全漏洞,服务端插件也可能存在 恶意代码/安全漏洞/后门。


以root账户运行 mc服务端 有可能导致主机上的其他业务(例如数据备份脚本)被入侵。


另见  [https://madelinemiller.dev/blog/root-minecraft-server/ Why you shouldn't run a Minecraft server as root]、[https://unix.stackexchange.com/questions/372850/how-to-run-command-as-different-user how-to-run-command-as-different-user] 、[https://wiki.archlinuxcn.org/wiki/Su su]。


<references />
<references />

2024年7月27日 (六) 05:42的最新版本

🎓 这是一份侧重于科普的教程性条目。

开MC服指的是 建立Minecraft多人游戏服务的行为

该条目旨在以简明、通俗易懂的方式讲解开MC服的多种常用方式。


想要开MC服,先拥有下列基本的“物资”。

  1. 一个可以稳定运行MC服务端软件的环境。
  2. 一个可以将你运行的MC服务端软件暴露在互联网(公网)上,方便你MC服未来的玩家们与其建立连接的网络环境。

其中,MC服务端软件负责模拟世界的运行,它还开放了一个通讯端口,监听来自玩家的连接请求。玩家与MC服务端软件建立连接后,MC服务端就会处理玩家发送的各种交互动作,并将世界状态实时更新到玩家客户端上。[1]

接下来为你讲述常用的多种开MC服的方式

方法一:租用云服务器

这类物资(24x7稳定运行xx的环境把你的MC服务端软件暴露在互联网上的网络环境)通常可以通过云服务商购得。

云服务商是指提供基于互联网的各种计算资源和服务的公司。它们允许个人、企业和组织通过网络访问和使用计算能力、存储空间以及其他服务,而无需在本地购买和维护硬件设备。云服务商通常提供多种服务,包括计算实例、存储、数据库、网络、人工智能服务等。[1]

1. 云服务器

我们可以把 "云服务器" 想象成一种在互联网上可租用的计算机。它不同于你的常规电脑,你无法实物接触到它,但是你可以通过互联网来控制和操作它。

云服务器也被称为 "虚拟私人服务器"(Virtual Private Server, VPS),它的操作方式类似于你家里或者办公室的电脑。你可以安装操作系统、运行应用程序、存储数据、在网络上访问等。

具体来说,云服务器有以下几个主要特点:

  1. 弹性资源: 你可以根据需要增加或减少云服务器的 (CPU, 内存, 磁盘存储)等资源,而不需要关闭或重装系统。
  2. 按需付费: 你只需要为你实际使用的资源付费,而不是所有资源。这种 "按需付费" 的价格模式使得云服务器成为一种非常高效且经济的解决方案。
  3. 可靠性和安全性: 由于云服务器是在数据中心中提供的,因此它们通常比传统的服务器更安全、更可靠。如果硬件发生故障,服务提供商通常会自动将你的云服务器迁移到其他硬件,以避免服务中断。
  4. 全球访问: 由于云服务器位于互联网上,因此无论你在世界的哪个角落,只要有互联网连接,你就可以访问并操作云服务器。

这些特点使云服务器成为网站托管、数据存储、数据分析、远程工作和学习、互联网应用开发等许多应用的理想选择。[1]

看完了GPT对云服务器的介绍,相信你对云服务器这个概念已经有不少了解了!!那么,对开MC服这个需求来讲,云服务器

  • 不仅可以稳定地运行你的MC服务端软件,
  • 它的 全球访问 的特点也可以让你MC服的玩家们轻松地访问你开的服!


[TODO]

相关链接 MCSM面板管理软件介绍页
相关云服务商链接 [TODO]

2. 面板服

一些云服务商注意到了小白开MC服的需求,推出了所谓的面板服

面板服基于云服务器,但是是预先为你调试配置好了。有些云服务商甚至还有按天付费的套餐,专门针对偶尔与朋友玩一次的这种需求的人。

一般购买面板服后,只需要进入管理网站,填入云服务商给你的账号和密码登录就能使用了,甚是方便。

相关云服务商链接 简幻欢长期免费开服 雨云

方法二:内网穿透

1. 使用家里的多余计算设备 + 内网穿透

就是把设备当上面的云服务器使了,但家里的网一般不能“将你运行的MC服务端软件暴露在互联网(公网)上”,所以需要内网穿透才能让你服务器的玩家访问到你的服务端。

特点 长期开服挺省钱
相关链接 MCSM面板项目介绍页
相关内网穿透服务商链接 Openfrp Sarufa Frp

2.

[ToDO]

提示和技巧(Linux)

下载使用第三方JDK

据说一些第三方JDK 比 OpenJDK 性能要好。

请阅读:Papermc的java安装教程

使用数据盘而不是系统盘

有些云服务商会把系统盘和数据盘分开,你希望把服务端存档放在数据盘上。



1. 使用fdisk -l查看系统中所有磁盘信息。(用lsblk显示所有块设备信息也行)

/* 这里省略掉一些 /dev/loop* 块 */

Disk /dev/vda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 1446C59D-B388-4F17-9F44-E4B60CCC0FAC

Device       Start      End  Sectors Size Type
/dev/vda1     2048     4095     2048   1M BIOS boot
/dev/vda2     4096  2101247  2097152   1G Linux filesystem
/dev/vda3  2101248 41940991 39839744  19G Linux filesystem


Disk /dev/vdb: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 18.102 GiB, 20396900352 bytes, 39837696 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

从这个示例输出上我们可以看出,/dev/vdb 是还没使用的数据盘,/dev/vda 是已挂载的数据盘。(接下来的教程将以 vdb 和 vda 做例子,实际使用时请以你的块设备名字(如/dev/sdb)为准。)


2. 用 cfdisk 对 /dev/vdb 进行一个分区(下面是分区完毕的截图)。(和 fdisk 相比,有TUI,使用“方便”点)

Minecraft开服-cfdisk.png


3. 分区完毕。使用 mkfs.ext4 /dev/vdb1指令给这个分区创建一个Ext4文件系统

4. OK!现在你就可以把这个分区挂载到一个文件夹看看效果了。

mkdir test :新建一个test文件夹

mount /dev/vdb1 ./test :挂载 /dev/vdb1 到 该目录下的 test 文件夹

lsblk 看看挂载上没有:

NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0                       7:0    0   55M  1 loop /snap/core18/1880
loop1                       7:1    0 55.7M  1 loop /snap/core18/2812
loop2                       7:2    0 63.9M  1 loop /snap/core20/2105
loop3                       7:3    0 71.3M  1 loop /snap/lxd/16099
loop4                       7:4    0 91.9M  1 loop /snap/lxd/24061
loop5                       7:5    0 29.9M  1 loop /snap/snapd/8542
sr0                        11:0    1  364K  0 rom  /mnt/cdrom
vda                       252:0    0   20G  0 disk 
├─vda1                    252:1    0    1M  0 part 
├─vda2                    252:2    0    1G  0 part /boot
└─vda3                    252:3    0   19G  0 part 
  └─ubuntu--vg-ubuntu--lv 253:0    0   19G  0 lvm  /
vdb                       252:16   0   20G  0 disk 
└─vdb1                    252:17   0   20G  0 part /root/test

vdb1 右边的 MOUNTPOINT 值不为空,而是/root/test,说明已经挂载上了。

cd test :转到 test 文件夹。

目前 test 文件夹被 vdb1 挂载,所以你在 test 文件夹里面做的新建、删除等操作就是对 vdb1 设备的根目录下做的操作。

原 test 文件夹下内容会被“屏蔽”。

ls test :显示 test 文件夹下的内容。 由于 test 文件夹被 vdb1 挂载,所以这个指令实际上显示的是 vdb1 设备根目录下的内容。

umount test 挂载在 test 文件夹下的文件系统 卸载掉。简单理解就是把 vdb1 卸载。这里不仅可以用 umount test 还能用 umount /dev/vdb1



5. 测试完毕!不过 mount命令 挂载的vdb1,重启就失效了 。。。

好消息! 我们可以修改 /etc/fstab 文件,让系统在启动时把 vdb1 自动挂载上,避免重启就失效的问题。


cfdisk /dev/vdb指令获取/dev/vdb硬盘下的分区信息(包括文件系统UUID)。。

Minecraft开服-cfdisk2.png



nano /etc/fstab :用 nano 编辑器打开 /etc/fstab 这个文件,这里也可以用你喜欢的编辑器如 vim。


/etc/fstab添加下面一行,来让系统在启动时自动把 [你分区文件系统的UUID] 对应的文件系统挂载到[你想要挂载到的目录]

UUID=[你分区文件系统的UUID] [你想要挂载到的目录] ext4 defaults 0 2

参见 https://wiki.archlinuxcn.org/wiki/Fstab,了解/etc/fstab以及你添加的那行文字的含义。

  • 用 MCSManager 的话,可以把实例的“工作目录”设定为 vdb1 挂载的文件夹,或者直接把 vdb1 挂载到实例当前正在使用的工作目录上
  • 可以将defaults按需修改为其他值来获取一些性能提升,参见 https://wiki.archlinuxcn.org/wiki/Fstab#atime+参数

以非root账户运行mc服务端

mc服务端 或许还有未被发现的安全漏洞,服务端插件也可能存在 恶意代码/安全漏洞/后门。

以root账户运行 mc服务端 有可能导致主机上的其他业务(例如数据备份脚本)被入侵。

另见 Why you shouldn't run a Minecraft server as roothow-to-run-command-as-different-usersu

  1. 1.0 1.1 1.2 ChatGPT
寻星知识库使用 Cookie 技术提升您的浏览体验,这需要在您的浏览器存储部分信息。禁用 Cookie 将导致部分功能无法正常使用。 寻星团队将严格遵守隐私政策,并尽可能保护您的信息安全。 继续浏览寻星知识库,视为您同意启用 Cookie 并生成、存储相关数据。