linux雲服務搭建七日殺伺服器

Shiraka發表於2020-11-19

準備工作

首先你需要擁有一個雲伺服器,內地的主流雲服務平臺有阿里雲、騰訊雲等,如果你在海外可以選擇AWS、google雲服務等。七日殺服務端的建議最低配置是2core 4G,記憶體8G及以上最佳。考慮到目前國內雲服務的價格比較,在校大學生可以考慮使用學生優惠的1core 2G套餐,配置swap後勉強夠用。

雲伺服器的主機名一般是一串很長的亂碼,例如顯示在使用者終端上很影響使用。比如我在修改前是:

[root@bS2&Lb%n21fAS7D ~]$

為了方便以後使用,建議大家先修改它。

# 這些操作要在root中進行。
hostnamectl set-hostname centos7 #可以改成你喜歡的主機名,別太長
hostname	# 檢視下
centos7
vim /etc/hosts	# 編輯下hosts檔案, 給127.0.0.1新增hostname
cat /etc/hosts	# 檢查

修改之後像這樣:

[root@centos7 ~]$

舒服多了!

1.設定swap

這些操作都在root中進行。

linux系統的swap空間類似windows系統的虛擬記憶體。如果你的雲伺服器記憶體小於4G,比如只有2G記憶體,那你就必須設定一個swap空間,否則啟動伺服器時會因為記憶體不足導致程式killed。

使用swapon命令可以檢查系統是否已經配置過swap,雲伺服器一般都沒有提前設定swap。

swapon -s # 如果該命令沒有返回出結果,則代表該系統尚未配置過swap。
df -h	# 檢查可用的儲存空間

如果沒有,按如下步驟建立Swap檔案。一般建議swap大小設定為自己實體記憶體相同或兩倍。我這裡設定了4G。

# 這些操作要在root中進行。
sudo fallocate -l 4G /swapfile	# 請根據自己情況修改swap大小
ls -lh /swapfile
sudo chmod 600 /swapfile	# 更改swap檔案的許可權,否則會有很大的安全隱患
ls -lh /swapfile	# 然後檢查是否設定完成

啟用swap檔案

sudo mkswap /swapfile
sudo swapon /swapfile
# 確認一下設定是否已經生效
swapon -s
free -m

前面設定的swap會在重啟後失效,通過修改fstab讓配置永久生效。

sudo vim /etc/fstab

i 進入輸入模式,在檔案末尾加入下面這行內容。

/swapfile   swap    swap    sw  0   0

按esc退出輸入模式,輸入 :wq 儲存退出。(對vim操作不熟悉的,可以搜尋“vim指令”進一步學習)

swappiness引數決定了系統將資料從記憶體交換到swap空間的頻率。該數值越接近於0,系統越傾向於不進行swap,最大限度使用實體記憶體。數值越接近100,越傾向於使用swap,而過多的使用swap可能導致伺服器執行效率緩慢。ubuntu系統的預設推薦值是60,這裡我為了保證伺服器執行效率,建議設定為10。

cat /proc/sys/vm/swappiness	# 檢視當前的swappiness
sudo sysctl vm.swappiness=10	#修改swappiness為10

編輯sysctl配置檔案,使其永久生效

sudo vim /etc/sysctl.conf

i 進入輸入模式,將以下內容貼上到檔案末尾:

vm.swappiness = 10

按esc退出輸入模式,輸入 :wq 儲存退出。

2.安裝screen

安裝screen,後面開服時會用到。使用screen可以讓伺服器程式在後臺執行,而不會因為遠端連線的斷開而停止程式。

# RedHat/CentOS
yum install -y screen

# Ubuntu/Debian
apt install screen

3.安裝SteamCmd執行所需環境

# 這些操作要在root中進行,根據你的系統選擇不同指令。

# Ubuntu/Debian 64位
sudo apt -y install lib32gcc1

# RedHat/CentOS 32位
sudo yum -y install glibc libstdc++

# RedHat/CentOS 64位
sudo yum -y install glibc.i686 libstdc++.i686

4.建立一個使用者

不建議使用root系統進行後面的操作,這裡我們為steam建立一個專門的使用者。

useradd -m steam	# 新建一個名為steam的使用者
passwd steam	# 為使用者steam設定密碼
su - steam	# 切換至新建的steam使用者。改成root,可以切換回root使用者

修改使用者終端配色。

CentOS7的終端和指令顏色一樣,大端的程式碼中難以區分。修改一下使用者終端的配色,可以大大的提高整個shell頁面的可讀性,方便你更快的找到每段程式碼的開頭。

修改前後如下圖所示:

輸入以下指令修改終端配色。

# 臨時修改配色
PS1="\[\e[32;1m\][\[\e[32;1m\]\u\[\e[32;1m\]@\h \[\e[34;1m\]\W\[\e[0m\]]\\$ "

# 永久修改vim配色
vim ~/.bashrc	#編輯.bashrc檔案

加入這一行

PS1="\[\e[32;1m\][\[\e[32;1m\]\u\[\e[32;1m\]@\h \[\e[34;1m\]\W\[\e[0m\]]\\$ "

儲存退出。

source ~/.bashrc	# 重新載入bash配置

steamCMD與七日殺伺服器端

1.下載並安裝SteamCMD

確定你當前在你新建的steam使用者中,如果不是,請使用su - steam切換使用者。目前版本steamcmd必須直接解壓在 ~ 目錄下,否則會報錯。

# 這些操作要在剛才建立的steam使用者中進行,請不要使用root使用者!

#cd至~目錄
cd ~

# 下載Linux系統專用的SteamCMD
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz 

# 解壓
tar -zxf steamcmd_linux.tar.gz

執行SteamCmd

# 執行steamcmd
./steamcmd.sh

首次執行steamcmd,他會自己下載更新自己。等出現steam>時,就可以對steamcmd進行操作啦。

2.登入steam賬號

你可以使用steam賬號登入,或匿名登入login anonymous。但是七日殺必須要steam登入才可以下載服務端。

login <使用者名稱> <密碼>
# 如果設定了安全令牌,會讓你輸入一次安全令牌

3.下載七日殺服務端

force_install_dir ~/7DaysToDieServer	# 設定服務端安裝目錄
app_update 294420 validate	# 下載七日殺服務端,294420是七日殺的編號

# 本文由 @白火shiraka 辛苦編寫,未經授權禁止轉載
# 白火的部落格主頁:www.cnblogs.com/shiraka
# 如果你在白火shiraka的部落格、知乎、B站以外的地方看到這篇文章,幫忙舉報侵權,十分感謝!
# 下載會持續一段時間,請耐心等待

等到出現如圖所示的 Success! App '294420' fully installed.之後便可以退出steamcmd了。

quit	#退出SteamCmd

4.配置服務端

# 進入七日殺服務端根目錄
cd ~/7DaysToDieServer
# 編輯配置檔案
vim serverconfig.xml

下面翻譯了部分引數。

<property name="ServerPort"               value="26900"/> <!-- 預設26900 -->
<property name="ServerName"               value="伺服器名"/>
<property name="ServerPassword"           value="伺服器登入密碼"/>
<property name="ServerMaxPlayerCount"      value="8"/> <!-- 最大玩家數 預設8 -->
<property name="ServerDescription"        value="伺服器描述"/>
<property name="GameWorld"                value="Navezgane"/> <!-- 伺服器世界名 預設Navezgane -->
<property name="GameName"                 value="My Game"/> <!-- 存檔名字 -->
<property name="GameDifficulty"           value="2"/> <!-- 遊戲難度 預設難度是2 -->
<property name="ZombiesRun"                value="0"/> <!-- 殭屍行走,預設值0,白天走晚上跑 1為不跑 2為一直跑 -->
<property name="DayNightLength"            value="60"/> <!-- 遊戲內一天在現實世界時長(單位分鐘min) -->
<property name="DayLightLength"            value="18"/> <!-- 遊戲內白天的時間(單位小時h)-->
<property name="PlayerKillingMode"        value="1"/> <!-- 玩家之間能造成的傷害,0.禁止殺戮 1.只能殺死盟友 2.只能殺死陌生人 3.允許殺死所有人 -->
<property name="DropOnDeath"                value="2"/> <!-- 玩家死亡掉落,預設0.全部 1.僅腰帶 2.僅揹包 3.刪除所有 -->
<property name="MaxSpawnedZombies"          value="60"/> <!-- 伺服器最大殭屍生成量 -->
<property name="MaxSpawnedAnimals"          value="50"/> <!-- 伺服器最大生物生成量 -->
<property name="AirDropFrequency"           value="72"/> <!-- 空投迴圈生成時間(單位分鐘min) -->
<property name="AirDropMarker"              value="true"/> <!-- 是否在地圖上標記空投 預設true -->
<property name="EACEnabled"                 value="false"/> <!-- #反作弊,預設true,開啟可以防止玩家作弊,同時也會使部分mod不可使用。 -->
<property name="TelnetEnabled"              value="true"/> <!-- 是否開啟Telnet -->
<property name="TelnetPort"                 value="8081"/> <!-- Telnet埠 -->
<property name="TelnetPassword"             value="mdzz"/> <!-- #Telnet密碼 -->
<!-- 以上內容由 @白火shiraka 翻譯整理,未經授權禁止轉載 -->
<!-- 白火的部落格主頁:www.cnblogs.com/shiraka -->
<!-- 如果你在白火shiraka的部落格、知乎、B站以外的地方看到這篇文章,幫忙舉報侵權,十分感謝! -->
<!-- 更多設定請參考配置檔案中的註釋,英語不好的同學善用翻譯軟體!-->

5.配置防火牆

還需要在防火牆放行以下埠,才可讓伺服器正常運轉。阿里雲請在平臺的安全組頁面新增規則,其他雲平臺可能有不同的安全組設定方式,大同小異。

協議 說明
8080 TCP Web控制檯
8081 TCP Telnet埠(這個建議不要放行)
8082 TCP 如果安裝了Alloc的mods,這個埠可以展示地圖
26900/26902 UDP 客戶端通訊

Telnet建議不要放行,直接在伺服器中使用telnet localhost 8081即可登入telnet。

如果一定要用遠端telnet連線,請務必在serverconfig.xml中設定好TelnetPassword後,再放行埠。該行為有很大的風險。

6.啟動伺服器

建立一個名為7DayServer的screen,可以讓伺服器在後臺執行,斷開遠端連線也不終止程式。

screen -S 7DaysServer

啟動伺服器

./startserver.sh -configfile=serverconfig.xml

按住Ctrl + A +D 將screen加入後臺執行

當你需要回到這個sreen頁面時,使用如下指令。

screen -ls	# 檢視screen,記下7DaysServer的編號
screen -r <7DaysServer的編號>

補充

1.幾個重要路徑和檔案

路徑

# 路徑取決於你的設定的安裝位置,如果完全按照本文操作,那麼路徑如下
~/7DaysToDieServer	# 七日殺服務端主目錄
~/7DaysToDieServer/Data/Worlds	# 七日殺服務端地圖目錄
~/.local/share/7DaysToDie/Saves	# 七日殺服務端存檔目錄
~/7DaysToDieServer/7DaysToDieServer_Data	# 七日殺伺服器日誌輸出目錄
~/7DaysToDieServer/Mods	# Mods目錄,需要自己建立

檔案

~/.local/share/7DaysToDie/Saves/serveradmin.xml	# 伺服器配置檔案
~/7DaysToDieServer/serverconfig.xml	# 管理員配置檔案

2.新增mod

想新增mod的同學看這裡。

cd ~/7DaysToDieServer	# cd至七日殺服務端主目錄
mkdir Mods	# 建立mods資料夾

伺服器的mod和自己平時玩的mod基本通用,跟在自己遊戲中裝mod一樣,將mod檔案放入Mods資料夾中即可。

上傳mods到伺服器上的方法有很多,比如Xshell中可以使用lrzsz上傳。

# 以下操作要在root使用者中進行

# Ubuntu/Debian
sudo apt-get install lrzsz

# RedHat/CentOS
yum  install lrzsz

安裝zip/unzip 用於解壓mod壓縮包

# Ubuntu/Debian
apt-get install zip

# RedHat/CentOS
yum install zip unzip

上傳mod檔案,並解壓。

# 使用su - steam,回到steam使用者中繼續操作
cd ~/7DaysToDieServer
rz #直接將mod的壓縮包上傳檔案至linux
unzip <壓縮包名>	# 一般mod壓縮包內自帶Mods資料夾,直接解壓即可
# 如果解壓後路徑不對,可以使用mv指令移動至Mods檔案下

3.管理伺服器

在伺服器中安裝telnet。(也可以用Xshell的遠端telnet連線,這裡不做贅述)

# RedHat/CentOS
rpm -qa telnet	# 檢測telnet的rpm包是否安裝 
yum install telnet	# 若未安裝,則安裝telnet

# Ubuntu/Debian
netstat -a | grep telnet	# 檢測telnet的rpm包是否安裝 
sudo apt-get install xinetd telnetd	# 若未安裝,則安裝telnet
telnet localhost 8081	#登入伺服器telnet

管理員指令

admin add <玩家名> <許可權級別>	# 給予玩家管理許可權(最高階別為0)
admin remove <玩家名>	# 移除玩家的管理許可權
admin update <玩家名> <許可權等級>	#提高管理許可權級別
#建議先在telnet用上述指令給自己管理許可權
#然後就可以直接在遊戲中,按F1使用下面的指令了
dm	#開啟或關閉debug模式
ban <玩家名> <時間>	# 禁止玩家登陸伺服器一段時間(minutes, hours, days, weeks, months, years)
kill <id/name>	# 殺死指定玩家
listplayers lp	# 獲取線上玩家資訊
give <id/name> <物品> <數量>	# 給玩家刷某樣東西
shutdown	# 關閉伺服器
say <資訊>	# 以server的名義廣播一條資訊

參考:

Steam Developer Community : SteamCMD

Installing Linux dedicated server for 7 days to die

相關文章