1. 程式人生 > 其它 >阿里雲Centos7部署私人CSGO伺服器

阿里雲Centos7部署私人CSGO伺服器

大四畢業生,論文和答辯分別以1.8%的重複率和只答不辨的態度雙雙過關。現在就是在家等著學校發畢業證了。順帶學學駕駛。。。可是我這麼一個喜歡折騰的人,怎麼能夠讓自己接受這麼無聊的鹹魚時光呢?因為這個寒假和學弟一起學習技術的同時接觸到了CSGO的這款遊戲,說起CS那可是老FPS遊戲了!在官方匹配和5E我都有涉足,但是不滿於此!我要搭建一個自己的服!務!器!這樣開啟自己的創意工坊地圖小夥伴們就不會變成高Ping戰士啦!這邊參考了這位大佬的經驗再加上我自己遇到的一些狀況。

話不多說下面成列一下需要用到的資源

1.一臺有公網IP的雲伺服器(或者你自己有公網IP,辣蒜你牛批)
2.Xshell
3.一個善於鑽研的腦子

下面正式開始

一、建立使用者安裝Steamcmd和CSGO Server

1、在伺服器上建立一個使用者名稱稱為steam(因為root的許可權過大可能會出現什麼意外情況)並建立相關目錄

useradd -m steam    // 新增名為steam的使用者
su steam    		// 切換到steam使用者
cd /home/steam/     // 切換到steam使用者的根目錄下

2、建立名為steamcmd的資料夾,下載steamcmd並解壓

mkdir steamcmd  															  //建立名為steamcmd的資料夾
cd steamcmd/   																  // 切換到資料夾目錄下
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz   //下載steamcmd
tar zxvf steamcmd_linux.tar.gz   											  // 解壓steamcmd
rm steamcmd_linux.tar.gz   													  //刪除下載的安裝包,也可以保留

3、安裝執行steamcmd所需的環境,執行steamcmd並安裝CS:GO服務端

sudo yum install glibc.i686        // 安裝steamcmd執行所需的庫
sudo yum install libstdc++.i686    // 有的主機已經安裝其他同樣效果的依賴,不用多次安裝
./steamcmd.sh					   // 啟動

出現Steam> ,說明steamcmd就安裝完成

接下來就是在Steamcmd裡面安裝CSGO Server

以匿名使用者身份登入Steamcmd
login anonymous
建立CS:GO伺服器資料夾,該資料夾在steamcmd資料夾目錄下
force_install_dir ./csgo_server
安裝csgo服務端(15分鐘左右)
app_update 740 validate

在看到如下圖片中最後的行的"Success!"後,表明CS:GO服務端安裝成功

安裝完成後,退出Steamcmd
quit

二、編寫CS:GO更新指令碼(最好做一下)

1、編寫steamcmd的runscript指令碼

在steamcmd目錄下(退出steamcmd.sh後的當前目錄),使用vim建立新的update.txt檔案
vi update.txt
進入編輯模式,寫入以下語句,然後儲存退出
login anonymous
force_install_dir ./csgo_server
app_update 740
quit

2、編寫steamcmd執行指令碼

在steamcmd目錄下,使用vim建立新的csgo_server_update.sh檔案
vi csgo_server_update.sh
進入編輯模式,寫入以下語句後儲存退出
#!/bin/bash
./steamcmd.sh +runscript update.txt

3、測試指令碼

在steamcmd目錄下執行指令碼csgo_server_update.sh
./csgo_server_update.sh
若執行結果如下所示,則更新指令碼編寫完成,以後可以直接使用該命令一鍵更新CS:GO伺服器
若出現了許可權不足的情況,提升許可權再次執行即可
chmod 775 csgo_server_update.sh

如果實在不行可以直接使用Root來啟動!

三、配置並執行CS:GO服務端

1、前往Steam遊戲伺服器帳戶管理註冊steam伺服器登入令牌。沒有該令牌伺服器只能在本地網路中進行連線,在社群伺服器瀏覽器中也不會顯示。(網站可能無法連線,推薦使用Steamcommunity 302工具修復連線問題)

在App ID中填入CS:GO的ID:730。備忘錄中填入:CSGO服務端令牌(選填)

點選建立之後便獲得了登入令牌,不要將該令牌洩露出去,該令牌用於伺服器在CS:GO社群伺服器中驗證

2、下載伺服器配置檔案server.cfg

切換目錄到CS:GO的cfg資料夾下,下載server.cfg檔案,編輯server.cfg檔案
cd csgo_server/csgo/cfg/
wget http://www.csgodev.com/downloads/server.cfg
vi server.cfg
進入編輯模式,在server.cfg檔案中新增登入令牌,修改部分引數(這部分一定要改,不然很影響遊戲體驗!)
// 新增以下引數:
// steam account,修改為自己剛剛申請的登陸令牌
sv_setsteamaccount "4FXXXXXXXXXXXXXXXXXXXXXXXXX"

// 找到並修改以下引數:
// 伺服器名稱,安全方面
hostname "Fisher's server"    // 伺服器在社群伺服器瀏覽器上顯示的名稱,自行修改為喜歡的名字
rcon_password "12345678"    // CS:GO遠端控制檯密碼,修改為自己定義的密碼
sv_password "87654321"    // 伺服器連線密碼,在連線伺服器時輸入,不要密碼可以留空
// 遊戲引數方面
sv_maxrate "128000"    // 伺服器最大頻寬使用量,預設值非常小,因此會造成choke值異常,此處建議改為128000
sv_minrate "80000"    // 伺服器最小頻寬使用量,與上面同理,此處建議改為80000
sv_accelerate "5.5"    // 人物移動速度,預設值為10,快到噁心,此處建議修改為5.5

