1. 程式人生 > >linux雲服務搭建七日殺伺服器

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

[TOC] # 準備工作 首先你需要擁有一個雲伺服器,內地的主流雲服務平臺有阿里雲、騰訊雲等,如果你在海外可以選擇AWS、google雲服務等。七日殺服務端的建議最低配置是2core 4G,記憶體8G及以上最佳。考慮到目前國內雲服務的價格比較,在校大學生可以考慮使用學生優惠的1core 2G套餐,配置swap後勉強夠用。 雲伺服器的主機名一般是一串很長的亂碼,例如顯示在使用者終端上很影響使用。比如我在修改前是: ```shell [root@bS2&Lb%n21fAS7D ~]$ ``` 為了方便以後使用,建議大家先修改它。 ```shell # 這些操作要在root中進行。 hostnamectl set-hostname centos7 #可以改成你喜歡的主機名,別太長 hostname # 檢視下 centos7 vim /etc/hosts # 編輯下hosts檔案, 給127.0.0.1新增hostname cat /etc/hosts # 檢查 ``` 修改之後像這樣: ```shell [root@centos7 ~]$ ``` 舒服多了! ### 1.設定swap 這些操作都在root中進行。 linux系統的swap空間類似windows系統的虛擬記憶體。如果你的雲伺服器記憶體小於4G,比如只有2G記憶體,那你就必須設定一個swap空間,否則啟動伺服器時會因為記憶體不足導致程序killed。 使用`swapon`命令可以檢查系統是否已經配置過swap,雲伺服器一般都沒有提前設定swap。 ```shell swapon -s # 如果該命令沒有返回出結果,則代表該系統尚未配置過swap。 df -h # 檢查可用的儲存空間 ``` 如果沒有,按如下步驟建立Swap檔案。一般建議swap大小設定為自己實體記憶體相同或兩倍。我這裡設定了4G。 ```shell # 這些操作要在root中進行。 sudo fallocate -l 4G /swapfile # 請根據自己情況修改swap大小 ls -lh /swapfile sudo chmod 600 /swapfile # 更改swap檔案的許可權,否則會有很大的安全隱患 ls -lh /swapfile # 然後檢查是否設定完成 ``` 啟用swap檔案 ```shell sudo mkswap /swapfile sudo swapon /swapfile # 確認一下設定是否已經生效 swapon -s free -m ``` 前面設定的swap會在重啟後失效,通過修改fstab讓配置永久生效。 ```shell 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。 ```shell 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可以讓伺服器程序在後臺執行,而不會因為遠端連線的斷開而停止程序。 ```shell # RedHat/CentOS yum install -y screen # Ubuntu/Debian apt install screen ``` ### 3.安裝SteamCmd執行所需環境 ```shell # 這些操作要在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建立一個專門的使用者。 ```shell useradd -m steam # 新建一個名為steam的使用者 passwd steam # 為使用者steam設定密碼 su - steam # 切換至新建的steam使用者。改成root,可以切換回root使用者 ``` 修改使用者終端配色。 CentOS7的終端和指令顏色一樣,大端的程式碼中難以區分。修改一下使用者終端的配色,可以大大的提高整個shell頁面的可讀性,方便你更快的找到每段程式碼的開頭。 修改前後如下圖所示: ![](https://img2020.cnblogs.com/blog/1660935/202011/1660935-20201119125312069-909578565.jpg) 輸入以下指令修改終端配色。 ```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\]]\\$ " ``` 儲存退出。 ```shell source ~/.bashrc # 重新載入bash配置 ``` # steamCMD與七日殺伺服器端 ### 1.下載並安裝SteamCMD 確定你當前在你新建的steam使用者中,如果不是,請使用`su - steam`切換使用者。目前版本steamcmd必須直接解壓在 `~` 目錄下,否則會報錯。 ```shell # 這些操作要在剛才建立的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 ```shell # 執行steamcmd ./steamcmd.sh ``` 首次執行steamcmd,他會自己下載更新自己。等出現`steam>`時,就可以對steamcmd進行操作啦。 ### 2.登入steam賬號 你可以使用steam賬號登入,或匿名登入`login anonymous`。但是七日殺必須要steam登入才可以下載服務端。 ```shell login <使用者名稱> <密碼> # 如果設定了安全令牌,會讓你輸入一次安全令牌 ``` ### 3.下載七日殺服務端 ```shell force_install_dir ~/7DaysToDieServer # 設定服務端安裝目錄 app_update 294420 validate # 下載七日殺服務端,294420是七日殺的編號 # 本文由 @白火shiraka 辛苦編寫,未經授權禁止轉載 # 白火的部落格主頁:www.cnblogs.com/shiraka # 如果你在白火shiraka的部落格、知乎、B站以外的地方看到這篇文章,幫忙舉報侵權,十分感謝! # 下載會持續一段時間,請耐心等待 ``` 等到出現如圖所示的 Success! App '294420' fully installed.之後便可以退出steamcmd了。 ```shell quit #退出SteamCmd ``` ### 4.配置服務端 ```shell # 進入七日殺服務端根目錄 cd ~/7DaysToDieServer # 編輯配置檔案 vim serverconfig.xml ``` 下面翻譯了部分引數。 ```xml
``` ### 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,可以讓伺服器在後臺執行,斷開遠端連線也不終止程序。 ```shell screen -S 7DaysServer ``` 啟動伺服器 ```shell ./startserver.sh -configfile=serverconfig.xml ``` 按住Ctrl + A +D 將screen加入後臺執行 當你需要回到這個sreen頁面時,使用如下指令。 ```shell screen -ls # 檢視screen,記下7DaysServer的編號 screen -r <7DaysServer的編號> ``` # 補充 ### 1.幾個重要路徑和檔案 路徑 ```shell # 路徑取決於你的設定的安裝位置,如果完全按照本文操作,那麼路徑如下 ~/7DaysToDieServer # 七日殺服務端主目錄 ~/7DaysToDieServer/Data/Worlds # 七日殺服務端地圖目錄 ~/.local/share/7DaysToDie/Saves # 七日殺服務端存檔目錄 ~/7DaysToDieServer/7DaysToDieServer_Data # 七日殺伺服器日誌輸出目錄 ~/7DaysToDieServer/Mods # Mods目錄,需要自己建立 ``` 檔案 ```shell ~/.local/share/7DaysToDie/Saves/serveradmin.xml # 伺服器配置檔案 ~/7DaysToDieServer/serverconfig.xml # 管理員配置檔案 ``` # ### 2.新增mod 想新增mod的同學看這裡。 ```shell cd ~/7DaysToDieServer # cd至七日殺服務端主目錄 mkdir Mods # 建立mods資料夾 ``` 伺服器的mod和自己平時玩的mod基本通用,跟在自己遊戲中裝mod一樣,將mod檔案放入Mods資料夾中即可。 上傳mods到伺服器上的方法有很多,比如Xshell中可以使用lrzsz上傳。 ```shell # 以下操作要在root使用者中進行 # Ubuntu/Debian sudo apt-get install lrzsz # RedHat/CentOS yum install lrzsz ``` 安裝zip/unzip 用於解壓mod壓縮包 ```shell # Ubuntu/Debian apt-get install zip # RedHat/CentOS yum install zip unzip ``` 上傳mod檔案,並解壓。 ```shell # 使用su - steam,回到steam使用者中繼續操作 cd ~/7DaysToDieServer rz #直接將mod的壓縮包上傳檔案至linux unzip <壓縮包名> # 一般mod壓縮包內自帶Mods資料夾,直接解壓即可 # 如果解壓後路徑不對,可以使用mv指令移動至Mods檔案下 ``` ### 3.管理伺服器 在伺服器中安裝telnet。(也可以用Xshell的遠端telnet連線,這裡不做贅述) ```shell # 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 ``` ```shell telnet localhost 8081 #登入伺服器telnet ``` 管理員指令 ```shell admin add <玩家名> <許可權級別> # 給予玩家管理許可權(最高級別為0) admin remove <玩家名> # 移除玩家的管理許可權 admin update <玩家名> <許可權等級> #提高管理許可權級別 #建議先在telnet用上述指令給自己管理許可權 #然後就可以直接在遊戲中,按F1使用下面的指令了 dm #開啟或關閉debug模式 ban <玩家名> <時間> # 禁止玩家登陸伺服器一段時間(minutes, hours, days, weeks, months, years) kill
# 殺死指定玩家 listplayers lp # 獲取線上玩家資訊 give <物品> <數量> # 給玩家刷某樣東西 shutdown # 關閉伺服器 say <資訊> # 以server的名義廣播一條資訊 ``` 參考: [Steam Developer Community : SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD) [Installing Linux dedicated server for 7 days to die](https://steamcommunity.com/sharedfiles/filedetails/?l=german&id=36