# Linux搭建饥荒专用服务器 ## 1、安装环境依赖 Ubuntu: ```shell sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386 lib32gcc1 ``` CentOS: ```shell sudo yum update sudo yum -y install glibc.i686 libstdc++.i686 libcurl4-gnutls-dev.i686 libcurl.i686 ``` ## 2、安装SteamCMD - 新建目录 ```shell mkdir /home/SteamCMD/steamcmd ``` - 下载 SteamCMD 安装文件并解压 ```shell #进入刚才新建的目录 cd /home/SteamCMD/steamcmd #下载SteamCMD wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz #解压该文件 tar -zxvf steamcmd_linux.tar.gz ``` ## 3、安装饥荒服务端 - 启动SteamCMD ```shell ./steamcmd.sh ```  - 接下来再接着执行以下代码代码: ```shell #以公共账户登录steam login anonymous #指定游戏文件的安装目录 force_install_dir /home/SteamCMD/dstserver #安装饥荒服务端 app_update 343050 validate ``` 请耐心等待安装完成,完成后输入`quit`退出SteamCMD  - 解决lib缺失 linux下饥荒的服务器似乎需要的组件跟现在的组件产生了名字上的差错 导致启动服务器会显示缺少关键的组件libcurl-gnutls.so.4,因此需要执行下面的命令来解决: ```shell #进入lib32目录 cd /home/SteamCMD/dstserver/bin/lib32/ #创建lib链接 ln -s /usr/lib/libcurl.so.4 libcurl-gnutls.so.4 #轻量级应用服务器宝塔面板专用 #ln -s /usr/local/curl/lib/libcurl.so.4 libcurl-gnutls.so.4 ``` ## 4、饥荒服务端配置 此处利用客户端本地图形界面创建并配置世界,创建完成后将配置文件上传至服务端 - 房间设置  - 地上世界配置  - 地下世界配置  - mod配置  --- 本地创建成功够进入打开游戏数据目录  刚才我们创建的世界在第3的位置,所以对应的是Cluster_3这个目录  打开Cluster_3  ## 5、分离地上、地下世界 由于服务器性能原因,需要将地上与地下世界分开搭建 - 修改房间配置文件中的以下内容 ```shell [SHARD] shard_enabled = true bind_ip = 0.0.0.0 master_ip = 你的主服务器的 IP (地上) ``` 然后将文件夹命名为地上,再复制此文件夹,命名为地下。 最后地上删除 Caves 目录,地下删除 Master 目录,分开搭建并启动。 ## 6、Mod 模组配置 Mod 的配置文件已经在提取到的文件夹中了,但是位于服务器的饥荒客户端还没有下载这些文件,所以我们需要进入到服务器的的饥荒安装目录,修改该目录下的 dedicated_server_mods_setup.lua 文件: ```shell cd ~/dontstarvetogether_dedicated_server/mods vi dedicated_server_mods_setup.lua ``` 以下是我的mod配置 ```lua ---在该文件中添加类似这样的内容,这串 ID 是 Mod 文件在 Steam 中的 ID ---可以在提取到的配置文件的 Master/modoverrides.lua 中找到 ---然后添加到本文件中,一行一个 ---ServerModSetup("362175979") ServerModSetup("1301033176") ServerModSetup("362175979") ServerModSetup("378160973") ``` 到此服务器基本配置都已经完成,我们可以将文件上传至服务器了。(上传位置/root/.klei/DoNotStarveTogether) ## 7、启动饥荒服务器 - 创建启动脚本 ```shell cd /home/Steam && vi startDST.sh ``` 脚本内容如下: ```shell #!/bin/bash steamcmd_dir="$HOME/steamcmd" install_dir="$HOME/dontstarvetogether_dedicated_server" cluster_name="MyDediServer" 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" 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 Caves | sed 's/^/Caves: /' & "${run_shared[@]}" -shard Master | sed 's/^/Master: /' ``` 给启动脚本添加权限: ```shell chmod u+x ./startDST.sh ``` - 启动脚本文件 `nohup ./startDST.sh &` 最后修改:2020 年 03 月 14 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