继上一篇专栏讲解本地Windows系统使用Don't starve together dedicated server搭建服务器,这一篇专栏以阿里云服务器为例展示如何在Linux系统下搭建饥荒联机版服务器。希望大家可以通过这部分了解云服务器的配置及Linux系统下的一些基本命令的用途,进而也帮助到其它游戏云服务器的搭建!
【最认真的致谢依旧放在第一位】
每次出女武神都靠大家投喂肉丸T T
感谢充电!
感谢花式夸夸!
【重要的事说三遍】
本专栏搭配视频一同食用,味道更佳,视频链接见置顶评论
本专栏搭配视频一同食用,味道更佳,视频链接见置顶评论
本专栏搭配视频一同食用,味道更佳,视频链接见置顶评论
【阿里云注册及登录事项】
【搭建前准备】
Cluster文件夹内部示例(Windows系统,后缀名隐藏)
* 对以上提到的任何文件有疑问请移步上一篇本地搭建服务器的视频参考搭建前准备和搭建过程两个部分(可以通过置顶评论空降)。
**以上方案是为了直接在Linux系统中替换/增加文件,也可以参考视频讲解用vi命令直接在Linux系统中新建/编辑对应的文件。
【搭建过程】
<pre data-lang="shell@shell@Shell" codecontent="yum -y update #升级所有程式和系统内核
yum -y install glibc.i686 libstdc++.i686 screen libcurl.i686 #安装环境
useradd -m captain -p zuodengkaihei #建立新用户并设定密码
su captain #切换用户" class=" language-shell">``
* 如果没有Linux命令行的操作经验,建议跟着视频试试下面的操作。
<pre data-lang="shell@shell@Shell" codecontent="## 不清楚命令的作用或者可以加的选项时,可以在命令后面跟空格并加入--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" class=" language-shell">``
<pre data-lang="shell@shell@Shell" codecontent="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" class=" language-shell">``
* SteamCMD支持的服务器代码见:
<pre data-lang="shell@shell@Shell" codecontent="cd ~/dst/bin #进入到dedicated server的文件夹
ldd dontstarve_dedicated_server_nullrenderer #检查服务器启动程序的依赖库
./dontstarve_dedicated_server_nullrenderer #试运行服务器启动程序" class=" language-shell">``
<pre data-lang="shell@shell@Shell" codecontent="#按以上流程进行会出现缺失libcurl-gnutls.so.4的报错,用以下代码修复
cp /usr/lib/libcurl.so.4 ~/dst/bin/lib32/libcurl-gnutls.so.4" class=" language-shell">``
对其他Linux操作系统可能出现的报错问题及解决方案,可以参考这里:
<pre data-lang="shell@shell@Shell" codecontent="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 #编写洞穴启动脚本" class=" language-shell">``
<pre data-lang="shell@shell@Shell" codecontent="sh dst_overworld.sh #运行地上启动脚本
还没有放入任何存档及配置文件,报错是正常的。使用Ctrl+C结束运行。
sh dst_caves.sh #运行洞穴启动脚本
还没有放入任何存档及配置文件,报错是正常的。使用Ctrl+C结束运行。
rm -rf ~/.klei/DoNotStarveTogether/MyDediServer/* #删除无用的配置文件" class=" language-shell">``
<pre data-lang="shell@shell@Shell" codecontent="cd ~/.klei/DoNotStarveTogether/MyDediServer/ #移动到需要存放世界配置文件的目标路径
unzip Cluster_1.zip #解压缩刚刚上传的Cluster_1.zip
mv ./Cluster_1/* ./ #将Cluster_1中的文件全部移出至 ./MyDediServer 目录下
rm -r ./Cluster_1 #删除空Cluster_1文件夹" class=" language-shell">``
【启动服务器】
进入对应服务器的阿里云远程连接,按以下代码操作启动Dedicated server.
<pre data-lang="shell@shell@Shell" codecontent="su captain #切换用户
cd ~/dst/bin #进入存放服务器启动脚本的目录
screen -S world #建立一个新的窗口命名为 world
sh ./dst_overworld.sh #运行地上部分的服务器启动脚本" class=" language-shell">``
确定地上部分服务器正常启动后,同时按 Ctrl 和 A 键 + D 键,使world窗口脱离,程序进入后台运行。这样即使现在的终端被关闭也不会让服务器停止。
<pre data-lang="shell@shell@Shell" codecontent="screen -S cave #建立一个新的窗口命名为 cave
sh ./dst_caves.sh #运行洞穴部分的服务器启动脚本" class=" language-shell">``
确定洞穴部分服务器正常启动后,同时按 Ctrl 和 A 键 + D 键,使cave窗口脱离,程序进入后台运行。这样即使现在的终端被关闭也不会让服务器停止。
到此可以关闭远程连接。
如果需要判断现在的配置是否够用,可以在玩家人数凑齐以后一段时间打开服务器监控窗口观察CPU和内存占用。注意不开多层世界的情况下CPU只有一个核被利用,最大占用比例应该在100%/CPU核数左右。另外注意睿频(自主超频技术)的情况最大占用率是会略高于前面计算的数值的。
【关闭服务器】
<pre data-lang="shell@shell@Shell" codecontent="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窗口" class=" language-shell">``
之后可以关闭终端,并停止服务器到节省模式(按量付费情况)
【现有存档备份及多个存档切换】
如果你想在现有的服务器里切换不同的存档,可以参考以下代码对现有的存档进行暂时的移出和备份,并把新档移入。
<pre data-lang="shell@shell@Shell" codecontent="## 假设现在刚刚关闭饥荒服务器,~/.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/" class=" language-shell">``
【Server更新】
Dedicated server这个工具也是会随着游戏更新而进行更新的。在本地搭建的情况里,只需要在Steam里对工具Don't starve together dedicated server 进行更新。
在Linux系统下对这个工具的更新,可以重新跑一次安装命令如下
<pre data-lang="shell@shell@Shell" codecontent="su captain #切换用户
cd ~/steamcmd #进入存放安装程序的文件夹
./steamcmd.sh +login anonymous +force_install_dir ~/dst +app_update 343050 validate +quit #更新 dedicated server" class=" language-shell">``
其它云服务器搭建解析,实测反馈及优化思路