云服务器搭建 饥荒(x64位)-2024年4月24日

本文详细介绍了如何在Linux系统上安装必要的依赖,配置SteamCMD以安装饥荒联机版,创建服务器存档,添加管理员权限,订阅MOD,以及编写启动、停止和更新脚本。同时涵盖了防火墙设置、服务器命名和版本管理,以及服务器卡顿的排查方法。
摘要由CSDN通过智能技术生成

一、安装依赖

yum install epel-release    # 添加 EPEL 仓库
yum update    # 更新系统
yum install libstdc++ libgcc glibc.i686 libcurl-devel zlib.i686    # 安装依赖

二、安装 SteamCMD

mkdir /root/steamcmd && cd /root/steamcmd    # 创建steamcmd文件夹,并进入
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz    # 下载 steamcmd 程序
tar -xvzf steamcmd_linux.tar.gz    # 解压 steamcmd_linux.tar.gz 文件
./steamcmd.sh    # 启动 steamcmd

三、安装饥荒联机版

steam> force_install_dir /root/dst
steam> login anonymous
steam> app_update 343050 validate
steam> quit
# 每输入一个命令进行等待,等待出现 steam> 在进行下个命令。

四、创建服务器存档

1. 在服务器中创建存档的存放文件夹,进入文件夹。
mkdir -p /root/.klei/DoNotStarveTogether/Cluster_1
cd /root/.klei/DoNotStarveTogether/Cluster_1
2. 在 Windows 上先创建地图,然后找到地图文件,上传到服务器中,没有 cluster_token.txt 文件没关系,后面会创建。
Windows里:
地图文件:C盘/用户/Administrator/文档/klei/DoNotStarveTogether/ID/Cluster_1/ 
服务器里:
yum install -y lrzsz    # 下载文件上传工具
将 Windows 所有地图文件拖入到 XShell 窗口

3. 创建服务器 token,复制。

    Klei Account:https://accounts.klei.com/account/game/servers?game=DontStarveTogether

4. 在服务器的Cluster_1文件夹下创建文件cluster_token.txt,将服务器 token 保存到文件中。
echo "token" cluster_token.txt

五、为自己添加管理员权限

1. 访问 Klei Account:https://accounts.klei.com/account/info 页面,找到自己的 klei ID

2. 创建管理员权限文件,复制 klei ID 替换到文件中
    echo "klei ID" adminlist.txt

六、为服务器订阅MOD

在 /root/.klei/DoNotStarveTogether/Cluster_1/Master/modoverride.lua 中查看 Mod-ID,将Mod-ID 全部写入 /root/dst/mods/dedicated_server_mods_setup.lua

Ps:/root/.klei/DoNotStarveTogether/Cluster_1/Master/modoverride.lua就是这个地图的 MOD 配置,如果订阅了新 MOD ,一定要到这里添加配置,不然 MOD 不会生效。 Caves中也有一个modoverride.lua文件,记得一起修改。

 

 七、创建启动脚本

cd /root/    # 切换到/root/目录下,创建脚本:

vim boot.sh
--------------------以下为脚本内容---------------------
#!/bin/bash
steamcmd_dir="/root/steamcmd"
install_dir="/root/dst"
cluster_name="Cluster_1"
dontstarve_dir="/root/.klei/DoNotStarveTogether"

function fail() {
    echo Error: "$@" >&2
    exit 1
}

function check_for_file() { 
    if [ ! -e "$1" ]; then
        fail "Missing file: $1"
    fi
}

cd "$steamcmd_dir" || fail "Missing $steamcmd_dir directory!"
check_for_file "steamcmd.sh"
check_for_file "$dontstarve_dir/$cluster_name/cluster.ini"
check_for_file "$dontstarve_dir/$cluster_name/cluster_token.txt"
check_for_file "$dontstarve_dir/$cluster_name/Master/server.ini"
check_for_file "$dontstarve_dir/$cluster_name/Caves/server.ini"
check_for_file "$install_dir/bin"
cd "$install_dir/bin64" || fail
run_shared=(./dontstarve_dedicated_server_nullrenderer_x64)
run_shared+=(-console)
run_shared+=(-cluster "$cluster_name")
run_shared+=(-monitor_parent_process $$)
run_shared+=(-shard)
"${run_shared[@]}" Caves | sed 's/^/Caves: /' &
"${run_shared[@]}" Master | sed 's/^/Master: /'
------------------------------------------------------
chmod u+x boot.sh    # 赋予boot.sh执行权限

 八、防火墙开放端口

  具体需要开放的端口可以查看存档文件夹下的这几个文件

  饥荒端口,UDP 协议:

  /root/.klei/DoNotStarveTogether/Cluster_1/cluster.ini中的master_port

  /root/.klei/DoNotStarveTogether/Cluster_1/Master/server.ini中的server_port

  /root/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini中的server_port

   steam 端口,TCP+UDP 协议:

  /root/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini中的master_server_portauthentication_port

