
继上一篇专栏讲解网页链接,这一篇专栏以阿里云服务器为例展示如何在Linux系统下搭建饥荒联机版服务器。希望大家可以通过这部分了解云服务器的配置及Linux系统下的一些基本命令的用途,进而也帮助到其它游戏云服务器的搭建!
感谢前辈留下的宝贵经验,本文的搭建用代码来自以下文章参考并做了少量整合及改动 https://dontstarve.fandom.com/wiki/Guides/Don%E2%80%99t_Starve_Together_Dedicated_Servershttp://blog.ttionya.com/article-1233.htmlhttps://www.vincehut.top/index.php/2020/03/14/%E9%87%8D%E5%86%99%E9%A5%A5%E8%8D%92%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA%E5%85%A8%E6%8C%87%E5%8D%97/
感谢雨飞君同舰长群小伙伴及因为Windows本地建服视频给予支持的饥荒同好们!
特别感谢在卡顿退散交流群(QQ: 327868780)发光发热的以下同好:

特别感谢一般通过型希望教徒近期的优秀二创,感谢投喂!

每次出女武神都靠大家投喂肉丸T T
特别感谢以下舰长小伙伴在多次测试中提供的支持

特别感谢以下大可爱的充电支持

感谢充电!
特别感谢以下眼光非常非常好的大可爱大宝贝儿的花式夸夸

感谢花式夸夸!
本专栏搭配视频一同食用,味道更佳,视频链接见置顶评论
本专栏搭配视频一同食用,味道更佳,视频链接见置顶评论
本专栏搭配视频一同食用,味道更佳,视频链接见置顶评论
注册阿里云分为国际版和大陆版两类,可以购买的服务器种类及网络节点选择相同。国际版的实名认证及偿付能力认证有些繁琐且不够完善,建议使用大陆版:https://cn.aliyun.com/
实名认证多种实名认证方式可选。由于我已经做过了支付宝的实名认证,所以直接选择了通过支付宝认证。
登录在默认登录界面通过支付宝扫码登录。有时会出现登录超时的现象,点选右边的 其他方式 → 支付宝 → 扫码 可以更快登入。
Cluster 文件夹及内部额外添加的配置文件,压缩成.zip格式方便之后上传(Cluster_1.zip)包括如下文件/文件夹:Master, Caves, adminlist.txt, cluster.ini, cluster_token.txt, whitelist.txtWindows系统下后缀名隐藏,显示如下图