注意啊!steam account一定要新增,hostname可以改成自己喜歡的,rcon_password也要設,sv_password也要設

修改完以上引數之後,伺服器便可以啟動了,關於server.cfg中的其他引數說明,可以在server.cfg檔案的註釋中檢視,或者自己百度

3、對了,別忘了把你伺服器的27015的udp協議埠開下來

各個雲伺服器有各自的手段,這個自行解決一下

4、為了能讓你常駐CSGO Server ,那就要使用Screen這個工具了

安裝
yum install screen -y
返回csgo_server目錄,使用screen建立新的會話
cd /home/steam/steamcmd/csgo_server/
screen -S csgo
注意:當screen會話未結束時,在下次ssh登陸時可以使用命令"screen -r csgo"來恢復會話
此時螢幕會清屏,說明你成功進入到"csgo"這個會話當中,這時開始啟動伺服器
./srcds_run -debug -game csgo -console -port 27015 -steamcmd_script /home/steam/steamcmd/update.txt -steam_dir /home/steam/ +map de_dust2

引數解釋:
-debug 開啟除錯模式
-game 指明遊戲,此處是csgo
-console 開啟遊戲控制檯
-port 遊戲伺服器埠,此處是27015
-steamcmd_script 執行steamcmd的指令碼檔案地址
-steam_dir Steam的安裝地址
+map 伺服器載入的地圖(此處只能用官方地圖,創意工坊地圖請看後面)

當看到如下圖所示的介面之後,說明伺服器成功地執行,可以在遊戲中連線了
記住紅圈裡的IP也就是你的雲伺服器公網地址

四、在遊戲中連線伺服器

一定要在—worldwide的世界服才行

在遊戲中開啟瀏覽社群服伺服器,右鍵收藏夾新增IP

連線伺服器,雙擊收藏夾中剛剛新增的伺服器,輸入密碼即可,注意輸入法

然後你就可以盡情享受你的私人伺服器了!

五、新增社群創意工坊地圖

1、註冊Steam網頁API

前往Steam網頁API註冊頁面註冊API,獲得Authkey(注意不要洩露出去)

2、獲取創意工坊地圖ID

在瀏覽器開啟你中意的創意工坊地圖,看位址列後id=XXXXXX,記得複製他

3、 啟動伺服器

在csgo_server資料夾中輸入命令

./srcds_run -debug -game csgo -console -port 27015 -steamcmd_script /home/steam/steamcmd/update.txt -steam_dir /home/steam/ +host_workshop_map 465367694 -authkey 3XXXXXXXXXXXXXXXXXXXXXXX

相同的引數在之前有解釋,這裡只解釋新的引數:
+host_workshop_map 465367694 切換地圖為來自創意工坊的地圖,後面的數字填入剛剛獲取的地圖ID
-authkey 3XXXXXXXXXX Steam網頁API的Authkey,填入剛剛獲取的API Authkey

啟動好之後和官方地圖的提示資訊是一樣的哦

這邊我總結一下自己遇到的情況,我在啟動過官方地圖後再啟動創意工坊地圖就直接連線失敗。試了很多次。所以如果出現問題後,直接將你的伺服器reboot或者init 6一下。然後重新啟動你的CSGO Server直接開啟創意工坊地圖,等待片刻,然後再連線即可!

六、總結

使用Screen使得CSGO Server常駐之後可以斷開SSH連線,下次連線SSH時

screen -r csgo

可以繼續操作服務端了。

附:(一些常用的CSGO Server指令)

切換地圖
changelevel de_train(地圖名或者創意工坊地圖的ID)
所有官方地圖 
PENDING:   (fs) training1.bsp
PENDING:   (fs) gd_rialto.bsp
PENDING:   (fs) gd_cbble.bsp
PENDING:   (fs) dz_sirocco.bsp
PENDING:   (fs) dz_junglety.bsp
PENDING:   (fs) dz_blacksite.bsp
PENDING:   (fs) de_vertigo.bsp
PENDING:   (fs) de_train.bsp
PENDING:   (fs) de_sugarcane.bsp
PENDING:   (fs) de_stmarc.bsp
PENDING:   (fs) de_shortnuke.bsp
PENDING:   (fs) de_shortdust.bsp
PENDING:   (fs) de_safehouse.bsp
PENDING:   (fs) de_overpass.bsp
PENDING:   (fs) de_nuke.bsp
PENDING:   (fs) de_mirage.bsp
PENDING:   (fs) de_lake.bsp
PENDING:   (fs) de_inferno.bsp
PENDING:   (fs) de_dust2.bsp
PENDING:   (fs) de_chlorine.bsp
PENDING:   (fs) de_cbble.bsp
PENDING:   (fs) de_canals.bsp
PENDING:   (fs) de_cache.bsp
PENDING:   (fs) de_bank.bsp
PENDING:   (fs) de_anubis.bsp
PENDING:   (fs) cs_office.bsp
PENDING:   (fs) cs_militia.bsp
PENDING:   (fs) cs_italy.bsp
PENDING:   (fs) cs_assault.bsp
PENDING:   (fs) cs_agency.bsp
PENDING:   (fs) coop_kasbah.bsp
PENDING:   (fs) ar_shoots.bsp
PENDING:   (fs) ar_monastery.bsp
PENDING:   (fs) ar_lunacy.bsp
PENDING:   (fs) ar_dizzy.bsp
PENDING:   (fs) ar_baggage.bsp