syz666
本帖最后由 syz666 于 2018-9-2 09:26 编辑

Debian(Linux) 开服教程 | 也适用于 Ubuntu

这是一个关于使用 Linux 发行版 Debian 开 Minecraft 服务器的教程。这篇帖子所述内容也适用于 Ubuntu。如果你使用 Ubuntu,你还可以看下这篇帖子;如果你使用 CentOS,或许这篇帖子更适合你。但是,本文也包含一些特色,例如关于 Google Cloud 开 Minecraft 服务器的特殊设置。请点击目录查看详细内容。
这篇文章使用 Debian 9 做示例且仅保证所提供之各命令在 Debian 9 下工作。


2021.12 数据,可能有更多内容Debian(Linux) 开服教程 | 也适用于 Ubuntu

这是一个关于使用 Linux 发行版 Debian 开 Minecraft 服务器的教程。这篇帖子所述内容也适用于 Ubuntu。如果你使用 Ubuntu,你还可以看下这篇帖子;如果你使用 CentOS,或许这篇帖子更适合你。但是,本文也包含一些特色,例如关于 Google Cloud 开 Minecraft 服务器的特殊设置。请点击目录查看详细内容。
这篇文章使用 Debian 9 做示例且仅保证所提供之各命令在 Debian 9 下工作。



扫盲环节
Linux 与 Debian 是什么?
如果你是一个想开 Minecraft 服务器的人,看到标题,你应该知道 Linux 指的是什么。而如同 Ubuntu、CentOS 等一样,Debian 是 Linux 的一个发行版。


Linux 开服优、劣势有哪些?(相较于 Windows Server)
对于内存紧缺的机器来说,Linux 的性能优势可以极大地显现出来,甚至可称“秒杀 Windows Server”。另外一点,对部分主机商来说,使用 Windows Server 需要用户额外地购买许可费;而 Linux 大部分的发行版都是开源且免费的(Debian 就属于这一类),可以一定程度上节省成本。
而使用 Linux 的劣势在于,1) 绝大多数 Linux 服务器均不安装桌面,也就是只有命令行,需要一定时间的学习与适应;相比之下 Windows Server 贯承了 Windows 的 GUI,对许多只用过 Windows 的人来说更具有亲和力也更容易上手。2) 对于高内存、高性能的机器来说,Linux 性能差异与 Windows Server 不大。


什么是“备案”、“域名”、“IP”……
抱歉,但是这类名词非本教程所应教授的,还请自行搜索。



购买主机
对大多数人来说,都需要选择一个主机商购买主机。为避免广告嫌疑,恕不具体推荐过多。
服务器选址方面需要看你所开服务器的玩家主要位置。如果主要来源于大中华区,中国大陆与台湾的主机是优选,日本、新加坡与美国西部(尤其是带 CN 专线者)为次选。
如果你有一个支持双币的 Visa/MasterCard/JCB 信用.卡并且预算相对充足,可以选择 Google Cloud 的台湾服务器,大中华区延迟极低(大部分玩家体验均小于 80ms)且性能极好。如果你选择了 Google Cloud,请看后面对 Google Cloud 的专门解释。



上图是 Google Cloud Platform Compute Engine 中的台湾区。后面的二级选项中,a、b、c 线路均可。



连接服务器
在选购好服务器之后,现在来连接一下你的主机。
如果你使用 MacOS / Linux,你可以直接使用命令 ssh 连接,详情请看 ssh 之后的解释。
如果你使用 Windows,连接 Linux 需要使用 PuTTY。你可以在这里下载 PuTTY。中国大陆部分地区存在对 PuTTY 官网的网络干扰,如果你所在地区存在干扰,你可以在这里下载 PuTTY。(这是我提供的私人镜像)
如果你的主机商直接为你提供了 IP 地址与密码,像这样:

你可以直接使用 IP、用户名和密码连接。Windows 示范如下:

MacOS/Linux 则是:

代码:

  1. ssh 用户名@地址
对于 Windows 用户,在点击“连接”以后会出现 login as,这时候输入你的用户名后按下 Enter。
在这之后会询问你的密码,输入完后 Enter 即可。需要注意是 PuTTY 输入密码是不会有任何显示(比如星号)的;如果你需要粘贴,请直接右键
像 Google Cloud 等主机商不提供账户名与密码而是需要用密钥连接的,请往下看:


这里以 Google Cloud 为例。
如果你使用 Windows,需要打开 PuTTYgen 并点击 Generate 生成新的密钥。

出现这个界面的时候代表你需要移动鼠标来生成随机密钥。

这里会生成一串公钥(就是上方 ssh-rsa 开头的一长串字符)。将你的 Key comment 换为你要登录的用户名。如果你希望,也可以添加一个 Key passphrase 来保护。
然后,点击下面的 Save public key 与 Save private key 分别保存你的公钥、私钥。注意:私钥是你与服务器通信之中的重要安全屏障,服务器要用私钥识别你的身份,请勿将私钥给任何其他不信任的人!他人一旦掌握了你的私钥,即可用你的身份登录服务器!
之后,打开 Google Cloud Platform - Compute Engine - Metadata - SSH Keys

