Linux/Centos7搭建饑荒服務器教程

參考文章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”的前半部分,這裏面有很詳細的教程,這裏就不再重複。

如果你還沒有云服務器,可以點擊如下鏈接購買
阿里雲服務器購買鏈接
騰訊雲服務器購買鏈接

第二步(此步驟完全照搬“參考文章1”)

首先使用工具(比如xshell)連接上服務器,然後一步一步執行如下代碼:
(一條一條複製到服務器執行,Linux只要不報錯就是成功)

1. 安裝服務器的基本條件

sudo yum update	

sudo yum -y install glibc.i686 libstdc++.i686 libcurl4-gnutls-dev.i686 libcurl.i686 screen

2. 安裝SteamCMD

(一條一條複製到服務器執行,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服務器上,推薦使用第二種,簡單,準確,這裏也只描述第二種

第三步 創建服務器並啓動

1. 本地創建房間

在自己電腦上先創建一個新的服務器,並設置好你的房間名、密碼、地洞、配置好服務器mod,然後點擊創建,等房間創建好到選人界面,就可以退出了,比如下圖的中國共產主義接班人房間。
在這裏插入圖片描述

2. 找到本地房間的文件路徑,並複製到Linux服務器

第一步創建好房間後,返回服務器搜索頁面,點擊右下角的“遊戲數據”,就會打開本地房間的文件目錄
在這裏插入圖片描述
在這裏插入圖片描述
這裏面Cluster_1至Cluster_5就代表聯機版的5個房間,按順序一一對應,比如我創建的“中國共產主義接班人”在第五個,那就是Cluster_5文件夾,雙擊打開Cluster_5,文件目錄如下:
在這裏插入圖片描述
將Cluster_5裏面的所有文件全部複製到Linux服務器下的 /home/dstsave/dst/World1/ 目錄下(可以使用FileZilla工具)。

3. 獲取服務器token並粘貼到Linux服務器下

首先在剛剛看本地文件目錄的那裏點擊“賬戶信息
在這裏插入圖片描述
跳轉至Klei頁面,點擊查看我的遊戲
在這裏插入圖片描述
再點擊右上角Don’t Strave Together Servers
在這裏插入圖片描述
然後拉倒最下面,輸入“友好的名字(就是你這個token的名字,僅僅作爲一個標識用)”,並點擊“添加新的服務器”,這個時候就可以看到生成的token了
在這裏插入圖片描述
複製這個token,然後粘貼到服務器上面的cluster_token.txt文件裏(你可以在Linux裏面使用vim編輯,如果你不懂vim命令,可以在自己電腦上創建一個名叫“cluster_token.txt”的空文本,然後將token粘貼進去,保存後再通過FileZilla等FTP軟件複製到Linux下)

4. 啓動服務器

先啓動主地圖服務器,輸入如下命令:

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 7718

kill 7766

這時候你本地應該就能搜到你的服務器了

在這裏插入圖片描述

第四步 配置mod

如果你已經到了這一步,你進房間後會發現沒有服務器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就配置好了。

至此服務器就搭建完成了,盡情的跟好朋友玩耍吧。

注意:遇到的坑

我在啓動服務器的時候遇到了一個坑,就是主地圖服務器啓動沒有問題,但是洞穴服務器一直啓動不了,提示我端口被佔用,我一一去查看了主地圖服務器(Master文件夾)和洞穴服務器(Caves文件夾)的配置,也就是文件夾下的server.ini,發現主服務器(Master文件夾)下的server.ini 在複製過來後丟失了配置,沒有配置端口號,然後又重新將本地服務器的server.ini 複製過去,就可以了。如果你們想詳細瞭解每個配置對應的意思,可以參考饑荒聯機獨立服務器搭建教程(三):配置篇,講的非常詳細。

2019/11/23補充:饑荒更新後搜索不到原來的服務器

今天饑荒更新了,發現一個大坑!!!
之前創建的服務器竟然搜索不到了!!!遊戲更新前還可以搜到,退出去更新了遊戲再進來就搜不到了,經過各種搜索,終於在一篇帖子的一個小小的回覆裏找到了,原來遊戲客戶端更新了,服務器沒更新就會出現版本不一致,從而導致搜索不到服務器,這個時候我們需要去把服務器也更新一遍,怎麼更新呢?其實就是安裝過程中第二大步的第一小步。
這一步是在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

這時候服務器就更新完了,然後再去重啓服務器,你會發現你又可以搜到自己的獨立服務器了。

發佈了37 篇原創文章 · 獲贊 54 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章