OpenShift架设Minecraft服务器教程

今年一月, 我翻译了一篇文章《如何安装Minecraft服务器并免费托管到PaaS》, 这篇文章较为具体的介绍了如何在OpenShift上架设Minecraft服务器, 但由于OpenShift更新太频繁, 加之该教程中有许多漏洞, 现在已经不能很好的使用, 于是博主亲自上阵编写此教程, 以便能够在现版本中架设起Minecraft服务器.

准备工作

在一切开始之前, 我们有一些准备工作必须要去完成.

首先, 对于阅读这篇文章的读者, 如果你身处香港或台湾, 请原谅我使用简体中文来写文章, 因为博主本人是大陆人, 值得庆幸的是, 你们比我们要少做一些准备.

对于身处水深火热的大陆的Minecraft用户, 由于一些众所周知的原因, 我们现在没法直接访问OpenShift, 这意味着我们必须要想办法架起梯子, 翻越城墙, 这不在本文的教程范畴之内, 请自行解决.

解决掉上面那个问题后, 接下来的内容对于每位读者而言都是一样的.

  • 你需要一台电脑, 建议安装Linux系统, 博主我使用的是openSUSE 12.3, Windows用户请自行寻找Git和SSH的替代软件, Mac用户请自行解决问题, 不同系统的差异在原文中有介绍, 不再赘述.
  • 你需要互联网, 连接OpenShift的速度不要太慢就可以.
  • 检查系统中是否安装了SSH, git, rhc等必要软件.

架设Minecraft服务器

打开终端,输入以下命令:

rhc app-create diy diy-0.1  

如果是第一次使用rhc, 可能要求你进行配置, 按照提示进行即可.

命令中的第一个diy是应用的名字, 可以替换成别的.

在输出的文本中, 应该有关于该应用的SSH信息, 例如(这是我的):

SSH:     51c5332f5973ca19e40000f2@diy-blackglory.rhcloud.com

如果网络正常的话, 应该会在当前目录生成一个以应用名命名的文件夹, 如果没有生成, 请执行以下命令(此处的diy也是应用的名字, 相同的提示在下文中将不再重复说明):

rhc git-clone diy  

打开这个文件夹中的.openshift/action_hooks/目录下的start和stop文件,用以下内容替换原内容:

start

#!/bin/bash
cd $OPENSHIFT_DATA_DIR  
nohup bash -c "exec 'java' '-Xms256M' '-Xmx490M' '-jar' 'minecraft_server.jar' '-nogui' &> ${OPENSHIFT_DIY_LOG_DIR}minecraft.log" &>/dev/null &  

stop

#!/bin/bash
killall java exit 0  

修改完成后, 在终端中cd到那个以应用名命名的文件夹, 依次执行以下命令:

git commit -am 'adding'  
git push  

首次使用git的用户可能要进行一些基本配置, 请自行解决.

现在本地能做的事情都做了, 让我们登录OpenShift, 安装Minecraft服务器.

在终端中执行以下命令(替换成你自己的ssh地址):

ssh 51c5332f5973ca19e40000f2@diy-blackglory.rhcloud.com  

登录后依次执行以下命令:

cd $OPENSHIFT_DATA_DIR  
wget https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar  
ctl_app stop  
ctl_app start  
$OPENSHIFT_DIY_IP
$OPENSHIFT_DIY_PORT
ctl_app stop  

记下$OPENSHIFTDIYIP和$OPENSHIFTDIYPORT输出的IP地址和端口, 我的是127.10.59.129和8080.

然后使用nano或者vim打开server.properties文件:

nano server.properties  

vim server.properties  

编辑server-ip的值为之前记录下的IP地址:

server-ip=127.10.59.129  

然后再次执行以下命令:

ctl_app start  

你可能需要等待很长一段时间让Minecraft.jar将世界生成, 通常这一过程需要5分钟左右, 你也可以在$OPENSHIFTDIYLOGDIR或者$OPENSHIFTDATA_DIR找到日志文件来确定世界生成完毕并启动了服务器.

再次执行命令将服务器停止:

ctl_app stop  

此时server.properties文件中应该有了server-port项, 用之前的方法打开文件并把该项的值改成记录下的端口号(如果你没有正版的Minecraft, 还需要将online-mode=true改成online-mode=false).

最后执行一次启动命令,并退出SSH:

ctl_app start  
exit  

现在, Minecraft服务器已经架设完毕了.

今后你可以直接通过rhc命令来启动和停止服务器而不需要登录SSH, 比如:

rhc app-stop diy  
rhc app-start diy  

连接Minecraft服务器

使用命令来完成端口转发(对于你的其他朋友也是如此):

rhc port-forward -a diy  

输出以下内容, 这意味着你的127.0.0.1:8080已经是OpenShift上的127.10.59.129:8080了, 请不要关闭这个终端窗口, 端口转发需要这个终端来维持:

现在打开你的Minecraft, 在多人游戏中使用127.0.0.1:8080作为服务器地址登录即可.

Service Local               OpenShift  
------- -------------- ---- ------------------
java    127.0.0.1:8080  =>  127.10.59.129:8080  

成功成功