参考文章1:https://www.feathersh1ne.com/archives/58/#Hey!bro.youshouldfindsomethingtoeatbeforenight.
参考文章2:https://chaolucky.com/blog/09/02-663.html
参考文章3:http://blog.ttionya.com/article-1235.html
参考文章4:https://www.baymin.online/2019/04/20/linux%E7%B3%BB%E7%BB%9F%E4%B8%8B%E6%90%AD%E5%BB%BA%E9%A5%A5%E8%8D%92%E4%B8%93%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88%E9%98%BF%E9%87%8C%E4%BA%91%E4%B8%BB%E6%9C%BA%EF%BC%89/
近期又捡起了饥荒(主要可以带妹子一起玩),之前在本地电脑上搭建过独立服务器,但是效果不是很好,妹子电脑会时不时卡,所以这次趁着双十一阿里云搞活动,买了个3年的低配服务器,然后准备在上面搭建一个饥荒独立服务器。
首先现在网上找相关的教程,教程很多,但是比较杂,很多教程都只讲了一半,看起来想当难受,此篇文章就做了一个总结,讲述从零搭建饥荒独立服务器并且配置好mod。
你要有一个云服务器,并且是Centos7以上的Linux系统,然后设置好安全组(放开10999和10998的端口,当然你也可以放开所有端口(不建议),只不过服务器安全性没那么高),如果你是小白,不知道怎么设置安全组,可以查看“参考文章4”的前半部分,这里面有很详细的教程,这里就不再重复。
如果你还没有云服务器,我汇聚了阿里云和腾讯云最新的活动,可以点击如下链接购买
阿里云服务器购买链接
腾讯云服务器购买链接
首先使用工具(比如xshell)连接上服务器,然后一步一步执行如下代码:
(一条一条复制到服务器执行,Linux只要不报错就是成功)
sudo yum update
sudo yum -y install glibc.i686 libstdc++.i686 libcurl4-gnutls-dev.i686 libcurl.i686 screen
(一条一条复制到服务器执行,Linux只要不报错就是成功)
cd /home && mkdir steamcmd && cd steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
这一步是在Linux下创建/home/steamcmd目录,并远程下载steamcmd的安装包,并解压,解压完目录下会有一个steamcmd.sh文件,这时候执行这个文件就可以启动SteamCMD,执行代码如下:
./steamcmd.sh
当你看到上图这种以 Steam> 开头的就代表进入了SteamCMD了,接下来再接着执行以下代码代码:
login anonymous
force_install_dir /home/dstserver
app_update 343050 validate
这一步是下载饥荒服务器到/home/dstserver目录下,执行完代码后服务器会自己下载,等待下载完后输入quit或者 (ctrl + c) 退出SteamCMD,至此服务器已经下载好了,接下来就是配置服务器。
首先解决最重要的问题,linux下饥荒的服务器似乎需要的组件跟现在的组件产生了名字上的差错
导致启动服务器会显示缺少关键的组件libcurl-gnutls.so.4,因此需要执行下面的命令来解决:
ln -s /usr/lib/libcurl.so.4 /home/dstserver/bin/lib32/libcurl-gnutls.so.4
然后接着执行:
cd /home/dstserver/bin
echo "./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /home/dstsave -conf_dir dst -cluster World1 -shard Master" > master_start.sh
echo "./dontstarve_dedicated_server_nullrenderer -console -persistent_storage_root /home/dstsave -conf_dir dst -cluster World1 -shard Caves" > cave_start.sh
chmod +x master_start.sh cave_start.sh
输入 ./master_start.sh 启动主世界服务器。
当看到上图标明服务器启动但还未配置所以显示未正常启动。
但这是成功的标志,之后按下Ctrl C正常关闭服务器。
同样的输入 ./cave_start.sh 启动洞穴服务器并正常关闭。
经过上述服务器初次启动,在 /home/dstsave/dst/World1/ 文件夹下就会自动生成默认的配置文件,这个配置文件就是我们饥荒服务器的配置文件了,记住这个地址哟,接下来有两种方式,一种是自己修改配置,这种要求比较高,另一种就是现在自己电脑上创建一个服务器,然后将配置文件复制到Linux服务器上,推荐使用第二种,简单,准确,这里也只描述第二种
在自己电脑上先创建一个新的服务器,并设置好你的房间名、密码、地洞、配置好服务器mod,然后点击创建,等房间创建好到选人界面,就可以退出了,比如下图的中国共产主义接班人房间。
第一步创建好房间后,返回服务器搜索页面,点击右下角的“游戏数据”,就会打开本地房间的文件目录
这里面Cluster_1至Cluster_5就代表联机版的5个房间,按顺序一一对应,比如我创建的“中国共产主义接班人”在第五个,那就是Cluster_5文件夹,双击打开Cluster_5,文件目录如下:
将Cluster_5里面的所有文件全部复制到Linux服务器下的 /home/dstsave/dst/World1/ 目录下(可以使用FileZilla工具)。
首先在刚刚看本地文件目录的那里点击“账户信息”
跳转至Klei页面,点击查看我的游戏
再点击右上角Don’t Strave Together Servers
然后拉倒最下面,输入“友好的名字(就是你这个token的名字,仅仅作为一个标识用)”,并点击“添加新的服务器”,这个时候就可以看到生成的token了
复制这个token,然后粘贴到服务器上面的cluster_token.txt文件里(你可以在Linux里面使用vim编辑,如果你不懂vim命令,可以在自己电脑上创建一个名叫“cluster_token.txt”的空文本,然后将token粘贴进去,保存后再通过FileZilla等FTP软件复制到Linux下)
先启动主地图服务器,输入如下命令:
cd /home/dstserver/bin
screen -S master
./master_start.sh
如果没报错并且看到Simple pause就代表启动成功,按下Ctrl+A然后再按下Ctrl+D就可以让服务后台运行,并回到原来的控制台
同样的方式启动洞穴
screen -S caves
./cave_start.sh
如果没报错并且看到Simple pause就代表启动成功,按下Ctrl+A然后再按下Ctrl+D就可以让服务后台运行,并回到原来的控制台
这时可以通过以下命令来查看改服务是否启动
netstat -nlp |grep :10999
netstat -nlp |grep :10998
10999为主服务器的端口,10998为洞穴的端口,如果两个都显示值,则表明启动成功,如下图。
如果你要关闭服务器,直接kill 对应的端口号就行了,比如:
kill -9 7718
kill -9 7766
这时候你本地应该就能搜到你的服务器了
如果你已经到了这一步,你进房间后会发现没有服务器mod,你会好奇,当时本地创建房间的时候明明配置了服务器mod的呀,怎么移植到Linux下就没有了呢?其实你还有个地方没有配置
在我们开始的房间文件里有两个文件夹,一个是“Master”和“Caves”,这两个分别代表主地图和洞穴目录,他们下面的文件都是一样的,以“Master”为例
这里面的modoverrides.lua就是我们之前房间配置好的mod,因为这个文件是创建房间自动生成的,没有任何问题,在这里写是为了告诉你这个文件的作用,并且记住这个文件,等下要用到。
回到我们之前服务器的目录,下面有一个mods文件夹,进入这个文件夹
cd /home/dstserver/mods
这个时候你会在里面发现有一个dedicated_server_mods_setup.lua文件,里面一堆英文而且全都注释的,我们之所以没有mod是因为这个文件没有引入并下载mod,所以我们编辑这个文件,同样你可以在Linux里面使用vim编辑,如果你不懂vim命令,可以在自己电脑上创建一个名叫“dedicated_server_mods_setup.lua”的空文本,然后将如下的代码粘贴进去,保存后再通过FileZilla等FTP软件复制到Linux下)
--There are two functions that will install mods, ServerModSetup and ServerModCollectionSetup. Put the calls to the functions in this file and they will be executed on boot.
--ServerModSetup takes a string of a specific mod's Workshop id. It will download and install the mod to your mod directory on boot.
--The Workshop id can be found at the end of the url to the mod's Workshop page.
--Example: http://steamcommunity.com/sharedfiles/filedetails/?id=350811795
--ServerModSetup("350811795")
--ServerModCollectionSetup takes a string of a specific mod's Workshop id. It will download all the mods in the collection and install them to the mod directory on boot.
--The Workshop id can be found at the end of the url to the collection's Workshop page.
--Example: http://steamcommunity.com/sharedfiles/filedetails/?id=379114180
--ServerModCollectionSetup("379114180")
ServerModSetup("1216718131")
ServerModSetup("1418746242")
ServerModSetup("1595631294")
ServerModSetup("347079953")
ServerModSetup("362175979")
ServerModSetup("367546858")
ServerModSetup("375850593")
ServerModSetup("378160973")
ServerModSetup("666155465")
ServerModSetup("856487758")
--ServerModCollectionSetup("id")
其中ServerModSetup(“1216718131”)就是引入mod,括号里面的数字就是mod的id,还记得上一步要你记住的那个modoverrides.lua文件吗?打开那个文件,如下:
拿第一个为例
["workshop-1216718131"]={
["configuration_options"]={ ["clean"]=true, ["lang"]=true, ["stack"]=true },
["enabled"]=true
}
[“workshop-1216718131”]里面的这一串数字就是mod的id,所以你将modoverrides.lua文件里面所有的workshop对应的数字(也就是你配置的mod)全部复制到dedicated_server_mods_setup.lua 文件里,一个mod对应一条ServerModSetup(“1216718131”) ,修改好后再重启服务器,mod就配置好了。
首先准备好要做管理员的好友的KLEI用户ID,怎么看好友的KLEI用户ID?往下看
打开游戏,点击账户信息
然后进入之前的 /home/dstsave/dst/World1目录,也就是第三步最后面cluster_token.txt存放的目录,使用vim命令(没有vim的可以用vi命令)创建一个名叫“adminlist.txt”的文件
cd /home/dstsave/dst/World1/
vim adminlist.txt
按 i 开启编辑(开启编辑后下面会显示 – INSERT –),将好友的KLEI用户ID复制到adminlist.txt文件里,然后按一下esc退出编辑(下面的 – INSERT – 会消失),再按 :wq保存文件。如果要加两位管理员,则换一行输入第二位好友的 KLEI用户ID,一行只能放一个好友的 KLEI用户ID,房间创建者(也就是第三步创建token的那位用户)默认为管理员,不需要再在 adminlist.txt里面添加
至此服务器就搭建完成了,尽情的跟好朋友玩耍吧。
我在启动服务器的时候遇到了一个坑,就是主地图服务器启动没有问题,但是洞穴服务器一直启动不了,提示我端口被占用,我一一去查看了主地图服务器(Master文件夹)和洞穴服务器(Caves文件夹)的配置,也就是文件夹下的server.ini,发现主服务器(Master文件夹)下的server.ini 在复制过来后丢失了配置,没有配置端口号,然后又重新将本地服务器的server.ini 复制过去,就可以了。如果你们想详细了解每个配置对应的意思,可以参考饥荒联机独立服务器搭建教程(三):配置篇,讲的非常详细。
今天饥荒更新了,发现一个大坑!!!
之前创建的服务器竟然搜索不到了!!!游戏更新前还可以搜到,退出去更新了游戏再进来就搜不到了,经过各种搜索,终于在一篇帖子的一个小小的回复里找到了,原来游戏客户端更新了,服务器没更新就会出现版本不一致,从而导致搜索不到服务器,这个时候我们需要去把服务器也更新一遍,怎么更新呢?其实就是安装过程中第二大步的第一小步。
这一步是在Linux下创建/home/steamcmd目录,并远程下载steamcmd的安装包,并解压,解压完目录下会有一个steamcmd.sh文件,这时候执行这个文件就可以启动SteamCMD,执行代码如下:
首先进入之前的steamcmd的安装目录,我的是/home/steamcmd,然后启动steamcmd
./steamcmd.sh
当你看到上图这种以 Steam> 开头的就代表进入了SteamCMD了,接下来再接着执行以下代码代码:
login anonymous
force_install_dir /home/dstserver (这里的/home/dstserver要改为你们自己的服务器路径)
app_update 343050 validate
这时候服务器就更新完了,然后再去重启服务器,你会发现你又可以搜到自己的独立服务器了。