专栏首页如何在Linux上搭建Terraria 游戏服务器?

如何在Linux上搭建Terraria 游戏服务器?

Terraria是一款二维沙盒游戏,类似于Minecraft(我的世界),允许玩家在开放的世界中探索,构建和战斗。2015年,Terraria开发者宣布支持Linux,这意味着玩家可以托管他们自己独立的Terraria服务器。

本文概述了为自己和其他人运行Terraria服务器所需的步骤。这些步骤与使用systemd的任何Linux发行版兼容。这包括最新版本的CentOS/redhat,Debian和Ubuntu,Arch Linux和Fedora。

由于Terraria的系统要求,需要具有至少两个CPU内核和足够的内存的Linode。因此,我们建议您在遵循本指南时使用我们的4GB或更高计划。如果您的Linode不符合Terraria的最低要求,则该过程将间歇性地崩溃。

准备工作

  1. 熟悉我们的入门指南并完成设置Linode主机名和时区的步骤。
  2. 本指南将sudo尽可能使用。完成“ 确保服务器安全”指南的各个部分,以创建标准用户帐户,加强SSH访问并删除不必要的网络服务。请勿按照“ 保护你的服务器指南”中的“ 配置防火墙”部分进行操作 - 我们将在下一节中为Terraria服务器配置防火墙。
  3. 更新操作系统的软件包。

为Terraria 配置防火墙

注意Terraria仅支持IPv4,不支持IPv6。

Firewalld

Firewalld是CentOS 7+和Fedora中的默认iptables控制器。有关更多信息,请参阅我们的使用firewalld指南

  1. 设置firewalld开机自启,并启动它: sudo systemctl enable firewalld && sudo systemctl start firewalld 你应该使用默认公共区域。如下: sudo firewall-cmd --get-active-zones
  2. 为Terraria创建一个firewalld服务配置文件: 编辑文件:/etc/firewalld/services/terraria.xml,内容如下: <?xml version="1.0" encoding="utf-8"?> <service> <short>Terraria</short> <description>Open TCP port 7777 for incoming Terraria client connections.</description> <port protocol="tcp" port="7777"/> </service> 启用firewalld服务,重新加载firewalld并验证是否正在使用Terraria服务: sudo firewall-cmd --zone=public --permanent --add-service=terraria sudo firewall-cmd --reload sudo firewall-cmd --zone=public --permanent --list-services 最后一个命令的输出应类似于如下: dhcpv6-client ssh terraria

UFW

UFW(Uncomplicated Firewall)是一个与Ubuntu打包在一起的iptables控制器,但默认情况下它并没有安装在Debian中。

  1. 如果需要安装UFW: sudo apt install ufw #centos可以用 sudo yum install ufw
  2. 为Terraria添加SSH和规则。在启用UFW之前添加规则非常重要。如果不这样做,您将终止SSH会话,并需要使用Lish访问您的Linode : sudo ufw allow ssh sudo ufw allow 7777/tcp
  3. 添加规则后,启用UFW。接下来,删除IPv6的Terraria规则,因为它不需要: sudo ufw enable sudo ufw delete 4 注意: 此步骤中的第二个命令sudo ufw delete 4引用UFW规则集中的第四个规则。如果需要为不同的服务配置其他规则,请根据需要进行调整。以防万一,你可以用 sudo ufw status看你的UFW规则集。

iptables

要在不使用控制器的情况下手动配置iptables,请参阅我们的iptables指南以获取常规规则集。

  1. 您还需要为Terraria添加以下规则: sudo iptables -A INPUT -p tcp --dport 7777 -j ACCEPT
  2. 验证: sudo iptables -vL

