ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

在CentOS上部署泰拉瑞亚模组服务器:从系统配置到自动化运维

在CentOS上部署泰拉瑞亚模组服务器:从系统配置到自动化运维 1. 项目概述为什么要在CentOS上搭建带瑟银灾厄的泰拉瑞亚服务器如果你是一个泰拉瑞亚的深度玩家尤其是对瑟银Thorium和灾厄Calamity这类大型内容扩展模组Mod情有独钟那么本地联机或者使用一些简易的第三方服务器工具可能很快就会遇到瓶颈。延迟高、人数限制、模组管理混乱、存档不稳定……这些问题会严重破坏你和朋友们的游戏体验。这时候拥有一台专属的、24小时在线的私有服务器就成了终极解决方案。而选择CentOS作为服务器的操作系统是经过深思熟虑的。CentOS以其极致的稳定性、出色的安全性和近乎为零的授权成本在服务器领域有着“社区版企业系统”的美誉。虽然CentOS Stream的发布改变了其更新模式但对于我们这种游戏服务应用来说其核心的稳定性和RHEL兼容性依然是最佳选择之一。相较于Windows Server它在资源占用上更“轻量”能将更多的CPU和内存资源留给游戏服务端本身相较于Ubuntu等发行版其保守的软件更新策略意味着更少的意外崩溃和兼容性问题这对于需要长期稳定运行的服务器至关重要。这个项目的核心就是在纯净的CentOS系统上从零开始部署一个支持tModLoader的泰拉瑞亚服务端并成功加载瑟银与灾厄这两个大型模组最终构建一个稳定、可定制、高性能的专属模组游戏世界。整个过程涉及Linux系统操作、服务端配置、模组管理以及网络调试等多个环节我会把每一步的原理、踩过的坑和优化技巧都详细拆解出来。2. 核心需求解析与方案选型在动手之前我们必须明确我们要构建的到底是什么以及为什么选择这套技术栈。2.1 核心组件拆解泰拉瑞亚服务端 (Terraria Server)这是官方提供的、无图形界面的游戏逻辑核心。它负责处理所有游戏世界的运算如怪物生成、物品刷新、玩家交互、物理计算等。我们最终运行的就是这个程序。tModLoader这是泰拉瑞亚的模组加载器也是一个独立的游戏版本。几乎所有大型模组都依赖于它。我们的服务端必须是tModLoader版本而不是原版。这意味着我们需要获取并运行的是tModLoader-server程序。瑟银模组 (Thorium Mod)与灾厄模组 (Calamity Mod)这是两个超大型的内容扩展模组添加了数以千计的新物品、生物、Boss、地形和游戏机制。它们文件体积大对服务器性能有一定要求并且模组间的兼容性、加载顺序需要特别注意。CentOS 操作系统我们选择的服务器基石。它将承担运行服务端、提供网络服务、管理进程和文件系统的职责。2.2 为什么是这套组合稳定性优先游戏服务器尤其是模组服务器最怕的就是无缘无故崩溃或存档损坏。CentOS 的系统服务管理systemd和防火墙firewalld配置清晰软件源稳定为长时间稳定运行提供了坚实基础。资源效率在同等硬件条件下Linux服务端通常比Windows服务端表现出更低的内存占用和更平滑的CPU使用率这意味着你可以用更低的配置支持更多的玩家或者为游戏世界加载更多的模组。自动化与可维护性通过编写 systemd 服务单元文件我们可以实现服务器进程的自动启动、守护崩溃后自动重启和状态监控。配合 cron 定时任务还可以实现自动备份存档这些在 Linux 上都是非常成熟和方便的操作。成本与掌控力使用云服务商的 CentOS 镜像通常没有额外的操作系统授权费用。通过命令行操作你对服务器有完全的掌控力可以进行深度的性能调优和问题排查。注意灾厄模组以其高难度和大量改动著称对服务器性能特别是单核性能的要求比原版或瑟银模组更高。如果你的服务器硬件配置较低例如单核性能弱的VPS在游戏后期或多人同时进行高强度战斗时可能会感到卡顿。选择云服务器时CPU的主频和单核性能是一个关键考量点。3. 环境准备与系统初始化假设你已经拥有一台安装了 CentOS 7.9 或 CentOS Stream 8/9 的服务器物理机或云服务器。我们从最干净的初始状态开始。3.1 系统更新与基础工具安装首先通过SSH连接到你的服务器。第一步永远是更新系统并安装必要的工具。# 1. 更新系统到最新状态 sudo yum update -y # 2. 安装常用的基础工具如解压工具、编译工具、进程查看工具等 sudo yum install -y wget curl tar unzip screen htop ncdu tmuxyum update -y-y参数表示对所有询问自动回答“是”避免交互式操作适合脚本化部署。工具说明wget/curl用于从网络下载文件。tar/unzip用于解压下载的服务端和模组包。screen/tmux终端复用器。这是极其重要的工具。它允许你在断开SSH连接后让服务端进程继续在后台运行。否则你关闭SSH窗口游戏服务器就跟着关闭了。htop一个强大的交互式进程查看器比top更直观方便你监控服务器资源CPU、内存使用情况。ncdu磁盘使用情况分析器可以快速找出哪个目录或文件占用了大量空间在管理模组和存档时非常有用。3.2 创建专用用户与目录不建议直接使用root用户来运行游戏服务端这存在安全风险。我们应该创建一个专用的、权限受限的用户。# 1. 创建一个名为 terraria 的系统用户并指定其家目录为 /opt/terraria sudo useradd -m -d /opt/terraria -s /bin/bash terraria # 2. 切换到该用户 sudo su - terraria现在你的终端提示符应该从root...变成了terraria...。我们后续的所有操作除非特别说明都在这个用户下进行。/opt/terraria将成为我们所有服务器文件的家。3.3 配置系统防火墙泰拉瑞亚服务端默认使用7777端口TCP。如果你的服务器开启了防火墙firewalld或iptables必须放行此端口。# 如果你使用的是 firewalldCentOS 7/8 默认 sudo firewall-cmd --permanent --add-port7777/tcp sudo firewall-cmd --reload # 检查端口是否开放 sudo firewall-cmd --list-ports | grep 7777--permanent使规则永久生效重启防火墙后依然存在。--reload重载防火墙配置使新规则立即生效。如果你的云服务器提供商如阿里云、腾讯云、AWS有额外的安全组Security Group或网络ACL设置请务必在其控制台也添加一条规则允许入方向的 TCP 7777 端口。4. 获取与部署服务端及模组这是最核心的一步我们将获取 tModLoader 服务端和所需的模组文件。4.1 下载 tModLoader 服务端tModLoader 的官方发布在 GitHub 上。我们需要找到适用于 Linux 的服务端版本。# 确保当前在 /opt/terraria 目录下 cd /opt/terraria # 从 tModLoader 的 GitHub Releases 页面下载最新稳定版的 Linux 服务端 # 请访问 https://github.com/tModLoader/tModLoader/releases 查看最新版本号替换下面的链接 # 例如假设最新版本是 v2023.11.5 wget https://github.com/tModLoader/tModLoader/releases/download/v2023.11.5/tModLoader-Linux-v2023.11.5.tar.gz # 解压下载的压缩包 tar -xzf tModLoader-Linux-v2023.11.5.tar.gz # 解压后会得到一个名为 tModLoader-Linux-v2023.11.5 的目录为了便于管理我们可以重命名它 mv tModLoader-Linux-v2023.11.5 tmodserver cd tmodserver现在/opt/terraria/tmodserver目录下应该包含了tModLoaderServer主程序、dotnet运行时依赖、lib库文件等。4.2 首次运行与生成配置文件在安装模组前我们需要先启动一次服务端让它生成必要的目录结构和默认配置文件。# 使用 screen 创建一个新的会话命名为 tmod screen -S tmod # 在 screen 会话中启动服务端 ./tModLoaderServer # 此时程序会提示你选择语言、世界大小、难度等。如果你是第一次运行需要先创建一个新世界。 # 按照屏幕提示操作即可。这个过程可能会比较慢因为要生成整个世界。 # 创建完成后输入 exit 命令退出服务器。 # 退出 screen 会话的快捷键是 CtrlA然后按 DDetach。这样服务器进程就在后台运行了。 # 如果你想回到这个会话使用 screen -r tmod。首次运行后会在tmodserver目录下生成几个关键目录Worlds/存放你的世界存档文件.wld。Mods/存放模组文件.tmod。serverconfig.txt服务器的主要配置文件。现在先按CtrlA, D分离 screen 会话让服务器在后台运行一会儿或者直接按CtrlC停止它。我们接下来配置模组。4.3 安装瑟银与灾厄模组模组文件需要从官方模组浏览器或像https://mirror.sgkoi.dev/这样的镜像站下载。由于服务器没有图形界面我们需要手动下载.tmod文件。# 回到 tmodserver 目录 cd /opt/terraria/tmodserver # 进入 Mods 目录 cd Mods # 下载瑟银模组 (请检查最新版本号) wget https://mirror.sgkoi.dev/Get/ThoriumMod.tmod # 下载灾厄模组 (请检查最新版本号) wget https://mirror.sgkoi.dev/Get/CalamityMod.tmod # 灾厄模组有音乐包如果需要也一并下载体积较大 wget https://mirror.sgkoi.dev/Get/CalamityModMusic.tmod实操心得模组版本必须与 tModLoader 版本兼容。通常tModLoader 更新后主流模组会很快跟进。如果遇到服务器启动时报模组加载错误首先检查模组版本是否过旧。你可以通过https://mirror.sgkoi.dev/查看所有模组及其版本。4.4 启用模组并生成模组配置模组文件放入Mods文件夹后还需要在游戏内或通过配置启用。对于无头服务器我们需要编辑一个配置文件。# 首先确保服务器已完全关闭。 # 然后编辑 enabled.json 文件。这个文件可能不存在第一次需要创建。 cd /opt/terraria/tmodserver/Mods nano enabled.json在enabled.json文件中你需要列出所有要启用的模组内部名称不是文件名。格式如下{ Enabled: [ ThoriumMod, CalamityMod, CalamityModMusic, ModLoader ] }ModLoader是 tModLoader 自身的核心模组必须启用。模组名称必须精确匹配。你可以通过查看.tmod文件的属性或者运行一次服务器它会在日志中列出所有发现的模组及其内部名。保存并退出编辑器在 nano 中是CtrlX然后按Y确认再按回车。5. 服务器深度配置与自动化管理一个可维护的服务器离不开精细的配置和自动化。5.1 详解 serverconfig.txt 配置让我们深入配置serverconfig.txt这个文件决定了服务器的核心行为。cd /opt/terraria/tmodserver nano serverconfig.txt以下是一些关键参数的解析与建议设置# 服务器端口 port7777 # 服务器密码留空则无密码。建议设置一个强密码避免陌生人加入。 password你的强密码 # 世界文件路径相对于 tModLoaderServer 程序的位置或绝对路径。 world/opt/terraria/tmodserver/Worlds/你的世界名.wld # 同时在线玩家最大数量。根据服务器性能设置4核8G的机器设置20-30人问题不大。 maxplayers10 # 服务器语言 languagezh-Hans # 是否自动创建世界。如果指定 world 路径的世界不存在则自动创建。 autocreate2 # 1为小2为中3为大世界 # 世界难度。0经典1专家2大师3旅途。模组服常玩专家或大师。 difficulty1 # 禁止使用的游戏内物品ID用逗号分隔。可以用来禁用一些破坏平衡的BUG物品或模组物品。 banlistexample_item1,example_item2 # 安全设置是否只允许白名单玩家加入。 secure0 # 0关闭1开启。开启后需配合 whitelist.txt 使用。 # 是否启用NPC闲逛NPCs don‘t wander at night。0禁用1启用。 npcstream0 # 优先级设置。设置服务器进程的优先级可能有助于提高性能。 priority1注意事项world路径一定要写对。autocreate和difficulty只在世界文件不存在时生效。一旦世界创建这些属性就固定了需要手动修改世界文件或新建世界才能更改。5.2 创建 Systemd 服务单元实现开机自启与守护使用screen是临时的更专业的方式是配置systemd服务。这样服务器可以随系统启动崩溃后自动重启并且方便地用systemctl命令管理。# 切换到 root 用户或使用 sudo exit # 退出 terraria 用户回到有 sudo 权限的用户 sudo nano /etc/systemd/system/terraria-tmod.service将以下内容粘贴到文件中请根据你的实际路径修改WorkingDirectory和ExecStart[Unit] DescriptionTerraria tModLoader Server Afternetwork.target [Service] Typesimple Userterraria Groupterraria WorkingDirectory/opt/terraria/tmodserver ExecStart/opt/terraria/tmodserver/tModLoaderServer -config /opt/terraria/tmodserver/serverconfig.txt Restarton-failure RestartSec10 StandardOutputjournal StandardErrorjournal # 可选限制资源使用防止服务器占用过多资源导致系统不稳定 # CPUQuota200% # 最多使用2个核心的100% # MemoryMax4G # 最大内存使用4GB [Install] WantedBymulti-user.targetUser/Group指定以terraria用户运行提升安全性。WorkingDirectory服务启动时的工作目录确保程序能找到相对路径下的文件如Mods/,Worlds/。ExecStart启动命令。这里我们通过-config参数指定配置文件这样启动时就不会有交互式提问完全自动化。Restarton-failure和RestartSec10这是守护功能的关键。当服务器进程异常退出崩溃时systemd 会在10秒后自动重新启动它。StandardOutputjournal将日志输出到 systemd 的日志系统方便用journalctl命令查看。保存退出后启用并启动这个服务# 重新加载 systemd 配置 sudo systemctl daemon-reload # 设置开机自启 sudo systemctl enable terraria-tmod.service # 立即启动服务 sudo systemctl start terraria-tmod.service # 查看服务状态和日志 sudo systemctl status terraria-tmod.service sudo journalctl -u terraria-tmod.service -f # -f 表示实时跟踪日志现在你的泰拉瑞亚服务器已经作为一个系统服务在运行了即使服务器重启它也会自动启动。5.3 配置定时自动备份世界存档是服务器最宝贵的资产。定时备份至关重要。# 切换到 terraria 用户 sudo su - terraria # 创建备份脚本 cd /opt/terraria nano backup_world.sh备份脚本内容#!/bin/bash BACKUP_DIR/opt/terraria/backups WORLD_DIR/opt/terraria/tmodserver/Worlds DATE$(date %Y%m%d_%H%M%S) # 创建备份目录如果不存在 mkdir -p $BACKUP_DIR # 停止服务器通过systemd确保存档文件不被写入 sudo systemctl stop terraria-tmod.service sleep 5 # 等待几秒确保进程完全停止 # 打包世界文件和重要配置文件 tar -czf $BACKUP_DIR/world_backup_$DATE.tar.gz -C $WORLD_DIR . # 也可以把 serverconfig.txt, enabled.json 等一起备份 tar -czf $BACKUP_DIR/config_backup_$DATE.tar.gz -C /opt/terraria/tmodserver serverconfig.txt enabled.json # 启动服务器 sudo systemctl start terraria-tmod.service # 删除超过7天的旧备份可选 find $BACKUP_DIR -name *.tar.gz -mtime 7 -delete echo Backup completed at $DATE给脚本添加执行权限并添加到 crontab 定时任务chmod x backup_world.sh # 编辑当前用户的crontab crontab -e在末尾添加一行表示每天凌晨3点执行备份0 3 * * * /opt/terraria/backup_world.sh /opt/terraria/backup.log 21这样每天凌晨3点服务器会自动停止服务、备份存档、然后重启服务并将日志记录到backup.log文件中。6. 高级调优、问题排查与玩家管理服务器上线后维护和优化才是长期的工作。6.1 性能监控与调优建议监控工具htop实时查看CPU、内存使用情况。重点关注tModLoaderServer进程的占用。ncdu /opt/terraria分析磁盘空间看是否是模组或日志文件占用了过多空间。journalctl -u terraria-tmod.service --since “1 hour ago”查看最近一小时的服务器日志关注有无错误或警告。性能调优点JIT 编译.NET 程序首次运行或加载新区域时会有JIT编译开销可能导致瞬间卡顿。运行一段时间后热点代码被编译成本地代码性能会趋于稳定。世界大小与玩家数量超大型世界和过多玩家会显著增加内存和CPU负担。根据硬件合理设置。模组数量除了瑟银和灾厄每增加一个模组都会增加内存消耗和加载时间。务必精挑细选。系统参数对于内存较大的服务器可以尝试调整 .NET 的垃圾回收策略但这是高级话题需要谨慎操作。通常 tModLoader 的默认设置已足够好。6.2 常见问题与排查实录这里记录几个我搭建过程中实际遇到的问题和解决方法。问题1服务器启动失败提示 “Failed to load mod CalamityMod” 或类似错误。排查首先检查日志journalctl -u terraria-tmod.service。错误信息通常会指明原因。可能原因及解决模组版本不兼容这是最常见的原因。确保 tModLoader 版本与瑟银、灾厄模组版本匹配。去模组发布页面查看支持的版本号。模组文件损坏重新下载.tmod文件。依赖缺失某些模组需要其他模组作为前置。灾厄和瑟银通常没有复杂的外部依赖但如果你装了其他小模组需要注意。错误信息会提示缺少哪个模组。enabled.json格式错误检查JSON格式是否正确模组名是否拼写正确。问题2玩家连接时卡在“发现服务器”或“连接被重置”。排查检查防火墙确认服务器本机防火墙和云服务商安全组都开放了7777/TCP端口。可以用sudo ss -tlnp | grep 7777查看端口是否在监听。检查服务器IP确保玩家连接的是服务器的公网IP而不是内网IP。检查服务器状态服务是否真的在运行sudo systemctl status terraria-tmod.service。检查密码如果设置了密码玩家输入是否正确可以在serverconfig.txt中临时注释掉password行进行测试。问题3游戏过程中服务器突然变卡TPS每秒刻数下降。排查使用htop查看是否是CPU或内存占用过高。可能原因世界事件灾厄模组的某些Boss战或事件如“硫磺海事件”会产生大量实体和特效极其消耗性能。液体或沙子/泥沙更新大规模的地形改造尤其是涉及大量液体流动或沙块下落会导致服务器计算量激增。红石/电路虽然泰拉瑞亚原版电路简单但一些模组添加了复杂的机械大量同时运行的电路会拖慢游戏。临时解决可以尝试在游戏内输入//lagcheck如果安装了相关管理模组或手动重启服务器。长期来看需要提醒玩家避免在服务器核心区域进行超大规模的工程。问题4存档文件.wld损坏。预防这就是我们设置定时自动备份的原因。确保备份脚本正常工作。尝试修复tModLoader 服务端在启动加载世界时有时会尝试自动修复轻微损坏。如果失败只能用备份文件覆盖恢复。6.3 玩家管理与命令作为服主你需要掌握一些基本的服务器管理命令。这些命令需要在服务端的控制台输入如果你用screen附着到会话或者通过systemctl管理服务。服务管理sudo systemctl stop terraria-tmod.service # 停止服务器 sudo systemctl start terraria-tmod.service # 启动服务器 sudo systemctl restart terraria-tmod.service # 重启服务器 sudo systemctl status terraria-tmod.service # 查看状态游戏内管理命令需要在服务器控制台输入help查看所有可用命令。off或exit安全关闭服务器会保存世界。比直接CtrlC或kill进程更安全。save手动立即保存世界。kick 玩家名踢出玩家。ban 玩家名封禁玩家。password 新密码更改服务器密码。maxplayers 数量动态修改最大玩家数。实操心得对于模组服强烈建议安装一个服务器管理模组如TShock的 tModLoader 兼容版如果可用或者Server Side Characters等。它们提供了更强大的Web控制面板、权限管理、领地保护、物品禁止等功能能极大减轻日常管理负担。但安装前务必确认其与当前 tModLoader 版本的兼容性。搭建并维护一个模组服务器就像经营一个小型虚拟世界从系统部署、服务配置到日常运维、问题排查每一步都需要耐心和细致。当看到朋友们在你的服务器里畅玩一起挑战灾厄模组那些变态的Boss时所有的折腾都值了。最关键的定期备份定期备份定期备份。
返回列表