如何在Linux上搭建饥荒服务器

最近租了一个云服务器,然后搭建了一个饥荒的服务端,在搜索的过程中,我发现网上资料基本上都是官方如何搭建服务端的文档的变种,但是大部分文章对于具体操作细节并没有做出相应解释,所以把搭建过程稍微做了汇总,并且对于各项操作的意义做一个相对具体的解释,本文针对的是完全没有接触过Linux系统相关的小白,大神请自行绕道,因为看本文只会浪费你的时间,希望对没有计算机基础但是自己搭建自己的服务端的人有一些帮助。

文中相关操作都是在Redhat系统下的操作,如果使用的是Ubuntu,操作步骤也是一样,直接将指令替换为Ubuntu中的指令就行了(可能有其他用的比较少的系统,相关管理指令可以自行查询)。
这里稍微说下如何查看自己的linux系统是哪一种,执行 cat /proc/version,如果是如下:
Linux version 3.10.0-1160.45.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Wed Oct 13 17:20:51 UTC 2021
说明是redhat系统,其他系统同理。
首先说下在Liunx系统搭建服务端需要的两部分文件:
1.支持饥荒服务端运行的依赖文件,所谓的依赖文件简单讲就是有了这些文件才能运行饥荒服务端,没有这些文件饥荒的服务端就无法在Linux上启动。
2.饥荒的服务端,这个不用多说,在服务器上启动服务端才能让自己或者其他人连接进服务器。

首先说下依赖文件部分:
如果是在网络上查询搭建的相关文章,首先接触到的第一条指令应该是这个,该指令的作用是将系统的包(理解为支持系统运行的文件就行)更新为最新版本。
这里说下,有的人会发现可能不使用这个指令对于搭建服务没有影响,这很正常,只要当前系统包能够支持软件运行就不会有问题,但一般情况下建议还是更新为好。
另外提一下另一件可能会让没接触过Linux系统的玩家疑惑的事情,部分教程里面代码是su yum update,此处是因为玩家在登录Linux系统时不是使用的root用户,需要在每条指令之前添加su来当前登录的用户临时有执行指令的权限,了解即可。
关于依赖具体如何使用在启动服务端是会讲解,但这里依然有一些需要注意的点;
glibc.i686中i686这个版本号如果不知道如何确定,可以输入yum list "glibc*",然后会出现如下内容,版本就根据实际在控制台显示出来的安装就可以了:


安装饥荒服务端文件部分:
1.安装steamcmd
新建文件夹后使用cd指令进入自己新建的文件夹下面,然后下载steamcmd包
ps:使用wget指令时可能出现提示说没找到相关指令的提示,需要使用yum指令安装wget,方式和安装其他包一样,具体如下
在steamcmd目录下执行wget指令后使用ls指令查看steamcmd_linux.tar.gz包是否正常下载下来了(下图是解压完成后的目录,红色的是下载下来的文件)

如果路径下面有如图红色文件,执行下一步解压操作
tar是解压指令xvzf几个字母是解压时的设定相关操作,有兴趣可以自己去查询,解压完成后使用ls目录下的文件就如上图所示。
2.执行steamcmd
成功启动后如下图所示

图中有一条警告Warning: failed to init SDL thread priority manager: SDL not found,这个是提示SDL初始化失败,如果出现这个警告不用管,SDL是与图形相关的,在linux下运行服务端不需要使用这个,直接往下操作。
3.下载饥荒服务端文件
执行app_update 343050 validate后正常情况会出现下载的提示,等下载执行完成后,按ctrl+c或者输入quit退出steam,然后如下使用cd /home/dstserver(或者你自己设定的目录)进入饥荒服务器下载的目录,然后使用ls检查是否正常下载,如下图文件都存在说明下载成功。

4.引用配置文件
一般来讲,在系统里面安装了配置文件就不需要专门去添加引用,但是饥荒有个地方很奇葩,引用的库名和源库名对不上,所以就得多这么一步。
这一步需要使用到依赖中所安装的两个包,当依赖安装后,可以进入/usr/lib目录下面使用ls查看libcurl.so.4文件是否存在,若存在则往下执行,不存在建议检查指令是否输入错误。
这一步的目的是将/usr/lib目录下面的libcurl.so.4文件引入/home/dstserver/bin/lib32目录下,这里有两种方式,一种是使用cp指令,直接将文件复制到lib32目录下,另外一种是使用ln指令,将文件链接到目标目录,但不管哪种方式,都要注意目标文件名称需要修改为libcurl-gnutls.so.4。关于link(ln)指令-s加和不加的区别不做展开,有兴趣的人建议自行搜索,这里只提示加了-s更好一些。
5.建立主世界和洞穴执行文件
进入 /home/dstserver/bin目录,这一步具体需要该目录下的dontstarve_dedicated_server_nullrenderer文件来实现,此处使用touch命令新建或者使用echo将字符串写入文件都可以,生成文件后不要忘记使用chmod指令授权让文件可执行,此处两种方式都写一下。
touch指令新建(如果是没有使用过linux系统的人,不推荐使用此方式,直接跳到下一种方式)
输入如上指令后会出现如下界面,没有Linux使用经验的人可能会一脸懵逼,这也是为什么说不推荐此方式。