安装和配置Terraria

  1. 切换到目录/opt下,并下载Terraria tarball。你可以查看Terraria的网站以获取当前版本。右键单击并复制要使用的链接,用curlwget下载即可。我们将在本文中以版本1.3.4.4为例: cd /opt && sudo curl -O http://terraria.org/server/terraria-server-1344.zip 注意: 在安装Terraria之前,请确保你下载的版本与将要连接的版本相同。
  2. 你可以用unzip来解压缩.zip文件。如果你安装了unzip,本步骤请跳过 Debian / Ubuntu下安装unzip: sudo apt install unzip CentOS下安装unzip: sudo yum install unzip
  3. 提取存档并设置必要的权限: sudo unzip terraria-server-1344.zip #解压 sudo mv /opt/Dedicated\ Server/Linux /opt/terraria #移动到/opt/terraria目录 sudo rm -rf Dedicated\ Server/ sudo chown -R root:root /opt/terraria #递归设置目录所有者和所属组 sudo chmod +x /opt/terraria/TerrariaServer.bin.x86_64 #增加执行权限权限
  4. 在离散用户下运行守护进程是一种很好的做法。创建一个terraria运行游戏服务器的用户: sudo useradd -r -m -d /srv/terraria terraria #创建一个用户并指定其家目录
  5. Terraria有一个服务器配置文件,你可以使用:自动创建世界服务器密码难度和其他选项等选项进行编辑。创建默认文件的副本(重点:这是个非常好的习惯),以便在遇到问题时还原到某些内容: sudo mv /opt/terraria/serverconfig.txt /opt/terraria/serverconfig.txt.bak 为自己创建一个新的服务器配置文件。下面的选项将MyWorld在游戏服务器启动时自动创建和提供。请注意,你需要更改MyWorld为你选择的世界名称。 修改文件:/opt/terraria/serverconfig.txt world=/srv/terraria/Worlds/MyWorld.wld #指定.wld目录 autocreate=1 #设置为自动创建 worldname=MyWorld #设置worldname的名字 worldpath=/srv/terraria/Worlds #指定路径

管理Terraria服务

屏幕

Terraria运行交互式控制台作为其服务器进程的一部分。尽管有用,但在服务管理器下运行游戏服务器时,访问此控制台可能具有挑 可以通过在屏幕会话中运行Terraria来解决此问题,该会话将使您能够在屏幕内向侦听管理控制台发送任意命令。

使用系统的包管理器安装屏幕:

CentOS的:

sudo yum install screen

于Debian / Ubuntu:

sudo apt install screen

systemd

有一个自动启动,停止和启动Terraria的方法很有用。如果系统意外重启,这一点很重要。

创建以下文件以定义terrariasystemd服务:

编辑文件:/etc/systemd/system/terraria.service

1 2 3 4 5 6 7 8 9 10 11 12

[Unit] Description=server daemon for terraria [Service] Type=forking User=terraria KillMode=none ExecStart=/usr/bin/screen -dmS terraria /bin/bash -c "/opt/terraria/TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt" ExecStop=/usr/local/bin/terrariad exit [Install] WantedBy=multi-user.target

  • ExecStart指示systemd生成一个包含64位TerrariaServer二进制文件的屏幕会话,该会话启动守护程序。KillMode=none用于确保systemd在有机会正常保存和关闭之前不会过早地终止服务器。
  • ExecStop调用脚本将exit命令发送给Terraria,Terraria告诉服务器确保在关闭之前保存世界。在下一节中,我们将创建一个脚本,该脚本将向运行的Terraria服务器发送必要的命令。

警告此脚本旨在在您重新启动Linode中的操作系统时保存您的世界。它打算保存进度,如果你从Linode管理重新启动你的Linode。如果必须重新启动Linode,请先使用Terraria服务停止sudo systemctl stop terraria。这将保存您的世界,然后您可以从Linode管理器重新启动。

为基本Terraria管理 创建脚本

Terraria管理脚本需要两个主要功能:

  • 附加到正在运行的屏幕会话,它提供了一个有用的管理控制台。
  • 能够将输入广播到屏幕会话中,以便可以运行脚本来保存世界,退出服务器等。
  1. 创建一个terrariad文件,输入以下脚本,然后保存并关闭: 编辑/usr/local/bin/terrariad ,内容如下: #!/usr/bin/env bash send="`printf \"$*\r\"`" attach='script /dev/null -qc "screen -r terraria"' inject="screen -S terraria -X stuff $send" if [ "$1" = "attach" ] ; then cmd="$attach" ; else cmd="$inject" ; fi if [ "`stat -c '%u' /var/run/screen/S-terraria/`" = "$UID" ] then $cmd else su - terraria -c "$cmd" fi
  2. 给脚本加执行权限: sudo chmod +x /usr/local/bin/terrariad

此脚本允许你可以同时:

  • 连接到控制台以进行直接管理,以及
  • 发送控制台命令,如运行saveexit运行时,无需连接(当systemd等服务需要发送服务器命令时很有用)。

注意:在本文的其余部分中,您可能会在运行terrariad命令时遇到“command not found”错误。这可能是由于在运行sudo命令时/usr/local/bin/不在$PATH里,这可能发生在某些Linux发行版中。您可以通过使用完整路径调用脚本来解决此问题。例如,使用sudo /usr/local/bin/terrariad attach,而不是运行sudo terrariad attach。

