如何用阿里云ECS搭建Minecraft服务器

9046f88840f8acc535cb70912c0ba1a3

最近几天心血来潮,想要和小伙伴们一起玩一下Minecraft,看了下官网的价格还是感觉略贵,由于之前玩过其他小伙伴的私人服务器,就特别想自己也搭建一个。

结果这两日一直在捣鼓这个东西并且发现实际时间都耗在:

  • 找一个免费的服务器来搭建服务
  • 找一个免费的客户端

实际情况就是,免费的服务器基本上没有找到,后来尝试重新注册一个AWS账号来获取免费的服务器配额,也实在感觉无法忍受其在国内访问的缓慢。最后干脆还是去阿里云先买了一个最便宜的ECS,包一个月玩一下先。下面具体介绍搭建的完整流程。

购买ECS

选择用阿里云的产品,主要是考量到:大公司,稳定可靠,在国内速度快,产品丰富网站的界面交互等都还不错。自从最近把博客架设到阿里云以后,对其好感就愈加强烈,并且最近准备把所有的域名都从其他网站上收敛过来统一管理。

废话不多,直接去阿里云的ECS推荐购买里面选择第一款:

推荐购买

确认配置后付钱。一个月60,大家自己看着办吧,可以先买一个月尝试:

确认配置

购买完成以后,新实例会需要几分钟的激活和启动,可以在个人的管理控制台中看到新购买的这个实例:

控制台

待机器已经正常运行后,就可以进行连接了,点击 “管理”,然后在实例的信息页可以看到“连接帮助”:

连接帮助

点开后一目了然,windows用户自己去倒腾putty吧(反正我是没用过):

连接指南2

打开你的终端,我们开始进行连接到实例:

$ ssh root@你的公网ip(公网IP在实例页面有哦)

会提示你输入密码,是你阿里云账号的登录密码,成功登录你会看到:

Welcome to aliyun Elastic Compute Service!

Good Job!

搭建服务

下面我们要为开始搭建服务器做一些准备工作。首先更新一下yum的包,确保我们要安装的东西都能找到:

$ yum update

等好了之后我们安装 “screen”,linux下的一个终端进程和窗口的管理工具,简单来说有了它我们就可以:

  • 同时运行多个会话,执行进程,并且可以在多个会话间切换
  • 即使我们断开连接,进程还会继续维持运行,并且下次还可以回到之前启动的会话中

直接执行 yum install screen 就可以完成安装。接下来创建一个目录,把相关的操作都放到这个目录里面,方便整理:

$ mkdir minecraft
$ cd minecraft
$ mkdir server # 把server相关东西都放进去
$ cd server

创建完目录后,我们开启一个新的screen会话,后续我们就把所有mc相关的操作都放到这个会话中:

$ screen -S Minecraft # -S 是为会话取个名字

你会注意到整个终端被清空,其实已经在新建的这个会话中了,可以查看当前已经创建的会话:

$ screen -ls
There is a screen on:
6316.Minecraft (Attached)
1 Socket in /var/folders/mj/45h_01550mx6ph2jt8vy3_7h0000gn/T/.screen.

好,我们干正事。首先需要安装Java,有yum真是太简单了:

yum install java

So easy!下一步,下载minecraft的server文件,直接去minecraft的官网可以下载,在页面下面的”Multiple Player”部分,可以找到最新的下载链接,直接下载到server目录下:

$ wget https://s3.amazonaws.com/Minecraft.Download/versions/1.8.9/minecraft_server.1.8.9.jar

有了启动文件,我们就可以启动它,官网直接有提示如何启动:

$ java -Xmx1024M -Xms1024M -jar minecraft_server.1.8.9.jar

上面两个参数都是用来控制分配内存的,建议根据自己的ECS实例具体情况分配。直接在终端执行以上命令后,肯定会提示错误,要求你去修改一个文件来同意他们的条款。此时ls一下server目录,你会发现运行一遍后多了一堆文件。找到其中的evla.txt, 修改false为true:

By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
Fri Jan 29 20:40:42 CST 2016
eula=true

我们还需要禁用掉minecraft的用户在线校验,打开 server.properties, 修改:

$ online-mode=false

配置基本完成。补充一下 server.properties 可以用来配置很多游戏的特性,比如最多在线人数,具体的每个配置项可以参考wiki

在正式启动server之前,为了后续的操作方便,我们可以专门新建一个启动脚本来包裹启动命令,新建一个 start.sh 然后输入下面的内容:

#!/bin/bash
java -Xincgc -Xmx512M -Xms512M -jar minecraft_server.1.8.9.jar

保存,然后添加可以执行权限:

$ chmod +x start.sh

启动脚本:

$ ./start.sh

Done! 我们的服务器就配置好啦!你可以拿着你的公网ip邀请小伙伴们加入游戏了。

关于Screen

下面再补充和总结下screen的一些操作。会话级别的操作:

$ screen -S sessionName # 创建会话
$ screen -ls # 查看已经创建的会话
$ screen -x sessionName # 重新进入之前已经创建的会话