在命令行执行此命令:
grep -E 'master_port|server_port|master_server_port|authentication_port' /root/.klei/DoNotStarveTogether/Cluster_1/cluster.ini /root/.klei/DoNotStarveTogether/Cluster_1/Master/server.ini /root/.klei/DoNotStarveTogether/Cluster_1/Caves/server.ini

  在云服务器网站上-实例-安全组-配置规则,添加如下配置:

九、启动饥荒服务器

nohup ./boot.sh &    # 后台运行,并记录输出内容
tail -100f nohup.out    # 动态查看100行

   能看到下面这样的输出就是启动成功了:

Caves: [00:01:21]: Received MasterInfoPacket row a4c11a8dbe3e737854e23c2a2744cf50 region ap-southeast-1
Caves: [00:01:21]: Obtaining secondary shard IP from ap-southeast-1 lobby
Caves: [00:01:22]: [Shard] secondary shard is now ready!
Caves: [00:01:22]: World 1 is now connected        
Caves: [00:01:22]: [SyncWorldSettings] Sending ResyncWorldSettings.        

十、编写操作脚本

【启动脚本】
vim start.sh
------------------------------------------------------
#!/bin/bash
nohup /root/boot.sh &

# 等待进程启动
echo "服务器正在启动..." && sleep 3

# 检查进程是否正在运行
if pgrep -f dontstarve_dedicated_server_nullrenderer > /dev/null
then
    echo "服务器启动成功!"
else
    echo "警告:服务器未能启动!"
fi
------------------------------------------------------

【停止脚本】
vim stop.sh
------------------------------------------------------
#!/bin/bash
pkill -f dontstarve_dedicated_server_nullrenderer
------------------------------------------------------

【更新脚本】
vim update.sh
---------------------------------------------------------------------------------------
#!/bin/bash
/root/steamcmd/steamcmd.sh +force_install_dir /home/dst +login anonymous +app_update 343050 validate +quit
---------------------------------------------------------------------------------------

 十一、修改服务器名称和密码

服务器的名称的名称和密码在/root/.klei/DoNotStarveTogether/Cluster_1/cluster.ini文件中,修改后重启即可

  cluster_password = xxxxxxx

  cluster_name = Elm的世界

十二、更新服务器到最新版本

每次饥荒联机版更新后都需要同步更新服务器,不同版本之间不能在一起玩,而且搜索不到房间。

这里推荐一个查询饥荒服务器的网址,如果你在这个网址上能搜到自己的服务器,但是其他人搜不到,那应该就是版本不同导致的。

饥荒网页版服务器列表:https://dst.liuyh.com/serverlist

十三、服务器卡顿可能原因排查

  导致玩家在服务器上卡顿的原因有很多,比如:

1. 玩家到服务器连接不稳定

2. 服务器CPU负载过高 或 内存不足

3. 存在优化较差的MOD 或 相互不兼容

  验证方式:

1. 连接是否稳定可以使用ping命令

【Windows】
Win + R,输入cmd回车,ping 服务器IP -t
C:\Users\Administrator>ping 121.36.205.101 -t

正在 Ping 121.36.205.101 具有 32 字节的数据:
来自 121.36.205.101 的回复: 字节=32 时间=19ms TTL=45
来自 121.36.205.101 的回复: 字节=32 时间=18ms TTL=45

Ctrl+C #停止
观察时间那一列是否经常会跳出一些比较大的数字,一般来说 <60ms 都是正常的。

2. 服务器性能排查,在 ubuntu/centos 系统中可以使用 top 或者 htop 命令查看服务器资源使用情况

yum install -y htop    # 下载服务器状态查看工具
htop    # 使用工具

3. MOD 问题

可以上传一个纯净存档(不开任何MOD)试试,如果不卡顿再一个个关掉 MOD 尝试,没啥太好的办法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值