Terraria是一款二维沙盒游戏,类似于Minecraft(我的世界),允许玩家在开放的世界中探索,构建和战斗。2015年,Terraria开发者宣布支持Linux,这意味着玩家可以托管他们自己独立的Terraria服务器。
本文概述了为自己和其他人运行Terraria服务器所需的步骤。这些步骤与使用systemd的任何Linux发行版兼容。这包括最新版本的CentOS/redhat,Debian和Ubuntu,Arch Linux和Fedora。
由于Terraria的系统要求,需要具有至少两个CPU内核和足够的内存的Linode。因此,我们建议您在遵循本指南时使用我们的4GB或更高计划。如果您的Linode不符合Terraria的最低要求,则该过程将间歇性地崩溃。
sudo
尽可能使用。完成“ 确保服务器安全”指南的各个部分,以创建标准用户帐户,加强SSH访问并删除不必要的网络服务。请勿按照“ 保护你的服务器指南”中的“ 配置防火墙”部分进行操作 - 我们将在下一节中为Terraria服务器配置防火墙。注意Terraria仅支持IPv4,不支持IPv6。
Firewalld是CentOS 7+和Fedora中的默认iptables控制器。有关更多信息,请参阅我们的使用firewalld指南。
sudo systemctl enable firewalld && sudo systemctl start firewalld
你应该使用默认公共区域。如下:
sudo firewall-cmd --get-active-zones
sudo firewall-cmd --zone=public --permanent --add-service=terraria
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --permanent --list-services
最后一个命令的输出应类似于如下:
dhcpv6-client ssh terrariaUFW(Uncomplicated Firewall)是一个与Ubuntu打包在一起的iptables控制器,但默认情况下它并没有安装在Debian中。
sudo apt install ufw
#centos可以用 sudo yum install ufw
sudo ufw allow ssh
sudo ufw allow 7777/tcp
sudo ufw enable
sudo ufw delete 4
注意: 此步骤中的第二个命令sudo ufw delete 4
引用UFW规则集中的第四个规则。如果需要为不同的服务配置其他规则,请根据需要进行调整。以防万一,你可以用 sudo ufw status
看你的UFW规则集。要在不使用控制器的情况下手动配置iptables,请参阅我们的iptables指南以获取常规规则集。
sudo iptables -A INPUT -p tcp --dport 7777 -j ACCEPT
sudo iptables -vL
/opt下,
并下载Terraria tarball。你可以查看Terraria的网站以获取当前版本。右键单击并复制要使用的链接,用curl
或wget下载即可
。我们将在本文中以版本1.3.4.4为例:
cd /opt && sudo curl -O http://terraria.org/server/terraria-server-1344.zip
注意: 在安装Terraria之前,请确保你下载的版本与将要连接的版本相同。
unzip
来解压缩.zip文件。如果你安装了unzip,本步骤请跳过
Debian / Ubuntu下安装unzip:
sudo apt install unzip
CentOS下安装unzip:
sudo yum install unzip
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
#增加执行权限权限
terraria
运行游戏服务器的用户:
sudo useradd -r -m -d /srv/terraria 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来解决此问题,该会话将使您能够在屏幕内向侦听管理控制台发送任意命令。
使用系统的包管理器安装屏幕:
CentOS的:
sudo yum install screen
于Debian / Ubuntu:
sudo apt install screen
有一个自动启动,停止和启动Terraria的方法很有用。如果系统意外重启,这一点很重要。
创建以下文件以定义terraria
systemd服务:
编辑文件:/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 |
---|
TerrariaServer
二进制文件的屏幕会话,该会话启动守护程序。KillMode=none
用于确保systemd在有机会正常保存和关闭之前不会过早地终止服务器。exit
命令发送给Terraria,Terraria告诉服务器确保在关闭之前保存世界。在下一节中,我们将创建一个脚本,该脚本将向运行的Terraria服务器发送必要的命令。警告此脚本旨在在您重新启动Linode中的操作系统时保存您的世界。它不打算保存进度,如果你从Linode管理重新启动你的Linode。如果必须重新启动Linode,请先使用Terraria服务停止
sudo systemctl stop terraria
。这将保存您的世界,然后您可以从Linode管理器重新启动。
Terraria管理脚本需要两个主要功能:
/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
此脚本允许你可以同时:
save
或exit
运行时,无需连接(当systemd等服务需要发送服务器命令时很有用)。注意:在本文的其余部分中,您可能会在运行
terrariad
命令时遇到“command not found”错误。这可能是由于在运行sudo命令时/usr/local/bin/
不在$PATH里
,这可能发生在某些Linux发行版中。您可以通过使用完整路径调用脚本来解决此问题。例如,使用sudo /usr/local/bin/terrariad attach,
而不是运行sudo terrariad attach。
启动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从屏幕会话中分离并使其在后台运行。屏幕的更多键盘快捷键可以在屏幕默认键绑定文档中找到。
有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。