在这里添加你的公钥以后保存。
之后可以连接了。打开 PuTTY,输入服务器 IP。

然后打开 Connection - SSH - Auth,点击 Browse 按钮,打开你的私钥(.ppk)文件。然后可以点击 open 连接了。
对于 MacOS/Linux 用户,请查看官方文档。待我有时间再更新。



防火墙
你的主机防火墙也许会阻拦所有的 Minecraft 客户端流量。如果有阻拦,设置方法如下:
(此处以 Google Cloud 为例,其他也均大同小异)
打开 VPC Networks - Firewall rules,建立一条新的规则,名字任选(只要不与现有冲突)。
Source filter 处选择 IP Ranges;Source IP Ranges 处填写 0.0.0.0;Protocols and ports 处填写 tcp:25565



准备环境
在连接上主机之后,也许你的主机并没预装 Java。这时候我们就需自己安装了。得益于使用 Debian,我们可以使用一个叫做 APT 的软件来管理软件。
注意,为了防止各种权限问题,请使用 root 用户,或保证你现在的用户具 root 权限。如果你的主机商不提供,请自行联系主机商。
如果你想用 root 权限执行指令 a,只需要在 a 前加入 sudo。例如:

代码:

  1. sudo a
如果你要大量地用 root 处理指令,可以输入 sudo -i,接下来你的所有指令都会以 root 执行。这里我们就先输入 sudo -i
接下来执行以下指令:

代码:

  1. apt update
这条指令将检查所有现有软件版本是否有更新,如果有,将会更新。

代码:

  1. apt install screen
虽说大多数服务器都有安装 screen,但也有部分服务器真的没有。可以使用以上指令安装/检查。


代码:

  1. apt install openjdk-8-jre-headless screen
这条指令将安装 OpenJDK 8 JRE。对于 Linux 而言, OpenJDK 是 Java 的最佳选择。由于本文更偏向于新手教学,不会详细地展开关于 OpenJDK 的论述。
另外,如果你的服务器没有 nano,请输入以下内容来安装。

代码:

  1. apt install nano




安装 Minecraft 服务端
准备工作也已经进行完之后,我们可以来安装 Minecraft 服务端了。不过需要注意的是,Minecraft 服务端并不很安全。因此我们不应当将其放到 root 下运行。我们可以输入 adduser minecraft 创建一个名为 minecraft 的新账户。接下来,我们就会以 minecraft 的账户名做例子。当然,你也可以将账户名字换为其它。随后会要求你填写各种信息,按照要求填写即可。
如果你是使用 Google Cloud 等平台的用户,请打开折叠部分。如果不是,请直接略过。


当添加 minecraft 这个用户以后,我们需要在 SSH keys 中给其再度添加公钥。步骤如上。不过需要注意的是,这一次的 Key comment 需要改为 minecraft。MacOS/Linux 用户请暂时查看官方教程,待有时间后将会完善这一部分。


现在,我们可以退出当前对话并以 minecraft 账户重新连接一次。
接下来,我们可以安装 Minecraft 服务端了。你可以选择官方的纯净服务端、Spigot、PaperSpigot、CraftBukkit 等,它们的安装原理都是一样的。
在这里,我们选择 Spigot 1.12.2 版做示例。你可以在这里下载。
接下来,在你的服务器输入:

代码:

  1. wget https://cdn.getbukkit.org/spigot/spigot-1.12.2.jar
(再次提醒:Windows 下的 PuTTY 点击右键粘贴)
这个指令的意思是获取 Spigot 1.12.2 的 jar 文件。文件将被下载到的位置取决于你当前所在的位置。如果你按照前面所做,现在用了 minecraft 账户登录对话,默认目录将会是 home/minecraft
下载完成后,输入:

代码:

  1. java -jar spigot-1.12.2.jar
这个指令的意思是使用 Java 执行名为 spigot-1.12.2.jar 的文件。注意,请自行将 spigot-1.12.2.jar 换为你所下载的文件的名字。
运行之后会输出类似这样的内容:

