从零开始搭建饥荒云服务器

前言

环境: Ubuntu20.04 x86_64环境的云服务器
安装流程记录和问题解决

安装SteamCMD

官方SteamCMD说明

sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt-get install steamcmd

这里我们看到steamcmd是一个32位的程序

安装过程中会让我们确认一下license

按右方向键+回车
然后选择I AGREE 回车

终端运行

steamcmd

第一次启动会下载安装
然后会进入Steam终端,显示如下

Steam>


安装饥荒服务器

安装饥荒

// 指定安装位置, 安装到home下,最好用绝对路径 /home/<username>/DontStarveTogether_Server
force_install_dir ~/DontStarveTogether_Server
// steam匿名登录
login anonymous
// 下载安装, 343050是饥荒服务器的id号
app_update 343050 validate
// 退出
quit


我这里实际安装在了这个位置

~/DontStarveTogether_Server

要重装可以删掉目录,然后到steamcmd里重装

运行测试

到饥荒目录运行

cd ~/DontStarveTogether_Server/bin
./dontstarve_dedicated_server_nullrenderer

缺库修复

我这里报了一个缺库错误,是 curl 库的一个动态链接库

./dontstarve_dedicated_server_nullrenderer: error while loading shared libraries: libcurl-gnutls.so.4: cannot open shared object file: No such file or directory



看网上很多教程是说软链接可以解决
尝试了一下,Ubuntu20.04 x86_64默认有 curl
在这个路径

/usr/lib/x86_64-linux-gnu/libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so.4.6.0
/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.3
/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4
/usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4.6.0


但是,软链接后运行程序又报了库的架构不匹配的问题

32位的程序用不了64位的库

dontstarve_dedicated_server_nullrenderer: error while loading shared libraries: libcurl-gnutls.so.4: wrong ELF class: ELFCLASS64

让我们重新安装一下32位的curl

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libcurl4-gnutls-dev:i386


安装后的 curl 库,应该在这个路径可以找到

/usr/lib/i386-linux-gnu


这里已经可以直接运行了,不用软链接,程序找的到库的

cd ~/DontStarveTogether_Server/bin
./dontstarve_dedicated_server_nullrenderer

能跑起来就成功了,不用在意里面的配置

到这里基本环境就安装好了


创建服务器存档+安装Mod

打开本地饥荒联机版
创建一个多人世界,拷贝文件夹
Todo(@咖喱鱼蛋)


获取服务器token


Todo(@咖喱鱼蛋)

服务器端口开放


Todo(@咖喱鱼蛋)


创建运行脚本

本地创建一个start.sh文件

vim start.sh

然后拷贝下面的内容,scp拷贝到服务器home目录

scp ./start.sh {用户名}@{服务器IP}:/home/{用户名}

脚本内容按需修改

#!/bin/bash
# steamcmd文件夹目录, 如果是按上面的流程安装,是在~/.steam/steamcmd
steamcmd_dir="$HOME/.steam/steamcmd"
# 饥荒下载安装的目录
install_dir="$HOME/DontStarveTogether_Server"
# 存档名称
cluster_name="Cluster_1"
# klei服务器存档目录,应该是装饥荒的时候生成的
dontstarve_dir="$HOME/.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"

# 这里运行的是64位的, 如果要32位的,可以改一下,应该在bin下面
cd "$install_dir/bin64" || fail
run_shared=(./dontstarve_dedicated_server_nullrenderer_x64)

# 32位
# cd "$install_dir/bin" || fail
# run_shared=(./dontstarve_dedicated_server_nullrenderer)

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: /'

# 如果没有洞穴, 可以把Caves的那两行注释掉



运行

一般用nohup后台运行就可以了

nohup ./start.sh>start.log 2>&1 &
tail -f start.log


本机连接测试

搜索存档创建的名字
然后就可以看到了专用服务器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值