Cluster文件夹内部示例(Windows系统,后缀名隐藏)
已添加好服务器模组ID代码块的文件dedicated_server_mods_setup.lua
* 对以上提到的任何文件有疑问请移步上一篇本地搭建服务器的视频参考搭建前准备和搭建过程两个部分(可以通过置顶评论空降)。
** 以上方案是为了直接在Linux系统中替换/增加文件,也可以参考视频讲解用vi命令直接在Linux系统中新建/编辑对应的文件。
创建云服务器(各项配置选择参考视频讲解)登录阿里云(大陆版)→ 控制台 → 云服务器ECS → 创建实例 → 选择云服规格,操作系统(Centos最新版为例)及网络线路配置 → 设置root登录密码 → 确定订单后服务器直接启动开始计费
远程连接打开终端,以root身份登录
升级操作系统,建立并切换到新用户
yum -y update #升级所有程式和系统内核
yum -y install glibc.i686 libstdc++.i686 screen libcurl.i686 #安装环境
useradd -m captain -p zuodengkaihei #建立新用户并设定密码
su captain #切换用户 (可选)稍微熟悉一下一部分Linux操作命令,方便灵活更改一些文件。
* 如果没有Linux命令行的操作经验,建议跟着视频试试下面的操作。
## 不清楚命令的作用或者可以加的选项时,可以在命令后面跟空格并加入--help 回车后即可看到帮助。
## Linux系统不存在还原文件的情况,当文件名字相同时会直接覆盖。删除(rm),移动(mv)等操作请谨慎!
## 为了方便区分文件和文件夹的操作,以下示例中,A和B均为文件,C为文件夹。
pwd #print working directory, 查看当前目录
cd ~ #change directory, 跳到当前用户的主目录/home/captain
mkdir ./C #make directory, 在当前目录(./)下新建文件夹C。 可以将./替换成任何已存在的路径
cd ./C #change directory, 移动到指定文件夹C, 可以将./替换成任何已存在的路径
cd ../ #返回上一层目录
ls ./ #list,展示当前目录的内容, ./可以省略
vi A #编辑文件A, 如果A不存在则会新建。需要区分命令模式(ESC然后:)和输入模式(i)。命令模式下wq(save and quit,保存并退出)及q!(不保存任何本次更改直接退出)
less A #浏览模式打开文件A,使用空格/下箭头来向下翻页/逐行移动,按q退出
cp A B #copy, 复制A并命名为B
cp A ./C #复制A到文件夹C中
mv A B #move, 把A重命名为B。如果已经有B文件,则原先的B文件会被A覆盖。无法找回!
mv B ./C #把A移动到文件夹C
zip -r C.zip ./C #压缩文件夹C的所有文件并生成C.zip
rm A #remove, 删除文件A
rm -r ./C #删除文件夹C
unzip C.zip #解压缩C.zip 安装SteamCMD以及Don't starve together dedicated server
mkdir ~/steamcmd #建立新文件夹
cd ~/steamcmd #进入新文件夹
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz #下载SteamCMD安装包
tar -zxvf steamcmd_linux.tar.gz #解压steamcmd安装包
./steamcmd.sh +login anonymous +force_install_dir ~/dst +app_update 343050 validate +quit #安装或更新Don't starve together dedicated server,343050是它的代号。这里指定了安装路径为~/dst * SteamCMD支持的服务器代码见:https://developer.valvesoftware.com/wiki/Dedicated_Servers_List
查看服务器依赖库并试运行
cd ~/dst/bin #进入到dedicated server的文件夹
ldd dontstarve_dedicated_server_nullrenderer #检查服务器启动程序的依赖库
./dontstarve_dedicated_server_nullrenderer #试运行服务器启动程序
#按以上流程进行会出现缺失libcurl-gnutls.so.4的报错,用以下代码修复
cp /usr/lib/libcurl.so.4 ~/dst/bin/lib32/libcurl-gnutls.so.4 对其他Linux操作系统可能出现的报错问题及解决方案,可以参考这里:http://blog.ttionya.com/article-1233.html
编写服务器启动脚本
cd ~/dst/bin/ #进入dedicated server文件夹
echo ./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Master > dst_overworld.sh #编写地上启动脚本
echo ./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Caves > dst_caves.sh #编写洞穴启动脚本 运行服务器启动脚本以生成配置文件夹,之后删除无用配置文件
sh dst_overworld.sh #运行地上启动脚本
## 还没有放入任何存档及配置文件,报错是正常的。使用Ctrl+C结束运行。
sh dst_caves.sh #运行洞穴启动脚本
## 还没有放入任何存档及配置文件,报错是正常的。使用Ctrl+C结束运行。
rm -rf ~/.klei/DoNotStarveTogether/MyDediServer/* #删除无用的配置文件 上传准备好的各个配置文件打开新文件管理 → 移动到~/.klei/DoNotStarveTogether/MyDediServer/ → 上传Cluster_1.zip 文件在文件管理的界面移动到~/dst/mods/ → 上传已经添加服务器模组ID的dedicated_server_mods_setup.lua文件返回终端,解压缩Cluster_1文件夹(代码如下)
cd ~/.klei/DoNotStarveTogether/MyDediServer/ #移动到需要存放世界配置文件的目标路径
unzip Cluster_1.zip #解压缩刚刚上传的Cluster_1.zip
mv ./Cluster_1/* ./ #将Cluster_1中的文件全部移出至 ./MyDediServer 目录下
rm -r ./Cluster_1 #删除空Cluster_1文件夹 进入对应服务器的阿里云远程连接,按以下代码操作启动Dedicated server.
su captain #切换用户
cd ~/dst/bin #进入存放服务器启动脚本的目录
screen -S world #建立一个新的窗口命名为 world
sh ./dst_overworld.sh #运行地上部分的服务器启动脚本 确定地上部分服务器正常启动后,同时按 Ctrl 和 A 键 + D 键,使world窗口脱离,程序进入后台运行。这样即使现在的终端被关闭也不会让服务器停止。
screen -S cave #建立一个新的窗口命名为 cave
sh ./dst_caves.sh #运行洞穴部分的服务器启动脚本 确定洞穴部分服务器正常启动后,同时按 Ctrl 和 A 键 + D 键,使cave窗口脱离,程序进入后台运行。这样即使现在的终端被关闭也不会让服务器停止。
到此可以关闭远程连接。
如果需要判断现在的配置是否够用,可以在玩家人数凑齐以后一段时间打开服务器监控窗口观察CPU和内存占用。注意不开多层世界的情况下CPU只有一个核被利用,最大占用比例应该在100%/CPU核数左右。另外注意睿频(自主超频技术)的情况最大占用率是会略高于前面计算的数值的。
su captain #切换用户
screen -r world #重新连接之前脱离的world窗口
c_shutdown() #结束地上部分的服务器运行
screen -S world -X quit #删除world窗口
screen -r cave #重新连接之前脱离的cave窗口
c_shutdown() #结束洞穴部分的服务器运行
screen -S cave -X quit #删除cave窗口 之后可以关闭终端,并停止服务器到节省模式(按量付费情况)
如果你想在现有的服务器里切换不同的存档,可以参考以下代码对现有的存档进行暂时的移出和备份,并把新档移入。
## 假设现在刚刚关闭饥荒服务器,~/.klei/DoNotStarveTogether/MyDediServer/ 目录下的文件就是刚刚结束的存档及配置文件。
## 按照如下代码移出这些存档及配置文件
cd ~/.klei/DoNotStarveTogether/MyDediServer/ #进入存放现在世界配置文件及存档的文件夹
mkdir Cluster_old #建立一个新文件夹用于存放存档
mv adminlist.txt ./Caves cluster.ini cluster_token.txt whitelist.txt ./Master ./Cluster_old #把现在的世界配置文件及存档都移入刚刚建立的Cluster_old文件夹内
zip -r ./Cluster_old.zip ./Cluster_old #把Cluster_old压缩成zip文件,然后可以通过打开文件管理把zip文件下载到本地进行备份。
## 通过打开文件管理上传想要切换的Cluster_new.zip 文件到~/.klei/DoNotStarveTogether/MyDediServer/目录
unzip Cluster_new.zip #解压缩
mv ./Cluster_new/* ./ #把世界配置文件及存档都移出到当前目录,即~/.klei/DoNotStarveTogether/MyDediServer/ Dedicated server这个工具也是会随着游戏更新而进行更新的。在本地搭建的情况里,只需要在Steam里对工具Don't starve together dedicated server 进行更新。
在Linux系统下对这个工具的更新,可以重新跑一次安装命令如下
su captain #切换用户
cd ~/steamcmd #进入存放安装程序的文件夹
./steamcmd.sh +login anonymous +force_install_dir ~/dst +app_update 343050 validate +quit #更新 dedicated server 其它云服务器搭建解析,实测反馈及优化思路
敬请关注后续专栏及视频投稿!
♥ 谢谢阅读,欢迎指摘,送你感恩的小心心 ♥