运行Terraria

设置Terraria Server开机自启

启动terraria服务:

现在已经安装了游戏服务器,编写了脚本,并且服务准备就绪,可以使用单个命令启动服务器:

sudo systemctl start terraria

第一次运行服务器时,它将生成之前定义的世界。这需要一段时间,所以在尝试连接之前先给它时间。要观察世界一代的进步,请使用:

sudo terrariad attach

除了启动和停止terraria服务之外,systemd还可以使用之前创建的服务文件在启动时自动启动Terraria。

要在启动时启用该服务:

sudo systemctl enable terraria

如果操作系统因任何原因重新启动,Terraria将在重启时启动。

服务器状态

要检查服务器是否正在运行,请使用以下命令:

sudo systemctl status terraria

输出应类似于:

● terraria.service
Loaded: loaded (/etc/systemd/system/terraria.service; disabled)
Active: active (running) since Tue 2017-03-07 17:37:03 UTC; 7s ago
Process: 31143 ExecStart=/usr/bin/screen -dmS terraria /bin/bash -c /opt/terraria/TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt (code=exited, status=0/SUCCESS)
Main PID: 31144 (screen)
CGroup: /system.slice/terraria.service
├─31144 /usr/bin/SCREEN -dmS terraria /bin/bash -c /opt/terraria/TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt
└─31145 /opt/terraria/TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt

停止服务器

如果你想关闭Terraria,请使用以下命令保存世界并关闭游戏服务器:

sudo systemctl stop terraria

附加到控制台

在运行服务器的过程中,你可能需要连接到控制台来执行踢球员或更改当天消息(MOTD)等操作。terrariad使用脚本进入Terraria服务器控制台:

sudo terrariad attach

键入help以获取命令列表。完成后,使用键盘快捷键CTRL + A,然后使用D从屏幕会话中分离并使其在后台运行。屏幕的更多键盘快捷键可以在屏幕默认键绑定文档中找到

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

本文的版权归 大大刺猬 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [ 和 [[ 和 test 谁更快??

    [ 是命令: /usr/bin/[ 这个命令很特殊, 结尾只能是 ] , 所以感觉像逻辑判断一样

    大大刺猬
  • CMQ测试TOPIC报错

    {"code":6000,"message":"(10050)server internal error","requestId":"2077840488935...

    大大刺猬
  • linux扫描主机端口

    使用方法:在linux环境下执行如下shell脚本,即可在/usr/bin下面生成脚本scanportDDCW.

    大大刺猬
  • 【1】GAN在医学图像上的生成,今如何?

    最初,GAN在被提出时,是一个无监督(无条件)的生成框架:例如在图像合成中,将随机噪声映射到逼真的目标图像。

    公众号机器学习与生成对抗网络
  • VeeR CEO叶瀚中:聚合更多优秀内容,探索完善的商业变现模式

    临近年底,VRPinea例行的厂商巡访/回访已正式开启,本文为第五篇年终巡访/回访稿件。前四篇专访为黑盾、HADO、小派科技、青瞳视觉。本次厂商年终巡访/回访对...

    VRPinea
  • CentOS 7安装 Gitlab

    前言:在阿里云服务器安装一个自己的git服务器,有钱的可以使用coding.net。

    王念博客
  • matlab GUI基础8

    图像处理工具箱 从屋物理和数学角度看,图像时记录物体辐射能量的空间发呢不,这个分布是空间坐标、时间坐标和波长的函数,即i = f(x,y,z,λ,t),这样的图...

    瓜大三哥
  • 【简单的CV】2.0 滤波、核与卷积(下)

    这个图就是模糊处理过的图片,大部分模糊的图片给我们感觉都是分辨率不够。所以我们这里的滤波思路就是“降低图像的分辨率”。

    EdenChen
  • 独家 | 2019 ICCV 收录论文:基于弱监督学习的病理影像分析框架

    恶性肿瘤是全球第二大死因,每年导致近千万人死亡。病理报告是肿瘤临床诊断和治疗的“金标准”,是癌症确诊和治疗的基本依据。为了缓解世界范围内病理医生短缺的现状,人工...

    数据派THU
  • 潘石屹用Python解决100个问题 | 斐波那契数列分数

    今天我们还是学习斐波那契数列。有一个分数序列为 2/1,3/2,5/3,8/5,13/8,21/13……请用Python3编程,求出这个数列的前20项之和。

    week

扫码关注云+社区

领取腾讯云代金券