代码:

  1. [18:42:27 INFO]: Starting minecraft server version 1.12.2
  2. [18:42:27 WARN]: To start the server with more ram, launch it as "java -Xmx1024M -Xms1024M -jar minecraft_server.jar"
  3. [18:42:27 INFO]: Loading properties
  4. [18:42:27 WARN]: server.properties does not exist
  5. [18:42:27 INFO]: Generating new properties file
  6. [18:42:27 WARN]: Failed to load eula.txt
  7. [18:42:27 INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
  8. [18:42:27 INFO]: Stopping server
也就是说,我们并没同意 EULA,因此服务器关闭了。
这时候我们需要修改 eula 文件。注意:当你将 eula 后改为 true 的时候,即代表你同意 EULA。
输入:

代码:

  1. nano eula.txt
找到 eula=false 处并将 false 改为 true。之后保存文件并退出。
这时候,我们可以写一个启动小脚本。输入:

代码:

  1. nano run.sh

随后在编辑器里将以下文本复制进 run.sh

代码:

  1. java -Xms1024M -Xmx1536M -jar spigot-1.12.2.jar -o true
注意,-Xms 与 -Xmx 后面跟的分别是“最小占用内存”与“最大占用内存”。请根据你的服务器实际情况调节。如果你并不了解,可以删除这一部分。后面的 spigot-1.12.2.jar 请依情况换为你的服务端文件名。
保存退出你的脚本。
如果你这时候直接执行脚本,会提示你 Permission denied,也就是权限不足。这时候我们需要标记脚本为可执行。在 Debian 中,表示可执行的权限是 x。因此输入:

代码:

  1. chmod +x run.sh
这个指令的意思是,赋予 run.sh 执行权限。


这时候输入:

代码:

  1. screen ./run.sh
如果一切正常,输出内容的最后一行将会类似于
[18:51:06 INFO]: Done (39.656s)! For help, type "help" or "?"
当你看到这一行文字的时候,就代表你的服务器运行成功了!Congratulations!
当然,你需要配置更多,请参考下一节。



配置文件
如果你要授予某玩家 op 权限, 请在后台输入 op <ID>
另外,如果你需要更多配置,请到后台找到 server.properties 文件。
这里仅列出最基本的配置:
online-mode= 是否允许盗版玩家进入,是为 false,否为 true,默认 true
enable-command-block= 是否允许命令方块,是为 true,否为 false,默认 false
max-players= 最大玩家上限,需要填写整数,默认 20
更多内容请参考 wiki
需要注意的是,如果你更改了端口,需要将之前防火墙的 tcp:25565 也做出对应更改。



FTP
Google Cloud 用户专属


GCP Compute Engine 机器出厂有预装 ftp 服务端,可略过安装过程。
Windows


Windows 系统 下使用 WinSCP 连接时,不可直接使用账密,需要点击“高级”,在里面找到 SSH-验证

在这里面选择你的密钥(.ppk)文件,然后只输入账户,密码部分留空登录。
MacOS/Linux
计划更新。


安装过程
我们需要安装 VSFTPD。


连接到 FTP 服务器


在 Windows 下,推荐使用 WinSCP 软件。在 MacOS/Linux 下,推荐 FileZilla 与 CrossFTP。这三款软件均免费、开源。



保持服务器
如果你需要在个人电脑上关闭对话还保持服务器连接的话,请按下 Ctrl + A 后按 D,这会退出当前的 screen 对话。在退出后关闭对话即可。
如果你需要重新回到游戏控制台,请输入:

代码:

  1. screen -r
如果你需要关闭游戏服务器的话,请重回控制台后输入 stop
如果你在关闭游戏服务器后需要重开,请重新输入

代码:

  1. screen ./run.sh


日常维护
一些不适合在余下栏目放的小技巧将会放在这里。
Debian 日常指令
计划更新


绑定域名
如果你希望推广给别人时显得服务器更成熟,或者单纯看 IP 不顺眼,你可以绑定一个域名。
首先,你需要购买一个域名。如果你在中国大陆服务商购买域名,需要备案。当然,你也可以购买国外的域名。推荐的域名商有:
如果你有 credit 卡(这都能屏蔽系列) / PayPal -> Porkbun,Namecheap
如果你只有支付宝 -> Dynadot,Namesilo
在此之后,你需要确认你的服务器 IP 是 IPv4 还是 IPv6。如果你不知道的话,多半是 IPv4……正经地说,如果你的 IP 像是 12.123.123.123,就是 IPv4,如果你的 IP 像是 2606:4700:4700::1001,就是 IPv6。
如果你是 IPv4,需要在 DNS 记录添加一个 A 记录;如果你是 IPv6,则需要在 DNS 记录添加一个 AAAA 记录指向你的 IP。

就像这样。



参考与版权
本文部分内容参考了以下文章,感谢 / 文章原作者的付出。


https://cloud.google.com/solutions/gaming/minecraft-server
https://cloud.google.com/compute ... ced#thirdpartytools
https://www.linode.com/docs/game ... n-ubuntu-or-debian/
https://minecraft.gamepedia.com/Server.properties


本文采用 Creative Commons BY 4.0 发出,您在署名的情况下即可自由转载。您可以署名我为 Endermoon 或指向本贴。



没填的坑 计划更新
以下是准备未来更新的内容:
  • MacOS/Linux 下添加 ssh-keys
  • Debian 日常指令
  • FTP 设置


Eiup_Niow
快更新 !!!!

做个梦有你
非常感谢!!!

清晨似风
怎么联机啊

做个梦有你
感谢感谢感谢