打开文本编辑器后,按i使用insert将如下字符串填入Master_start.sh文本
./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /home/dstsave -conf_dir dst -cluster World1 -shard Master
同理运行vi caves_start.sh后使用insert将如下字符串填入caves_start.sh文本
./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /home/dstsave -conf_dir dst -cluster World1 -shard Caves
ehco指令生成文件(推荐)
同样,操作在/home/dstserver/bin目录下进行
ps:这里提一些不重要的题外话,可以直接跳过:
细心的人可能已经发现了,这个执行文件其实是可有可无的,只不过为了方便管理,所以才弄了这么个文件,其实也可以不生成文件,直接将字符串保存,启动的时候复制字符串运行;
饥荒服务器运行的核心文件其实就是dontstarve_dedicated_server_nullrenderer,我们将./dontstarve_dedicated_server_nullrenderer替换成/home/dstserver/bin/dontstarve_dedicated_server_nullrenderer无论将文件放在什么目录中都能起到一样的效果。
6.运行服务器
上面的工作已经将工作做完了90%,接下来只剩下如何顺利启动服务器了。
① 进入 /home/dstserver/bin目录
执行上述主世界启动文件后,软件会自动开始运行服务器文件,第一次应该会出现如下结果

会出现Your Server Will Not Start的错误信息,这个是因为没找到token文件,提示如上图红框中标识,不过这个问题等下再处理,现在按ctrl+c退出后继续执行洞穴启动文件。
不出意外会有一样的提示。

② 执行完两个文件后,首先确认存档文件夹有顺利生成,此处将启动服务的字符串拿出来单独分解:
./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /home/dstsave -conf_dir dst -cluster World1 -shard Master
此处重点在于标红的部分,就是我们生成存档的各级目录,具体的主世界存档路径就存在/home/dstsave/dst/World1/Master之下,洞穴世界同理,因为路径是由玩家自行决定的,喜欢折腾的人可以随意修改。
知道存档路径位置后就可以确认该目录是否正常生成。
进入该目录使用ls命令,查看该路径下的文件;

洞穴世界也是一样,只不过在/home/dstsave/dst/World1/Caves目录之下。

接下来确认/home/dstsave/dst/World1目录下文件,这一步不重要,想省事的人直接忽略

进行这一步的主要原因是确认执行文件未出错,如果目录正常生成,说明运行时能正常找到存档位置。
③ 新建自己的存档。
这一步网络上有很多教程,包括如果直接书写配置文件生成新世界,这里只说最简单的方式,在steam上本地生成存档后上传到Linux服务器上。
首先需要准备一个名为lrzsz的插件,这个是用来代替ftp让我们把本地的存档传到服务器端的工具,当然也可以直接使用ftp连接后传输文件,不过这个可以直接在ssh连接中使用,很方便,但是此工具只能在Xshell,secureCRT等工具上使用,使用时需要注意。
安装成功后我们就可以打开windows上的steam,新建一个服务器存档。

新建好后将自己想要放到服务器上的存档压缩好(一定要压缩,有同名文件时lrzsz无法自动覆盖),使用xshell进入/home/dstsave/dst目录,然后将压缩包拖到xshell(我使用的是xshell,其他工具请自行选择上传方式),如果你在本地压缩的格式是zip,但linux未安装unzip请使用yum install unzip指令安装unzip,此处以Cluster_1作为例子。
此处有个小细节需要注意,如果在压缩存档时,有包含外部的Cluster_1这个文件夹,则需要将World1直接删除后将存档解压到dst目录下,如果未包含文件夹,则需要将World1目录下子文件删除后将文件解压到World1目录下。
示例中的存档没有外包含的文件夹,所以我直接解压到了World1目录下。
此时存档已经准备好了,但是启动依然会报No auth token could be found.所以还需要最后一个步骤。
打开steam上的饥荒联机版,点击主界面左下角账号

点击游戏=>饥荒联机版的游戏服务器

复制长条黑框中的内容

回到linux服务器,进入目录/home/dstsave/dst/World1打开目录下的cluster_token.txt文件,将上步复制的token覆盖原来的内容(也可以本地新建cluster_token.txt文件了再放上去),此时已经可以进入/home/dstserver/bin目录下面启动服务器了,这里提供一种比较方便管理的启动方式
①安装screen
②使用screen -S [name]打开新的控制台,如下新建名字为Master的新窗口
在新窗口中启动./Master_start.sh,出现如下结果说明成功了

然后依次输入ctrl+A 和ctrl+D退出Master窗口,然后再次重复②新建窗口执行caves_start.sh,同样出现Sim paused提示则为启动成功
③使用screen -r [name]可以再次进入之前退出的窗口,具体screen指令这里不做仔细说明,直接百度有十分详细的介绍
到这里就可以回到游戏查看浏览游戏中是否有自己的服务器了,服务器名字和自己在创建游戏里面输入的一致



以上就是新建饥荒服务器的详细过程,说实话真没想到会写这么多字,自己都觉得已经详细到了可以说是啰嗦的地步了,不出意外应该是网络上最啰嗦的教程了,不知道是不是真的有闲的蛋疼的人看完😓
最后再啰嗦一个十分重要的事情,当饥荒客户端更新后记得执行第三步更新服务器上的饥荒文件,否则会在客户端上搜不到服务器存档。
关于添加mod的问题,建议去看其他人的教程,步骤十分简单,而且是真不想写了/(ㄒoㄒ)/~~