centos7服務器搭建7日殺(7 days to die) 服務器, 配置,存檔,遷移方法 (踩坑總結)


 

最近搞了軟路由, 不搞點事情不舒服. 正好周末和朋友玩7日殺, 搭個服務器玩玩.

 

網絡環境准備.

1. 公網ip的機器

or 

2. 自家網絡, 找電信要了公網ip && 光貓使用橋接由路由撥號 && 路由器需要支持ddns && 路由器支持端口映射

 

機器

一個己喜歡的linux發行版(本記錄使用centos7為例)

 

安裝過程:

1. 安裝steamlink所需要的lib包 

yum install glibc.i686 libstdc++.i686 -y

  

2. 選一個steamlink的安裝目錄, 這里我裝到 /home/ ,下載並解壓

cd /home/ && wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar xf steamcmd_linux.tar.gz
cd steamcmd/

  

3. 登錄steamlink

./steamcmd.sh

登錄賬號前先設置7日殺安裝目錄, 這里我直接裝在當前目錄的 7d2d 新目錄(/home/steamcmd/7d2d)
 
        
force_install_dir ./7d2d
 
        
login 你的steam賬號
輸入密碼和令牌登錄成功

4. 下載游戲

app_update 294420

  

5. 編輯服務器信息

進入7日殺程序目錄 cd 7d2d
編輯服務器配置
vim serverconfig.xml

這里重點關注幾個字段:

ServerName 你服務器在公網顯示的名字

ServerPassword 連接密碼

ServerPort 服務器端口, 注意!!! 這個端口填的是tcp端口,假設是默認的26900. 但七日殺同時還需要用到這個端口號+3范圍內的udp端口(我這udp監聽的是26902), 配置文件這里只填tcp的端口號就好

ServerVisibility 服務器可見性 2公開, 1朋友可見(但服務器沒有朋友,所以和0效果一樣), 0不列出

TelnetEnabled telnet開關,強烈建議開着方便調試連通性

GameWorld 這里填的值 注意!!! 如果是隨機地圖就填 RWG , 如果不是隨機地圖而是系統預設好的,則使用系統預設地圖名 ,名字就是7日殺安裝目錄/Data/Worlds 里的地圖名

WorldGenSeed 地圖生成種子 注意!!! 這里有坑 如果是從外部遷移存檔並且使用的是隨機生成的地圖, 這個種子必須和創建時一致. 因為他是通過這個種子和地圖大小來計算出地圖名的, 計算出的地圖名的結果需要和你遷移過來的生成地圖一致(關於遷移, 下面會說)

WorldGenSize 地圖大小 2048的倍數, 最大在16384以內,對應到游戲創建時的4km-14km 注意!!! 如果是從外部遷移存檔並且使用的是隨機生成的地圖, 這個種子必須和創建時一致,原因同上(關於遷移, 下面會說)

GameName 游戲名, 如果是遷移的, 也必須一致(
關於遷移, 下面會說)

其他配置根據自己喜好參考官方文檔修改 https://developer.valvesoftware.com/wiki/7_Days_to_Die_Dedicated_Server

6. 啟動服務器

   啟動服務器, 因為 startserver.sh 會阻塞當前ssh窗口, 建議使用 nohup 和&結合, 新建一個腳本 startup.sh專門用來啟動服務器,把日志輸出到文件里.這樣就可以隨意關閉控制台了

  vim startup.sh

   

#!/bin/sh

nohup ./startserver.sh -configfile=serverconfig.xml > stdout.log &

  

  保存退出, 設置運行權限

chmod 777 startup.sh

  啟動服務器

./startup.sh 

  

top 一下看看7DaysToDieServe 進程有沒有開始在努力跑, 如果是那就正確了.

tailf stdout.log 可以觀察服務器日志輸出.

關閉服務器進程可執行

pkill 7Days

 

看服務器是否正確的監聽了tcp和udp端口

netstat -anop | grep 7Day

 

如果端口沒改過是默認的26900, 那么啟動好后執行這個命令可以看到tcp端口監聽,同時還會看到監聽 26902 udp端口

 

測試tcp端口連通性

telnet 127.0.0.1 26900

  

如果通,會看到下面消息

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
GameType:7DTD;GameMode:Survival;GameName:哎呀喲;ServerDescription:XXXXX 專用;ServerWebsiteURL:;IP:XXXXXXX;LevelName:Mahude Valley;GameHost.........

  

測試udp端口連通性

nc -vuz 127.0.0.1 26902

  

如果通,會看到下面消息

Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:26902.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 1 bytes received in 2.03 seconds.

  

7. 外網處理

  如果是在外網ip的機器上, 直接設置防火牆和iptables開放26900-26903端口即可

  如果是自家網絡, 需要在路由器上設置ddns, 路由器上設置端口映射 外網的 tcp 26900, udp 26901-26903 映射到7日殺所在服上的相同端口, 這部分不同路由器操作不一樣, 不記錄步驟了. 自家網絡不建議設置DMZ主機! 整台機全部端口暴露到公網會有安全風險.

  連通性測試, 和第6步后面一樣, 只是把127.0.0.1 換成 公網ip或是你設置的ddns域名

 

8. 存檔和目錄結構

    win存檔位置  C:\Users\用戶名\AppData\Roaming\7DaysToDie\Saves\[GameWrold]\[GameName] 

    win隨機生成地圖位置 C:\Users\用戶名\AppData\Roaming\7DaysToDie\GeneratedWorlds\[GameWrold]

    linux存檔位置  /root/.local/share/7DaysToDie/Saves/[GameWrold]/[GameName] 

    linux隨機生成地圖位置 /root/.local/share/7DaysToDie/GeneratedWorlds/[GameWrold]

 

   注意!!! 

  GameWrold  如果是預設地圖, 則是游戲目錄里Data/Worlds 對應的名字比如PREGEN02,PREGEN6k ,

        如果是隨機生成地圖則是生成的地圖名字, 比如Voluya Territory, Mahude Valley 這種名字

9. 遷移: 

如果是預設地圖, 直接遷移 save\[GameWrold]\[GameName]  到服務器的  save\[GameWrold]\[GameName] , 然后編輯服務器serverconfig.xml的 GameWorld和GameName和目錄對應即可, 

如果是隨機生成地圖, 需要遷移GeneratedWorlds\[GameWrold] 和 save\[GameWrold]\[GameName] 到服務器對應目錄, 然后編輯服務器serverconfig.xml的 GameWorld 改為RWG, GameName填目錄對應的GameName, WorldGenSeed和WorldGenSize需要和創建時一致. 改完后啟動時注意觀察日志輸出, 如果看到 GamePref.GameWorld 這行和你遷移的GameWorld名字一樣說明就對了, 說明服務器計算出的地圖名和你遷移的GameWorld名稱一致,就會使用你已經創建好的隨機生成地圖和存檔, 這里有點坑不知道為什么這么設計..

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM