Better

Ethan的博客,欢迎访问交流

Minecraft服务器搭建

想利用云服务器搭建一个Minecraft服务器,这样小伙伴就能愉快的玩耍了,但是身边没有人有经验呀,就只能借用搜索引擎乱弄了。

PC版

无意中找到一个教程,MC服务端下载及配置,但是配置完成,手机无论如何访问不了,猛地发现可能教程是针对于PC版本的,这就很尴尬。

这里使用的是Cauldron作为服务端。

手机版

探索一

继续探索,发现手机版似乎需要安装PocketMine。发现如下教程,

  • 教程入口
  • 提示安装好多东西,make,automake,libtool,autocon,使用yum统统安装了
  • 下载并运行,提示需要安装php7
  • 安装php7
    • 教程
    • .configure步骤需要追加--disable-fileinfo,否则提示错Error 1,由于内存小于1G导致编译占用资源不足
    • 由于9000端口个人已经使用,嫌麻烦没有修改端口,并没有启用php-fpm
  • 觉得巨麻烦,暂时没管了。

探索二

同事发现一个教程,根据教程直接下载一个大神写好的脚本就可以全自动开服,而且服务器资源被大神搭建在自己的服务器上,下载不受墙的影响。

脚本下载地址,传送门

开服成功,但是有提示两个问题,不知道有没有影响,QQ群有人说没问题。

  1. Failed loading ./bin/php7/bin/opcache.so: ./bin/php7/bin/opcache.so: cannot open shared object file: No such file or directory
  2. [Server thread/WARNING]: 找不到 OpenSSL 扩展,请重新安装PHP,否则无法使用XBox验证 && 材质包功能(开发中).

配置文件解释:

  1. server.properties:重要的配置文件
  2. ops.txt添加管理员
  3. white-list.txt添加白名单

脚本执行情况

[*] 您现在要开始设置您的服务器了。
[*] 如果您希望使用默认设置,请直接按下回车键。
[*] 您以后可以在server.properties中修改设置.
[?] 给您的服务器起个名字吧: (Minecraft: PE Server): xxx
[*] 如果这是您第一次设置服务器,尽量不要改变端口。
[?] 设置你的服务器端口: (19132): 
[*] 联机模式下, 服务器将强制玩家需要 Xbox 登录
    当联机时, 建议让服务器开启此功能
[?] 您想启用联机模式? (y/N): y
[?] 为您的服务器世界设置一个名称: (world): xxx
[?] 设置您服务器的世界类型: (DEFAULT): 
[*] 选择模式: (0)生存模式 或 (1)创造模式
[?] 默认游戏模式: (0): 
[?] 最多在线人数 (20): 10
[*] 出生点保护可以在出生点范围内保护所有方块不被改变。
[?] 启用出生点保护嘛? (Y/n): y
[?] 当玩家获得成就时是否公布? (y/N): y
[*] OP是服务器的管理员, 可以执行比普通玩家更多的命令.
[?] OP的用户名是什么?: xxx
[*] 白名单可以只允许在其列表内的玩家加入.
[?] 您想启用白名单吗? (y/N): y
[!] 你可以用"/whitelist add <用户名>"把别人加入白名单.
[!] Query可用来获取您服务器数据和登录的玩家.
[!] 如果您禁止了它, 您将不能使用服务器列表.
[?] 您希望禁用Query请求吗? (y/N): 
[*] RCON可用来远程连接到服务器控制台(需要密码).
[?] 您希望启用RCON吗? (y/N): 
[*] 获得你的外部IP和内部IP
[!] 您的外部IP是 xxx . 您可能需要端口转发到您的内网IP xxx .
[!] 请确认,如没有问题请按下\"回车\"键
[*] 您已经成功完成了服务器设置向导.
[*] 请查看插件源来添加新的功能, 迷你游戏或者对服务器的高级保护.
[*] 现在,尽情使用吧~. 输入 \"/help\" 来看所有可用的命令.

高玩

  • 核心
  • 插件
  • 资源包

screen的使用

按照探索二开服成功了,但是关闭窗口,服务也就停止了,因此需要用到screen工具。

  • 创建会话:screen -S name
  • 离开会话:Ctrl-A-D
  • 恢复会话:screen -r name|id
  • 状态:Detached分离 Attached附属
  • 查看全部会话:screen -ls
  • 退出screen,使用screen会耗费一定的系统资源,所以当screen中的命令执行完毕之后,最好退出screen:exit
  • 会话ctrl+c无法结束,又想关闭会话怎么办
    • ps -lA|grep screen:得到想要结束的PID,其实就是使用screen -ls查看到的ID。
    • kill PID即可
  • 其他
    • Ctrl + a,p #上一个子会话
    • Ctrl + a,n #下一个子会话

文件恢复

不知道为什么突然出现一个??文件夹,强迫症一来看着难受,直接rm -rf ??就给删掉了,但是可悲的是与此服务器文件夹pm不见了,难道玩了这么久的数据就没了吗?有什么办法可以恢复吗?

extundelete使用

  1. 在数据被误删除后,第一时间要做的是卸载被删除数据所在的磁盘或磁盘分区,如果是系统根分区的数据遭到误删除,就需要将系统进入单用户,并且将根分区以只读模式挂载。这样做的原因很简单,因为将文件删除后,仅仅是将文件的inode结点中的扇区指针清零,实际文件还存储在磁盘上,如果磁盘以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据块被新的数据覆盖后,这些数据就真的丢失了,恢复工具也回力无天。所以,以只读模式挂载磁盘可以尽量降低数据块中数据被覆盖的风险,以提高恢复数据成功的比率。
    • 进入单用户
    • 只读模式挂载
    • extundelete使用
  2. 很头痛,实在是麻烦,没办法使用阿里云的快照直接回滚了。


留言