前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Linux上搭建Terraria 游戏服务器?

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

作者头像
大大刺猬
发布2018-08-31 15:13:51
6.3K0
发布2018-08-31 15:13:51

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的:

代码语言:javascript
复制
sudo yum install screen

于Debian / Ubuntu:

代码语言:javascript
复制
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服务:

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

代码语言:javascript
复制
sudo systemctl start terraria

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

代码语言:javascript
复制
sudo terrariad attach

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

要在启动时启用该服务:

代码语言:javascript
复制
sudo systemctl enable terraria

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

服务器状态

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

代码语言:javascript
复制
sudo systemctl status terraria

输出应类似于:

代码语言:javascript
复制
● 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,请使用以下命令保存世界并关闭游戏服务器:

代码语言:javascript
复制
sudo systemctl stop terraria

附加到控制台

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

代码语言:javascript
复制
sudo terrariad attach

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

更多信息

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作
  • 为Terraria 配置防火墙
    • Firewalld
      • UFW
        • iptables
        • 安装和配置Terraria
        • 管理Terraria服务
          • 屏幕
            • systemd
              • 为基本Terraria管理 创建脚本
              • 运行Terraria
                • 设置Terraria Server开机自启
                  • 服务器状态
                    • 停止服务器
                      • 附加到控制台
                      • 更多信息
                      相关产品与服务
                      主机安全
                      主机安全(Cloud Workload Protection,CWP)基于腾讯安全积累的海量威胁数据,利用机器学习为用户提供资产管理、木马文件查杀、黑客入侵防御、漏洞风险预警及安全基线等安全防护服务,帮助企业构建服务器安全防护体系。现支持用户非腾讯云服务器统一进行安全防护,轻松共享腾讯云端安全情报,让私有数据中心拥有云上同等级别的安全体验。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档