通過騰訊雲、阿里雲這種雲服務器假設游戲服務器很方便,可以在主機不在線的時候讓其他小伙伴依舊可以游玩。我在騰訊雲購買了2核4G輕量應用服務器1年。
1.准備工作
1.1設置swap
首先登錄雲服務器終端。設置swap操作需要在root下進行,swap類似虛擬內存,防止因游戲進程內存消耗過大導致進程中止。
# 獲取root權限
$ sudo su
# 檢查是否配置過swap,若無返回結果,則未配置過
$ swapon -s
# 檢查可用的存儲空間
$ df -h
# 如果未設置swap,則一般設置為物理內存的1或2倍,此處我物理內存4G,設置swap也為4g
$ fallocate -l 4G /swapfile
$ ls -lh /swapfile
$ chmod 600 /swapfile
$ ls -lh /swapfile #此時權限應為rw-------
# 啟用swap文件
$ mkswap /swapfile
$ swapon /swapfile
# 確認swap是否已經生效
$ swapon -s
$ free -m
前述設置重啟失效,修改fstab使其永久生效
$ sudo vi /etc/fstab
在fstab末尾加入(vi基本操作:1,按i
進入編輯模式,正常編輯內容;2.按Esc
退出編輯模式);3.輸入:wq
保存並退出。)
/swapfile swap swap sw 0 0
可選:swappiness
參數決定系統將數據從內存交換到swap的頻率,數值越接近0,系統越傾向於不進行swap,最大限度使用物理內存。數值越接近100,越傾向於使用swap,而過多的使用swap可能導致服務器運行效率緩慢。ubuntu系統的默認推薦值是60,這里我為了保證服務器運行效率,建議設置為10。(我就沒改)
# 查看當前的swappiness
$ cat /proc/sys/vm/swappiness
# 修改swappiness為10
$ sudo sysctl vm.swappiness=10
編輯sysctl.conf,使設置永久生效
$ sudo vi /etc/sysctl.conf
在末尾加入
vm.swappiness = 10
並:wq
退出。
1.2安裝screen
安裝screen,后面開服時會用到。使用screen可以讓服務器進程在后台運行,而不會因為遠程連接的斷開而停止進程。我是Ubuntu 20.04 LTS
$ sudo apt install screen
1.3安裝SteamCmd運行環境
這部分按照steamcmd官網的說明,為了避免安全問題,不建議使用root用戶進行以下操作,所以優先在root下建立新用戶:
# steam就是用戶名。也可以不叫steam,叫別的名字
$ useradd -m steam
$ cd /home/steam
# 安裝steamcmd
$ sudo add-apt-repository multiverse
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install lib32gcc1 steamcmd
$ ln -s /usr/games/steamcmd steamcmd
2.安裝七日殺服務器端
2.1下載安裝steamcmd
上面裝一次了,但是在另一個教程里,我看這樣做比較方便,就又按這個方式搞了一下。首先在剛開始建立好的steam用戶(不要使用root)
$ cd ~
$ wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
$ tar -zxf steamcmd_linux.tar.gz
運行steamcmd
$ cd Steam
#如果有permission denied的問題就先加權限
$ chmod +x steamcmd.sh
$ ./steamcmd.sh
首次運行steamcmd會下載更新,等終端出現steam>
時,就可以操作了。
2.2登錄steam賬號,並下載服務端
首先登錄steam賬號,或者匿名登陸login anonymous
,很多游戲不需要賬戶購買也可以開設服務器,具體可以在這里查看,同時也會給出游戲的編號
steam> login <username> <password>
# 如果設置了安全令牌,會讓你輸入一次安全令牌
# 設置服務端文件目錄
force_install_dir ~/7_Days_to_Die_server
# 下載服務端,284420是七日殺的編號
app_update 294420 validate
過一段時間,下載完成,就可以通過quit
命令退出steamcmd
2.3 設置服務端參數
進入剛才設定的安裝服務器的目錄
$ cd ~/7_Days_to_Die_server
# 編輯服務器參數
$ vi serverconfig.xml
各個參數的意義可以上網查,這個網站是七日殺的官方,需要自己翻譯。
2.4 設置防火牆
這個部分應該是在騰訊雲的后台設置,放行以下端口,才能讓服務器正常運轉
端口 | 協議 | 說明 |
---|---|---|
8080 | TCP | Web控制台 |
8081 | TCP | Telnet端口(建議不要放行) |
8082 | TCP | 如果安裝了Alloc的mods,這個端口可以展示地圖 |
26900/26902 | UDP | 客戶端通訊 |
Telnet建議不要放行,直接在服務器中使用telnet localhost 8081
即可登錄telnet。如果一定要用遠程telnet連接,請務必在serverconfig.xml中設置好TelnetPassword后,再放行端口。該行為有很大的風險。
2.5啟動服務器
首先創建一個screen,可以讓服務器在后台運行,防止因為ssh斷開等原因中止進程
$ screen -S 7Days
$ /home/steam/7_Days_to_Die_server/startserver.sh -configfile=serverconfig.xml
使用Ctrl+A+D
組合鍵使屏幕后台運行
當要回到screen頁面時,使用
screen -ls # 查看screen,記下7DaysServer的編號
screen -r <7DaysServer的編號>
2.6補充
2.6.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.6.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文件下
2.6.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的名義廣播一條信息