Corpus Viewer
Root / 礦藝大典 / raw / 教章_立伺服器 / 教章_立伺服器.txt
宜新斯文。
然文所述,或違今版。
是篇之譯未成。
儻協而譯之,善也。顧宜親力親爲,器械與機巧僞智者不足取也。
是章將援手相授,助君設汝之爪哇伺服器。教章用元,發魔贊社而可白取也,適多術基(如視窗、大食、胡麻及伯克利)。
若需另教,閲文末抑或教章。若需另訊,宜閱伺服器。
須知:
設服耗時而需才,若不善術網,勿試設之而另覽教章于網。
礦藝伺服器無高限能,兩核籌芯即可設四五下服。求優著,當尋籌芯之新構與高頻,而非多核。
若欲久設上服,則需上品可拓籌芯(如英特爾至强W系列或AMD綫程撕裂者與霄龍等),其芯求穩而次頻,當擇頻過三吉赫茲之籌芯,量過三十六京字節且適勘修謬誤之籌錄。
若君電腦優越,設服而戲可行也。
于游服者,宜入諸綫路之網(如以太網),而非空傳網路。
僅欲衆戲者,而非設服者,可尋伺服器于此表。
闢區網之生界于戲,需穿透也,若可連接空傳網絡,則可共網同戲而無需穿透,穿透非安也。
欲遠設云服者,宜閱伺服器托管于礦藝論壇。如是者,多需月費,減維護之憂而常開,戲者時刻可入。
注: 另有特製伺服器術體,多爲上服所用而無魔贊社之援。
警告
注意
若不明所做,則易受擊害。故宜慎行。
君當知是行之害,方可設伺服器。嚴循是章,脚踏實地,方無舛誤。以是典人皆可撰,環境有異,誤不可測也。
爲保無舛,應知有五:
命令行之用與修儅
基本網路專名(IP、DHCP、通訊埠等)
術基之型
網路環境
交機之型(若有交機)
爪哇
爪哇者,固型術紀之言也,可編術執于爪哇行機(JVM),適多術基。爲之編碼,悉器可執。詳訊
是章用以解爪哇之惑,亦導抉擇。
開源拓具與甲骨拓具之異
開源拓具(OpenJDK)相似于甲骨拓具(OracleJDK),前者乃後者開源參考實現也。除包法、許可書與皮毛之別,餘者無異。
當心:若用以商業和生產,甲骨拓具OTN(甲骨技術網路)既構版則需繳費訂閲方能使用。其正含行礦藝伺服器之況,且無關盈利與否。甲骨文供其開源拓具既構版,然未包之易。
爪哇行境與爪哇拓具之異
爪哇行境指“爪哇執行環境”。爪哇拓具指“爪哇開發套件”。爪哇行境用以執行,爪哇拓具用以開發。爪哇拓具含行境,行境含行機。故有拓具,即有行境。原礦藝無需拓具,而某拓件需之。
無頭爪哇
無頭爪哇者,爪哇之縮也。去其圖形之交援。常用於伺服器及無形之況。
行法
欲啓礦藝伺服器需:裝爪哇,運啓伺服器,許用戶協議(EULA),復啓之。裝爪哇而啓命令行,后事一致也。
驗其合乎需求(籌芯,籌錄與術隅儲量)。
裝爪哇。裝法因術基而異,參閲下文。
于此頁取伺服器元。
創新目錄以置伺服器元,將存該服之生界諸儅焉。
啓命令行或終端。
驗爪哇可用否,鍵入java -version即可。
鍵入cd,切至元目錄。
鍵入java -jar minecraft_server.jar --nogui,初啓伺服器(代“minecraft_server.jar”以元名)。
許用戶協議(EULA),初啓將生eula.txt,開以撰器,既閲而解,改eula=false为eula=true則許而遵之。若非,服之不啓也。
既上行,方可鍵入java -jar minecraft_server.jar以啓伺服器,將彈窗示訊,增項--nogui而靜。君亦可增下文之項。
如是便成一服。至於伺服器選項詳訊,宜閱配置環境。至於安編啓術,宜閲編啓服術。
爪哇选项
命令行中,爪哇选项应该添加在-jar选项之前。
对运行Minecraft服务器来说,最重要的事情莫过于内存。您可以使用-Xmx选项设置服务器能被允许使用的内存量。通常-Xmx2G(最大内存2GB)就已经够用了。
-Xms(初始化内存大小)不会对长时间运行有性能上的影响,但是您也可以设置它。-Xms512M(512MB)应该够了。
对于一些版本的JRE,可以使用“soft max heap size”(-XX:SoftMaxHeapSize=1G)。JRE将尝试只使用那么多的内存,但如有必要,它将超过-Xmx设置的最大值。 如果您在服务器上运行许多东西,这可能会很有用。
如果您的服务器运行在64位的Solaris系统上,并且使用了64位Java,请添加-d64。
Minecraft选项
关于服务端JAR文件的选项要写在命令中的-jar minecraft_server.jar后面。您可以在后面加上--help查看所有可以被传递给服务端的参数。下方列出了一些可用的命令行选项。
--bonusChest
在初次生成世界时,是否生成奖励箱。
--demo
指定伺服器是否在演示模式下运行(给玩家显示一个“演示版”弹出信息。且演示结束后,玩家不能破坏、放置方块或者吃东西)。
--eraseCache
清除光照缓存等。与优化单人游戏世界时的选项相同。
--forceUpgrade
强制升级所有区块到伺服器目前的版本(独戏亦可)。
--help
显示此帮助。
--initSettings
只初始化server.properties和eula.txt,然后退出。
--nogui
启动伺服器时不显示图形界面。
您仍然可以与您的伺服器交互,若启用,必须使用cmd或终端。
nogui与此选项作用相同,主要用于向后兼容非常旧的伺服器版本,但使用--nogui更可取,因为这与其他选项之格式匹配
--port <整数>
指定服务器监听的端口,而无论在server.properties中设置的是什么(默认值为-1)。
--safeMode
加载存档时只使用原版数据包。
--serverId <字符串>
为服务器指定一个服务器ID。
--singleplayer <字符串>
指定服务器以离线模式运行(<字符串>需要指定一个值,但此值的具体用途未知,可能是由Mojang内部所使用的)。
--universe <字符串>
指定查找world文件夹的位置(默认为.,即当前目录)。
--world <字符串>
指定一个level.dat所在文件夹的名称。
旧命令行选项
一些选项能在旧版中使用,但是已在新版本中被移除或被替换了。
-o true
使服务器以在线模式运行,只有经过认证的用户才能进入(新版本中,将server.properties中的"online-mode"改为"true"等同于此选项)。
示例命令行
运行一个存档文件夹名称为“cold”的,监听在1337端口上且最大1GB内存的服务器:java -Xmx1G -jar minecraft_server.jar --port 1337 --nogui --world cold。
Windows操作指导
安装Java
运行Minecraft服务器需要Java运行环境(JRE,或者直接叫Java)。考虑到安全,您应该使用最新版的Java。您可以按照下列方法之一检查是否是最新版:
打开Windows控制面板,找到Java(可能在“程序”类别中),然后点击“立即升级”。
点此可以通过您的浏览器自动检查版本。但是,Google Chrome和Firefox浏览器不运行Java内容,所以不能用这些浏览器来检查。
打开命令提示符,输入java -version。如果显示出了版本号,可以与Java网站上的信息对比获取最新版本号。
如果您没有安装Java或您的Java版本较旧,您可以下载OpenJDK或Oracle “OTN” JDK。
macOS操作指导
请注意:在MacOS 10.4或更老的版本上,服务器不能正常运行,且有可能导致您的机器崩溃。
安装Java
打开终端。
您可以通过执行java -version来检查您是否安装了Java。并确保其版本高于1.6(比1.8高要更好)。
如果您没有Java,您可以使用HomeBrew安装:
先执行/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"安装HomeBrew。
再执行brew cask install adoptopenjdk安装Java(OpenJDK)。
再次执行java -version,这一次应该会看到一些消息了。
设置Minecraft服务器
参见一般步骤。
使用Time Capsule
有些家庭使用的无线路由器是AirPort Time Capsule。此章节教您如何在不搞坏文件服务器的情况下做相应设置。
注:您需要知道您的管理员账户和密码。
打开系统设置->网络。
点击“高级”按钮,然后到TCP/IP的底部。
找到配置IPv4的地方,把选项改成使用具有手动IP地址的DHCP。
把IP地址改为10.0.1.x。注意:x的数值需要在DHCP范围内(例如:如果DHCP地址池为10.0.1.2-10.0.1.254,那么x可以取2-254的任意值)。
转到共享一节,确保Internet共享已开启。
打开AirPort Utility并编辑您的Time Capsule设置。
转到“网络”,确保路由模式选项设置为“DHCP和NAT”。然后,点击端口设置下方的“+”按钮。
输入以下内容:
描述:Minecraft Server(随便怎么写都行)
私有IP地址:您在第四步填写的IP地址。
把所有名字里面带“端口”的内容改成25565.
点击保存并更新Time Capsule。
您现在可以配置您的服务器了。
Linux操作指导
Linux有许多被称为“发行版”的变种。有一些发行版是专门为服务器设计的,或更适合运行在服务器上的。如果您正在架设一台专用服务器,我们建议您使用这些发行版中的其中一个。
一般来讲,Linux更欢迎开源软件。因此,在适用的情况下,建议您使用开源程序,例如OpenJDK。
安装Java
大多数发行版中都有OpenJDK。您可以直接安装。对于Oracle Java,请参考Oracle的下载页。
注:尽管不影响Minecraft服务器,JavaFX以及其他专有部分可能需要单独安装。
Solus
执行sudo eopkg install openjdk-8命令安装OpenJDK。
安装Oracle JDK,请参考Solus帮助中心。
注:OpenJDK 11不在Solus的仓库中。
Debian、Ubuntu和Raspbian
为了正常使用apt-add-repository命令,您可能需要“software-properties-common”(使用sudo apt-get install software-properties-common安装)和/或“python-software-properties”软件包(使用sudo apt-get install python-software-properties安装)。
由于许可证方面的问题,常用来安装Oracle Java的软件库已经停止维护。推荐您安装OpenJDK 8及更高版本。
OpenJDK可以使用此命令安装:sudo apt update; sudo apt-get install openjdk-8-jdk-headless
去掉命令中的“-headless”可以安装完整的Java。
注:此方法已在Ubuntu 18.04中测试有效。
openSUSE
注:由于openSUSE Tumbleweed可能的不稳定性,不建议使用此系统架设专用服务器。
在终端内执行命令:sudo zypper in java-1_8_0-openjdk 安装Java。
注:此方法已在openSUSE Leap 15.1中测试有效。
Arch Linux
Arch默认提供最新的稳定Java版本。若无特殊需求,建议安装默认版本的Java环境。
运行pacman -S jdk-openjdk安装Java。
如果希望了解所有可用的Java版本,请运行pacman -Ss openjdk进行查询,或访问OpenJDK获取更多信息。
例如安装Java 17,请运行pacman -S jdk17-openjdk。
注:Arch官方不提供无头JDK,只提供无头JRE、完整JRE以及JDK。
如果遇到问题,请参考ArchWiki。
Gentoo
执行emerge --ask virtual/jdk安装Java。
Gentoo Wiki
其他发行版
查看您使用发行版的文档。它们应该会告诉您如何安装OpenJDK。
另外,您还可以直接Java网站下载适用于Linux的安装包。对于大部分发行版都有用(无论32位还是64位)。在网站上提供了不同安装包的安装指导。
如果您在安装的过程中询问了密码,请输入它。如果您被问到“Is this OK [Y/N]”,(如果需要的话)请回答“Y”然后回车。Java现在应该已经安装好了。
一个简单的安装脚本(同时会安装Java)
https://github.com/silvertriclops/MCSLI
注:这是一个非常早期的项目,设计时考虑了脱机安装,并将定期更新以使其对用户更加友好。
FreeBSD操作指导
此部分需要更新
Java 7已经过时,因为官方已经使用Java 18了。
一些崩溃问题在OpenJDK 18中不会再出现。
所以如果相关内容测试成功的话,则下文中关于Linux兼容相关的内容应该就可以删掉了。
此部分已在FreeBSD 10.0 amd64上测试有效(JRE使用的是:jre-7u65-linux-i586.tar.gz)。
安装Java
由于OpenJDK与Minecraft服务器的性能和崩溃问题,我们会安装为Linux设计的Oracle JRE。
在安装JRE前,您需要安装FreeBSD的Linux二进制文件兼容层,您可以按照此文档操作。
Java需要从proc中获取一些信息。您需要执行以下命令挂载linprocfs:
kldload linprocfs
mount -t linprocfs linprocfs /compat/linux/proc
并向/etc/fstab加入此行:
linprocfs /compat/linux/proc linprocfs rw 0 0
Oracle JRE的一个依赖被标成“禁止”,所以安装这个依赖会失败。切换到/usr/ports/textproc/linux-f10-expat2.0.1/,然后在其中的Makefile文件中删掉以FORBIDDEN=开头的一行。
由于许可证问题,您需要从Java官网上手动下载Linux的tar包(例如“jre-7u65-linux-i586.tar.gz”),并把它复制到/usr/ports/distfiles。
然后,进入/usr/ports/java/linux-sun-jre17/目录并执行make install distclean安装JRE。
注:前一部分以前的说法(适用于FreeBSD 9.2 amd64)是:您必须在Makefile文件中设置JRE_UPDATE_VERSION变量,并将其设置为一个数字(在此例中为45)。然后再执行make install NO_CHECKSUM=1。
尝试执行java -version。您可能会被提示找不到libjli.so。一种解决方法是:将您的Java路径显式指定为搜索路径。
创建一个符号连接:
ln -s /usr/local/linux-sun-jre1.7.0/lib/i386 /compat/linux/usr/lib/java
然后在/compat/linux/etc/ld.so.conf.d/java.conf添加:
/usr/lib/java
/usr/lib/java/jli
执行/compat/linux/sbin/ldconfig。
现在执行java -version应该是正常的了。
启动Minecraft服务器
创建一个文件夹,然后把Minecraft服务端jar文件复制进去。
在实际的版本中,如果您用一般方法运行服务器,您会得到以下异常:syscall epoll_create not implemented。为了解决这个问题,可以在命令后面加上-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.PollSelectorProvider。
启动命令示例:
java -Xmx1024M -Xms1024M -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.PollSelectorProvider -jar minecraft_server.1.7.10.jar nogui
Plan 9
alien-convert PATH_TO_YOUR_JRE.deb
chmod ~/~ rwx # for current user
snarf java -jar PATH_TO_SERVER_JAR.jar xvmf in acme
Hostman
Hostman是用于云托管应用程序的应用程序托管提供商。Minecraft可作为Hostman上的一键式应用程序使用。安装大约需要2分钟,有个关于如何配置服务器并开始游玩的说明。您可以在一台服务器上拥有多个Minecraft服务。在此处免费试用。
Cloudron
Cloudron是一个在服务器上自托管应用程序的平台。在Cloudron上,Minecraft是一个一键应用。它允许您通过浏览器上的Web界面管理Minecraft服务器。您也可以在同一台服务器上安装多个Minecraft实例。您可以尝试此示例(用户名:cloudron,密码:cloudron)。
Docker
Docker是一种开源的容器平台,可以使不同的Minecraft服务器实例和主机相互隔离开来。Docker本身和其容器仓库的所有者与Mojang没有任何隶属关系。
安装Docker(适用于Linux、Mac和Windows)
参见https://docs.docker.com/install
Docker镜像
关于完整的Docker镜像文档,请参见:https://github.com/itzg/docker-minecraft-server/blob/master/README.md。
在一个名为“mc”的容器中运行一个简单的最新版本服务器,可以在shell中执行以下命令:
docker run -d -p 25565:25565 --name mc -e EULA=TRUE itzg/minecraft-server
在Docker镜像中指定Minecraft版本
如果要指定特定的版本,请在命令后添加-e VERSION=<version number>。例如,您可以使用下面的命令指定版本为最新快照:
docker run -d -p 25565:25565 --name mc -e VERSION=SNAPSHOT -e EULA=TRUE itzg/minecraft-server
指定为Minecraft 1.7.9:
docker run -d -p 25565:25565 --name mc -e VERSION=1.7.9 -e EULA=TRUE itzg/minecraft-server
伺服器端口
欲更改监听之端口,需Docker之端口映射功能。此可将主机之指定端口映射至容器之25565端口。可以使用下面的命令运行一个非25565端口的服务器:
docker run -d -p <port>:25565 --name mc -e EULA=TRUE itzg/minecraft-server
更新Docker镜像
使用下面的命令更新Docker镜像。请注意,此命令不会更新Minecraft,它只会更新镜像本身。
docker pull itzg/minecraft-server
配置环境
编写脚本用于启动服务器
实际上,我们不需要在每次启动服务器的时候输入命令。我们可以把命令写进一个文件里,然后执行它。
Windows
在Windows中,脚本称为“批处理文件”。在服务器jar文件所在的文件夹中,创建一个文本文档,命名为start.bat,然后右键点击“编辑”,再将下面的内容粘贴到里面:
@ECHO OFF
java -Xms1024M -Xmx2048M -jar minecraft_server.jar --nogui
pause
然后双击这个文件启动您的服务器。您可能会收到“Class_Not_Found”和“ServerGuiConcole”错误信息,直接忽略这些错误。然后您就可以看到“Server Thread/INFO”这样的内容,这表示您的服务器启动了。
脚本中的pause命令会保持窗口开启,这样是为了让您能在服务器停止时更方便地知道到底发生了什么。
macOS、Linux和FreeBSD
这些系统在命令行中都使用一种被称为“POSIX shell script”的脚本语言。在放服务器jar文件的文件夹中创建一个文本文件,命名为start.sh,然后写入以下内容:
#!/bin/sh
cd "$(dirname "$0")"
exec java -Xms1G -Xmx1G -jar server.jar --nogui
然后保存文件。执行chmod a+x start.sh(或者您放置此脚本的路径)使其可执行。您可以通过双击此文件或者在文件夹中输入./start.sh(如果在文件夹外,请输入完整路径)命令启动服务器。
如果您想像Windows中一样能在服务器关闭后保留窗口,请删除脚本中的exec一词,并在末尾加上read -n 1 -p "Waiting..."一行。此更改对从图形界面双击打开的服务器有效果。
启动和维护脚本
另外,您也可以尝试使用下面列出的脚本实现对Minecraft服务器的管理和启动、关闭自动化:
Minecraft Server Control Script (MSCS)适用于UNIX和Linux平台的Minecraft服务器。有以下功能:
运行多个Minecraft实例。
启动、停止和重启单个或多个实例。
创建、删除、禁用和启用实例。
第三方服务器支持:Forge、BungeeCord、SpigotMC等。
自动备份、删除(X天前)和重启实例。
详情参见:MSCS的Github。
Minecraft Server Manager是一个适用于原版服务端和Bukkit的全面的启动脚本(支持Debian系系统,例如Ubuntu)。
MSM可以定期创建可兼容World Edit的备份。
可配置用于提醒玩家的消息,例如“将在10秒内关闭服务器!”。
可以在终端内执行游戏内命令(例如“say”、“op”和“whitelist”)。
支持Tab键补全命令,使学习更简单。
查看完整功能:MSM的GitHub。
服务器架设脚本
FreeBSD启动脚本
OpenBSD启动脚本
Ubuntu启动脚本
rfwadmin是一个适用于Linux的具有Web界面的启动脚本。有很好的用于快速保存和加载存档的Web界面。
Minecraft Systemd Service是一个完全集成systemd的Minecraft服务:
适用于CentOS和Fedora。
使用大量的只读和不可的权限来保护服务器。
使用rcon执行安全的重启和停机操作。
为了更方便的管理,可以与Minecraft Command Center Script一起组合使用。
Arch Linux systemd wrapper
端口转发
如果您有一台路由器,并且想让用户通过路由器连接进来时,就需要使用端口转发。如果您只是想架设一台内部服务器,那么您就不需要做这样的事。请注意:端口转发可能会导致安全风险。
不同路由器设置端口转发的方式不同。如果您不知道如何在您的路由器设置端口转发,可以尝试在网络上找适用于您路由器型号的教程。
此示例适用于TP-Link家庭路由器的新版界面。
进入您路由器的管理界面,找到端口转发页,然后点击新建服务或自定义服务。选择一个“协议类型”,“TCP”表示只转发TCP协议,“UDP”只转发UDP协议,而“ALL”则两者都转发。内部端口和外部端口都填写25565(如果您服务器不是标准端口,可以按需填写)。IP地址则填写您Minecraft服务器的内部IP地址,其余保持不变即可。
要获取您电脑的IP地址,请按以下步骤操作:
Windows
按⊞ Win + R打开“运行”,输入cmd然后↵ Enter,打开命令提示符。在命令提示符中输入ipconfig然后↵ Enter。找到对应您使用的网络适配器上的IPv4地址(有线连接的一般是“以太网”,无线连接的一般是“WLAN”)。一个IP地址的形式应该是xxx.xxx.xxx.xxx,然后把这样的内容记录下来。注意不要包含任何除了数字或点的部分。
Mac
打开在logo下的菜单,找到“系统首选项”,然后选择“网络”。您的IP地址应该会显示在右侧(应该是xxx.xxx.xxx.xxx形式)。将它复制下来即可。
Linux
您可以使用网络诊断中心(有一些发行版有)。或者在终端中执行ifconfig,此命令会输出您所有网络接口的IP地址,找到例如inet addr:xxx.xxx.xxx.xxx的内容,将xxx.xxx.xxx.xxx的部分复制下来即可。
如果您获得了您的IP地址,请把它输入到前面转发设置中的“IP地址”中。
填写好这些需要的信息后,请点击“保存”(或者其他类似意思的按钮)。这样您就成功的设置了端口转发。当您启动Minecraft服务器时,需要把server.properties中的IP地址一项留空。
其他人需要通过您的外部IP地址来连接到您的服务器。您可以通过例如IP Chicken的网站获取外部IP地址。如果您不想用IP地址连接,可以使用动态DNS服务,例如NoIP DynDNS。
接下来可以配置并连接了。
设置VPN
是章非魔贊社或礦藝大典所從。
注意
使用虚拟专用网络可能对连接至Mojang服务器,Minecraft服务器,或者您的互联网造成影响。
在您和您的朋友之间设置服务器的另一种方法是设置虚拟专用网络。由于希望连接到服务器的所有用户必须下载外部软件以加入或创建服务器,因此该方法可能会被认为是不推荐而且不方便的。另外一种可行的办法是端口转发。可用于建立虚拟专用网络的免费简单程序是Hamachi和Radmin虚拟专用网络。这是另外一种免费开源且支持大多数操作系统的方案,但是配置较困难。Hamachi免费版只允许5个玩家连接。
设置Hamachi
在希望加入服务器的每台计算机上安装Hamachi,包括主机。下载地址:
Windows / Mac
Linux (32位与64位.deb和.rpm包均可找到。欲在 Gentoo 上安装,使用net-misc/logmein-hamachi)
在主机上创建新的Hamachi网络。
主机安装并配置Minecraft服务器软件(server.jar):server.properties中的服务器IP字段保留为空(默认情况下)。
主机将新创建的Hamachi网络凭证传递给每个玩家。
玩家连接到主机的Hamachi网络。
当所有机器都连接在同一个Hamachi网络中,主机将其机器的Hamachi IPv4地址提供给玩家。
每个玩家使用主机的IPv4地址输入到“直接连接”框里。
请注意,Hamachi占用了已经被IANA分配的IP块(25.0.0.0/8)。 所以,Hamachi有可能会和互联网冲突。
设置Radmin VPN
其配置方法和Hamachi的很相像。
在这里下载Radmin VPN。
创建网络:在本地计算机上安装Radmin VPN后,按“创建网络”按钮。 设置网络名称和密码,然后按“创建”按钮。
现在新网络将出现在主窗口。给朋友发送连接信息,然后运行Minecraft。
连接:Radmin程序启动后按“加入网络” - >在对话框中按输入网络名称和从主机网络的密码 - >“加入” - >新网络及其节点将显示在主窗口中。 - > 在Minecraft中连接到主机。(如同配置Hamachi的第七步)
如果Radmin VPN上的连接已经建立,但您没有看到游戏中的其他玩家,则需要调整防火墙,或者直接关闭防火墙。
配置Minecraft服务器
编辑server.properties文件(格式可参见server.properties#server.properties)。请使用纯文本编辑器修改此文件(例如记事本)。可能不需要做额外配置,默认生成的内容也可以启动服务器。
如果您要成为管理员(op)或添加管理员,请在服务器控制台或GUI上输入/op <玩家或玩家实体目标选择器>命令。此命令会把您指定的用户的UUID添加到ops.json文件中。管理员权限不会随着用户名的更改而消失,因为存储的是您的UUID而不是用户名。
管理员可以执行命令。换句话说,管理员有权限控制游戏的某些方面(例如传送玩家)。
ops.json的内容:
[
{
"uuid": "",
"name": "",
"level": 4,
"bypassesPlayerLimit": false
}
]
如果在您的server.properties中设置了开启白名单,您可以在服务器控制台或GUI上使用/whitelist add <玩家或玩家实体目标选择器>命令把玩家添加进whitelist.json文件中(由于过渡到UUID系统的原因,不建议直接修改此文件的内容)。
连接到Minecraft服务器
如果您是在作为服务端的电脑上玩Minecraft,先选择“多人游戏”,输入“localhost”或者是“127.0.0.1”,而不是您的IP地址。
这是不推荐的。除非您有一个性能良好,内存比较大的电脑。(服务器4GB,客户端2GB,其余的给系统)
在您的局域网内的玩家可以通过内网IP来连接到您的服务器(因为玩家在局域网内,所以您不需要接口转发)。
从Internet链接的玩家(也就是不在您的局域网中的玩家)必须使用您的外部ip来链接. 您必须为这些从外部链接的玩家使用端口转发。
(部分支持IPv6的客户端和服务端,客户端可以直接通过IPv6地址服务端。)
特定网络适配器上的IP地址可以通过在命令提示符中输入“ipconfig”或者通过此网站来查看。如果在server.properties文件中指定了非25565的端口,则需要在地址栏中加上端口号。地址(IP和端口)看起来应该像192.168.0.168:25565这样。
关于IP地址的一些注意事项
除非您为正在做服务器的电脑设定一个静态IP,否则的话,内部IP地址是有可能改变的。这会影响到接口转发规则并使得它们失效。不同的路由器有不同的设置静态ip的方法。您可以从您的设备的说明书或者在线文档中获得更多的帮助。
如果您有连接到您外部IP的玩家,您应该明白如果您没有从您的Internet服务商处获得一个静态IP,那么您的外部IP是会变化的。您可以使用类似MyWANIP的工具来定时的检查您的外部IP。此外,您可以尝试使用DDNS服务,这会允许您使用一个固定的域名,而不是动态的IP地址。不管您的外部IP地址是否改变,这个域名会指向您当前的外部IP地址(即,当您的外部IP改变时,DNS会自动更新)。
在解决服务器故障时,您可以尝试在运行服务器的机器上使用客户端来调试,使用本地IP地址(localhost)、内网IP地址(例如192.168.x.x)或者公网IP都是可以的。
如果您在公网上连接您服务器的公网IPv4地址时有问题,可以尝试使用IPv6地址来连接。您仅应在测试服务器是否在线时执行此操作。对于其他玩家而言,还是最好使用您的IPv4地址来连接。
服务端网络设置
服务器需要开启防火墙相应端口(默认为25565)才能使服务端正常工作。
确认网络设置正确并使用在线工具如You Get Signal确定服务端在国际互联网的IP。测试端口应与服务端设置的端口一致(默认为25565), 测试时请启动服务端。
服务器有可能会遭到恶意攻击,在服务器投入使用以前,请务必做好物理保护及数据备份工作,否则有可能会带来经济及精神上的损失。
针对接入NAT的家庭网络的服务器
如果家庭路由器的服务器接入NAT网络,那么他在启动后外网的玩家是无法连接的。
购买路由器,进入路由器配置页面(一般是192.168.1.1:80或192.168.0.1:80)查看WAN IP记录下来,使用搜索引擎搜索IP,将该IP与之前的WAN IP对比,若相同则为一般有IP,若不同则为接入NAT的家庭网络。
这种情况,您可以使用内网穿透类应用,如花生壳,或协商运营商请求许可获取公网IP的资格。
针对使用家庭路由器的服务器
如果服务器位于一个家庭路由器的局域网内,则需要在路由器设置相应的端口映射法则。
关于端口映射的具体设置,可以 portforward.com。从网站给出的列表中选择您使用的路由器型号,网站将给出设置端口映射的相应步骤(有广告,可跳过)。调制解调器、路由器等网络器材附带的说明文件也可能包括了设置端口映射的相关信息。
部分路由器提供了DMZ选项,与端口映射有同样效果,但遭到攻击的可能性相比使用端口映射更大(DMZ主机暴露在外网,不受路由器安全设置保护)。新手使用请咨询熟悉的业内人士。
一般来说可以首先尝试使用 UPnP 进行端口映射,大部分路由器都支持并默认开启该功能。可以使用诸如 miniupnpc 软件包的 upnpc 命令一类的程序进行映射。
针对使用动态IP的服务器
由于大部分家庭用户(部分服务器代理的服务器也没有固定IP)使用ADSL或PPPoE等方式接入互联网,此种情况下的服务器无论通过路由器与否,IP地址是不定的。解决此问题可以使用动态DNS服务,届时玩家只需要知道服务器使用的域名即可连接到服务器。
请联系网络供应商(家庭用户)或服务器代理商确定正在使用的网络接入方式。
使用动态DNS需要进行以下准备工作:
获得一个域名,可以从dot.tk或Oray等网站获得免费域名,也可以支付一定费用注册;
选择一个动态DNS服务商,注册账号并按服务商提供的操作方法设置服务器及域名,维基百科有部分动态DNS的服务商列表
使用动态DNS需要一定网络理论及实践的基础,新手在做出决定前,请先咨询熟悉的业内人士。
设置动态DNS请按照服务商的指示对服务器、路由器(仅限使用路由器的用户)进行设置。
路由器设置需要进入管理页面进行操作,新手请参照说明文档或在业内人士的指导下进行。
局域网中的专用服务器
这一段的内容只适用于Classic(v0.30)服务器。
管理员不能在内网中通过一台另一台机器进入那台架设了服务器的机器,这是一个普遍性的问题。典型的情景是:您有一台专用服务器,而且有另一台供您玩游戏的机器。而它们同时连接到同一个路由器或交换机下,且内部IP为“192.168.x.x”。通常,通过服务器生成的URL连接时,会返回“服务器离线”的错误信息。
要解决这个问题,您需要在您的URL、书签以及其他您用来连接的东西后面加上?override=true
例如:http://www.minecraft.net/classic/play/4c3bebb1a01816acbe31c5ece1570da5?override=true
以前(1.8 beta和网站更新前)上面要加的东西是&override=true。这一点并没有被Mojang在网站Applet页面上说明,导致出现了很多误用。在此更新前,通过网站连接到您自己的URL会导致出现在Applet窗口底部出现“If you can't connect, try this link instead.”的红色文字,返回的是同样以“&override=true”结尾的连接。
注:Beta服务器没有这样的情况,您应该能通过内部或外部IP连接上服务器。
SRV记录
从Java版1.3开始支持玩家可以在不输入端口号的情况下连接到一个使用非标准端口号的服务器。相关的信息是作为一种服务被记录在DNS上的SRV记录中的。SRV记录告知客户端实际上应该连接的主机名和端口。一些动态DNS(DDNS)服务和大多数的静态DNS服务都会允许您设置这样的记录。
如果您要手动验证SRV记录是否生效,请参考下面的内容(假设给玩家的域名是“YOUR.DOMAIN.com”):
> nslookup -q=srv _minecraft._tcp.YOUR.DOMAIN.com
Server: UnKnown
Address: [REDACTED]
Non-authoritative answer:
_minecraft._tcp.YOUR.DOMAIN.com SRV service location:
priority = 5
weight = 5
port = 65312
svr hostname = ACTUAL.DOMAIN.com
常见问题
问:如果我有一个没在这里提到的问题,我应该怎么办?
答:您可以在Minecraft Forums上发帖说明您的问题。为了能帮到您,请提供以下信息:
使用的操作系统
Java版本
一台还是多台电脑
问题的具体描述
您为解决问题已尝试的步骤
您遇到的任何错误
(如果可以的话)问题的截图
其他可能有助于帮您解决问题的内容(一般也不会有多少。注意不要提供密码)
如果我们解决了您的问题,请说明具体解决问题的地方和方法。这可以对其他人有所帮助(也能帮我们解决常见问题)!
问:在Windows上双击批处理文件启动服务器,命令提示符窗口闪退且服务器没有启动。
答:请在您的批处理文件最后加上pause再运行。如果显示的是无效路径,这可能是您Java可执行文件或者服务端jar文件的路径不正确导致的。把批处理文件路径里的/jre7/换成/jre6/,确定运行环境在/Program Files/里还是在/Program Files (x86)/里,或者根据自己电脑的情况对路径进行相应调整。多说一句,运行服务端需要JRE运行环境,而不是浏览器里的Java插件。
也可能是您没有修改您的eula.txt文件。在双击您的minecraft_sever.jar文件后,您会看到文件夹内有个eula.txt文件。用记事本打开这个文件
(https://account.mojang.com/documents/minecraft_eula).
Datum Uhrzeit
eula=false
将最后一行修改为
eula=true
然后保存并退出。重新双击服务器启动的批处理文件应该就可以正常启动了。
问:当我尝试启动服务器时,服务器显示"Failed to bind to port!"。
答:可能是路由器端口映射设置有误,确认路由器为Minecraft开放的端口(默认为25565)正确地映射到您的服务器上。如果您的服务器是直接接入网络的且网络服务商不开放您所设置的端口,将server.properties文件中的server-port=25565中的“25565”改为其他可用端口号。
或者是您在server.properties文件中的IP地址一项中设置了IP地址。如果这个IP地址不与您系统上任何接口上的地址一致,服务端会显示这样的信息。如果把此项留空,您就可以在所有接口上绑定。这样,您和内网内的人就可以通过localhost或内网IP地址连接到服务器了。
此外,问题也可能是由于您尝试使用一个已被占用或无权限绑定的端口(小于1024的端口需要root或管理员特权才能使用)导致的。要解决这个问题,您可以尝试修改server.properties文件中的server-port=25565一行。
注:您应该避免使用下列端口,这些端口在有些ISP那里是被封禁的。并且,为了安全考虑,最好不要用root用户运行服务器(适用于Linux系统且端口小于1024的情况):
21(由大多数FTP服务器使用)
22(由SSH服务器使用)
25(由邮件服务器使用,用于SMTP协议)
53(由DNS服务器使用)
80 (由大多数Web服务器使用)
110(由邮件服务器使用,用于POP3协议)
115(由简单文件传输协议使用)
143(由邮件服务器使用,用于IMAP协议)
443(由Web服务器使用的SSL端口)
3306(由大多数MySQL服务器使用)
一般要避免使用端口号低于1024的端口,因为这些端口是“公认端口”,用于在IANA处注册的重要服务;另外因为安全原因,一些网络服务商还会屏蔽3306(MySQL服务器默认使用)端口等。除此之外,49152-65535段端口属于“动态端口”范围,没有被注册占用。
此类问题亦有可能是操作者疏忽导致服务端未关闭就再次开启了服务端,典型的错误操作有:Windows中直接双击了核心jar,Linux中使用守护进程运行Java等,导致服务端在后台运行而操作者未注意的情况。遇到此类问题可先检查占用该端口的进程,获取控制或将其结束,再启动服务端。
问:我尝试在Solaris/OpenSolaris上运行服务器,但是出现了以下错误:
java.io.InterruptedIOException: Operation interrupted
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.net.SocketInputStream.read(SocketInputStream.java:182)
at java.io.FilterInputStream.read(FilterInputStream.java:66)
at gq.a(SourceFile:131)
at ji.g(SourceFile:197)
at ji.c(SourceFile:17)
at oq.run(SourceFile:84)
2011-05-31 16:57:26 [INFO] /:44673 lost connection
答:只有Solaris系统在线程中断连接时会发生这种异常,这种异常可以通过改变启动命令来避免:
java -Xmx1G -Xms32M -XX:-UseVMInterruptibleIO -XX:+UseConcMarkSweepGC \
-XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts\
-jar minecraft.jar nogui
这样的命令让Java使用一种可中断的IO栈来防止异常发生。
问:当我尝试连接到我的服务器上,服务器显示:
Connection lost
The server responded with an invalid server key
答:此错误通常在服务端发送了一个客户端不能识别的功能时出现,这可能是由于使用了不能识别的服务器软件、不平衡的客户端/服务器版本或修改过的客户端导致的。
问:为什么我不能破坏或放置方块!?
答:联系服主关闭保护出生点的功能,或离出生点远一些,除非您是服务器的op,否则在该功能开启时您不能在出生点附近放置或破坏方块。
问:我的服务器运行正常,但是我不能连接上去!
答:这可能是由一连串问题导致的。请按照上方提供的模板发帖询问。
问:如何给服务器更多内存?
答:修改启动命令行中的“-Xmx1G -Xms1G”部分中的数字。“-Xms”部分指定的是服务器启动时使用的内存量,而“-Xmx”部分指定的是服务器最大可以使用的内存量。
-Xmx1G -Xms2G = 1GB
-Xmx2G -Xms1G = 2GB
等等。
问:为什么服务器CPU经常满载?
答:这可能是由于GUI(图形界面)窗口导致的。在启动命令行加入nogui可以禁用这个窗口。
问:我要怎么获取服务器的IP地址?
答:请参阅连接到Minecraft服务器一节。
问:我设置了端口转发,并且允许java.exe通过防火墙,但仍然不起作用!
答:您的调制解调器有可能运行在路由模式下。您可能会从ISP处拿到调制解调器和路由器二合一的设备。
要验证这一点,请查看您路由器上显示的WAN IP,如果这个IP是一个私有IP,那么您需要登陆到ISP提供给您的调制解调器的管理界面,然后把端口转发中的IP地址设置为您路由器的WAN IP。
性能优化Java参数
对于各类JDK(Oracle或Open)用户,使用JDK的一些参数进行优化是可行的。以下参数在一定程度上优化了GC内存操作且利用了一些CPU命令集。
使用Java 8或之前的版本
java -server -XX:-UseVMInterruptibleIO -XX:NewRatio=3 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=4 -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:+UseBiasedLocking -XX:+CMSParallelRemarkEnabled -XX:MaxGCPauseMillis=50 -XX:+UseAdaptiveGCBoundary -XX:-UseGCOverheadLimit -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -Xnoclassgc -oss4M -ss4M -XX:CMSInitiatingOccupancyFraction=60 -XX:SoftRefLRUPolicyMSPerMB=2048 -Xms(视情况) -Xmx(视情况) -jar <jar文件> nogui
使用Java 9或之后的版本
因为从1.17开始不支持Java 8,而在高版本Java上,上面的许多参数都被删除,暂时没有替代品,故可以使用以下参数:
java -jar -Xms(视情况) -Xmx(视情况) -server -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M <jar文件> nogui
其他
如果上述两个用例都报错的话,可以使用服务端所属版本的官方客户端参数,此参数可以在编辑“配置”界面上的“JVM参数”中找到,然后使用以下参数:
java -jar -Xms(视情况) -Xmx(视情况) -server <在官方启动器中获得的参数> <jar文件> nogui
视频和替代教程
这里给出了一些其他的Minecraft服务器架设教程:
Windows
How to make a Minecraft Server in under 10 Minutes! (Port Forward Guide Too!)
How to Make a Minecraft Server in 2020 (1.15.2) | 5:43 Pt. 2 - Easy: Port Forward | 3:11
How to create a Minecraft Server in 2020 tutorial
Mac OS X
How to SET UP MINECRAFT SERVER on Mac OS
Port Forward (easy method)
Alternative video tutorial on setting up a Minecraft server with Mac
Linux
Linux tutorial for more advanced users
How to Install Minecraft Server on CentOS
How to make a Minecraft Server on Ubuntu for beginners
其他
How to Set Up Port Forwarding
How to Port Forward any Minecraft Server (1.6.2)
Alternative port forwarding tutorial for Windows (with pictures)
一体化教程
Course: How to Make a Server
参考
津渡