有了上面三个命令,你就不怕不小心链接实例的ssh突然断掉等情况了。除了上面会话级别的操作以外,在一个会话里面,可以同时开启多个窗口来并行执行多个操做。当你在一个会话中时,就可以通过 ctrl + a 作为命令的开始,然后再按下下一个命令键来完成命令:

ctrl-a + w # 列出所有的打开的窗口(会显示在终端的标题栏上)
ctrl-a + c # 新建一个窗口
ctrl-a + n # 切换到第N个窗口
ctrl-a + space #切换到下一个窗口
ctrl-a + k # 关闭当前窗口
ctrl-a + d # detach 离开当前的会话(会话会继续在后台执行,后面你可以用上面的会话命令 screen -x 重新链接回来)
ctrl-a + [ # 进行copy模式,这个在窗口内容很多的时候比较有用,因为screen下的窗口是没法通过滚轮查看上面的内容的,开启copy mod就可以用vi的方式移动光标了

Minecraft客户端使用帮助

下面再说下客户端。不是所有的一起玩的小伙伴都是搞开发的,因此要想让一个正常的用户也能欢快的玩起来,还是需要一些工作要做。

首先,安装Java。直接官网下载即可,不多说。

其次,需要翻墙。在此正好安利一下某开源的免费翻墙工具,对于非技术人员来说使用太简单了。这个产品就是Latern(他们的官网被墙了):

屏幕快照-2016-02-01-13.35.11

好在他们的项目是在github上,可以直接在其github首页找到下载。下载完成后,直接启动就可以翻墙了。

要是Latern不可用了或者搞不定,请移步我写的另一篇科学上网教程《小白易学 Mac & iOS Shadowsocks 科学上网全攻略

最后就是下载免费的minecraft客户端,可以直接使用teamshiginima.com。但是他家的广告真是有点多..要skip好久。(百度云盘

开始游戏

直接双击从teamshiginima下载的文件中对应你自己系统的Shiginima Launcher SE v3.000.jar,等个一会儿会出现用户名设置:

屏幕快照-2016-02-01-12.54.45

然后点击play后进入配置页面:

屏幕快照-2016-02-01-12.55.04

右下角的问题如果是 “loading versions…” 则说明是在进行数据加载,此时先等待。正常显示后,点击play,然后会开始下载你选择的版本的资源文件(要自己决定哪个版本,可以edit profile),这个过程可能要很久,请耐心等待。而且如果出现加载完毕后没有反应点击了play又重新下载,可能是上一次的下载超时了。

因此这一步骤是最容易卡主的,需要耐心~待成功下载完成后,会自动开始游戏界面:

屏幕快照-2016-02-01-12.58.23

简直要喜极而泣。如果你的是英文界面,可以在下面左边的那个大按钮里面设置。选择多人游戏:

屏幕快照-2016-02-01-12.58.28

点击“添加服务器”来添加服务器,只要输入服务器的ip即可,名字随意:

屏幕快照-2016-02-01-12.59.13

然后直接双击创建好的服务器就可以进入游戏了!下面是我自己随便先进来造的小房子:

屏幕快照-2016-02-01-13.04.06

终于!祝大家玩的开心,

18 Comments

    1. 首先用文中的命令切回到你的开启服务器的会话: screen -x sessionName,然后进去一般 ctrl + c 即可。

  1. 感谢教程
    想知道ECS使用windows server 2012的话是不是直接远程控制服务器,安装java和mc服务端就可以使用呢。。
    不会linux,只在windows下用过傻瓜式的MC服务器搭建软件,不需要输入命令行,在GUI中就能修改各种服务器设置很是方便。不清楚这种软件在windows server系统中能不能使用呢。。

    1. 至少就我的经验来看是要的,只要是在阿里云的服务器上做web网站,如果你不做备案,访问的时候也会被阿里云直接拦截要求你先做备案的。

      不过如果是购买的香港或者新加坡的机器可能就不需要备案,你可以具体咨询一下阿里云的客服

  2. 在下载到Minecraft之后,执行java -Xmx...的时候,发生了以下报错:


    Exception in thread "main" java.lang.ExceptionInInitializerError
    at java.lang.Class.initializeClass(libgcj.so.10)
    at net.minecraft.server.MinecraftServer.(SourceFile:49)
    at java.lang.Class.initializeClass(libgcj.so.10)
    Caused by: java.lang.UnsupportedOperationException: gnu::java::lang::management::VMThreadMXBeanImpl::getThreadInfoForId (jlong, jint) not implemented
    at gnu.java.lang.management.ThreadMXBeanImpl.getThreadInfo(libgcj.so.10)
    at java.lang.reflect.Method.invoke(libgcj.so.10)
    at java.lang.Thread.getStackTrace(libgcj.so.10)
    at org.apache.logging.log4j.status.StatusLogger.log(StatusLogger.java:182)
    at org.apache.logging.log4j.spi.AbstractLogger.warn(AbstractLogger.java:1918)
    at org.apache.logging.log4j.LogManager.(LogManager.java:114)
    at java.lang.Class.initializeClass(libgcj.so.10)
    ...2 more

    在更新了java之后依然没有用,求解,,,

    1. 大概是因为包含Latern被和谐了,我更新了下,只保留Minecraft的客户端分享了

Leave a Comment

Your email address will not be published. Required fields are marked *