squad戰(zhàn)術(shù)小隊(duì)游戲服務(wù)器部署+簡(jiǎn)易面板部署
部署環(huán)境 Centos7
部署參考文檔:https://squad.fandom.com/wiki/Server_Installation/zh#Linux
安裝steamcmd工具:
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -bash steamcmd.sh
系統(tǒng)環(huán)境配置:
yum -y install screen glibc libstdc++ glibc.i686 libstdc++.i686
這里使用腳本的形式安裝,創(chuàng)建文件夾并編輯以下腳本:
[steam@cd3 ~]$ mkdir squad_server
[steam@cd3 ~]$ cat squad_up.sh
#!/bin/bash
./steamcmd.sh +login anonymous +force_install_dir squad_server +app_update 403240 validate +quit
運(yùn)行腳本,等待安裝完成:
bash ./squad_up.sh
編輯啟動(dòng)腳本:
#!/bin/bash
/home/steam/squad_server/SquadGameServer.sh Port=6301 QueryPort=26301 FIXEDMAXPLAYERS=100 RANDOM=NONE
啟動(dòng)腳本即可運(yùn)行服務(wù)器。
拓展內(nèi)容:
配置文件描述:
Admins.cfg ? ? ? ? ? ? ? ? ? ? # 權(quán)限組[管理員]
Bans.cfg ? ? ? ? ? ? ? ? ? ? ? # 封禁玩家列表
License.cfg ? ? ? ? ? ? ? ? ? ?# 許可證
MapRotation.cfg ? ? ? ? ? ? ? ?# 地圖循環(huán)列表
MOTD.cfg ? ? ? ? ? ? ? ? ? ? ? # 服務(wù)器介紹[每日消息]
Rcon.cfg ? ? ? ? ? ? ? ? ? ? ? # 遠(yuǎn)程管理配置
RemoteAdminListHosts.cfg ? ? ? # 遠(yuǎn)程權(quán)限組[管理員]列表
RemoteBanListHosts.cfg ? ? ? ? # 遠(yuǎn)程封禁玩家列表
Server.cfg ? ? ? ? ? ? ? ? ? ? # 服務(wù)器配置
ServerMessages.cfg ? ? ? ? ? ? # 服務(wù)器循環(huán)[紅字]公告
遠(yuǎn)程管理[Rcon]
文件名:Rcon.cfg
如果您不想使用?遠(yuǎn)程管理[Rcon],請(qǐng)將密碼?[Password=]?設(shè)置為空。 注意: 如果IP為 0.0.0.0,將自動(dòng)綁定到默認(rèn)的公網(wǎng)IP。
這里推薦一個(gè)遠(yuǎn)程管理工具:https://github.com/Tiiffi/mcrcon
安裝方法:
git clone ?https://github.com/Tiiffi/mcrcon
cd?
mcrcon
make && make install
使用方法:
Option:
?-H? ? ? ? ? ??
Server address (default: localhost)? ?
-P ? ? ? ? ? ?Port (default: 25575)
?
-p ? ? ? ? ? ?Rcon password
?
-t ? ? ? ? ? ?Terminal mode
?
-s ? ? ? ? ? ?Silent mode
?
-c ? ? ? ? ? ?Disable colors
?
-r ? ? ? ? ? ?Output raw packets
?
-w ? ? ? ? ? ?Wait for specified duration (seconds) between each command (1 - 600s)
?
-h ? ? ? ? ? ?Print usage
?
-v ? ? ? ? ? ?Version information
針對(duì)squad的非交互式的使用方法:
mcrcon -H 127.0.0.1 -P 21114 -p passwd -w 1 "AdminBroadcast 消息發(fā)送" ok
通過(guò)對(duì)腳本的編寫(xiě),可實(shí)現(xiàn)一定自動(dòng)化能力
參考命令(在本地運(yùn)行):
[root@cd3 mcrcon-master]# mcrcon -P 21114 -p passwd
配置文件參考文檔:https://squad.fandom.com/wiki/Server_Configuration/zh
崩潰自動(dòng)拉起腳本:
#!/bin/bash
source /home/steam/.bash_profile?
SD=`tail -10 /home/steam/squad_server/nohup.out|grep Shutdown|wc -l`?
if [ $SD -eq 1 ];?
then
?
kill `ps -ef|grep SquadGameServer |grep -v grep |awk '{print $2}'`?
fi
? ?
sleep 5?
SQ=`ps -ef | grep SquadGameServer | grep -v grep | grep steam | wc -l`?
if [ $SQ -ne 2 ];?
then
? ? ?
kill `ps -ef|grep SquadGameServer |grep -v grep |awk '{print $2}'` ? ? ?
cd /home/steam/squad_server ? ? ?
nohup bash ./start.sh > /home/steam/squad_server/nohup.out &
? ?
fi
如果有其他會(huì)影響刷新日志的腳本,需要將其他腳本sleep數(shù)秒,此腳本在crontab中需要最高優(yōu)先級(jí),并且每分鐘監(jiān)控執(zhí)行。
模組添加方法
參考如下,修改游戲更新腳本:
#!/bin/bash
./steamcmd.sh +login anonymous +force_install_dir ./squad_server +app_update 403240 validate +quit?
./steamcmd.sh +login anonymous +force_install_dir ./squad_server +workshop_download_item 393380 2934263749 +quit?
./steamcmd.sh +login anonymous +force_install_dir ./squad_server +workshop_download_item 393380 2891780963 +quit?
./steamcmd.sh +login anonymous +force_install_dir ./squad_server +workshop_download_item 393380 2421120620 +quit
cp -rp /home/steam/squad_server/steamapps/workshop/content/393380/* /home/steam/squad_server/SquadGame/Plugins/Mods/
運(yùn)行后重新啟動(dòng)服務(wù)端即可。
認(rèn)證服申請(qǐng):http://master.joinsquad.com/dedicatedserverlicense
訓(xùn)練場(chǎng)不可用的解決方法
修改配置文件ExcludedLayers.cfg和ExcludedLevels.cfg
其中ExcludedLayers.cfg是用于禁止的地圖精準(zhǔn)匹配,ExcludedLevels.cfg則為模糊匹配,使用//注釋即可。
地圖循環(huán)失敗的解決方法
檢查SquadGame/ServerConfig/Server.cfg
配置項(xiàng)為以下參數(shù)
MapRotationMode=LayerList
循環(huán)地圖會(huì)使用文件?SquadGame/ServerConfig/LayerRotation.cfg
簡(jiǎn)易控制面板部署
簡(jiǎn)易控制面板這里是通過(guò)CGI和RCON來(lái)實(shí)現(xiàn)的前后端交互能力
前臺(tái)示例的html代碼如下:
<div style="color:#4682B4;text-align:center;">
? ? ? ? ? ? <a name="top" id="top_anchor">
? ? ? ? ? ? <h1>TDU-簡(jiǎn)易控制面板</h1>
? ? ? ? </a></div>
<a name="top" id="top_anchor">
? ? ? ? </a>
<div style="color:#696969"><a name="top" id="top_anchor">
? ? ? ? ? ? <p>
? ? ? ? ? ? ? ? 立即切換地圖
? ? ? ? ? ? ? ? </p></a><ul><a name="top" id="top_anchor">
? ? ? ? ? ? ? ? ? ? </a><li><a name="top" id="top_anchor">
? ? ? ? ? ? ? ? ? ? ? ? </a><a href="http://1270.0.1:8088/cgi-bin/Anvil_RAAS_v4.sh" target="">Anvil_RAAS_v4</a>
? ? ? ? ? ? ? ? ? ? </li>? ?
? ? ? ? ? ? ? ? ? ? <li>
? ? ? ? ? ? ? ? ? ? ? ? <a href="http://1270.0.1:8088/cgi-bin/BlackCoast_RAAS_v4.sh" target="">BlackCoast_RAAS_v4</a>
? ? ? ? ? ? ? ? ? ? </li>
<li><a href="http" target=""></a></li> </ul>
<div style="color:#696969"><a name="top" id="top_anchor">
? ? ? ? ? ? <p>
? ? ? ? ? ? ? ? 自助跳邊<ul>
<form role="search" method="get" action="http://1270.0.1:8088/cgi-bin/AdminForceTeamChange.sh"><font style="color:#756fe9">用戶昵稱:</font></label><input type="search" name="username" value="" placeholder="請(qǐng)輸入用戶昵稱" required="">
<input type="submit" value="提交"></ul>
</svg></button></div></form>
? ? ? ? ? ? ? ? </ul>
? ? ? ? ? ? <p></p>
? ? <br>
? ? ? ? </div>
游戲地圖切換后臺(tái)調(diào)用的CGI腳本示例:
#!/bin/bash
/usr/local/bin/mcrcon -P 21114 -p paswd -w 1 "AdminChangeLayer Anvil_RAAS_v4" ok
傳參CGI腳本示例:
#!/bin/bash
USERNAME=`echo "$QUERY_STRING"|sed 's/username=//'`?
/usr/local/bin/mcrcon -P 21114 -p paswd -w 1 "AdminForceTeamChange $USERNAME" ok
利用CGI傳參格式為:http://127.0.0.1:8088/cgi-bin/shell/參數(shù)1+參數(shù)2+參數(shù)3+...
注意,因自動(dòng)UrlEncode編碼轉(zhuǎn)換問(wèn)題,導(dǎo)致無(wú)法支持中文;
最終實(shí)現(xiàn)效果示例:

擊殺查詢是通過(guò)游戲日志輸出的解析實(shí)現(xiàn)的
CGI部署
安裝httpd:
yum install -y httpd
修改配置:
vim /etc/httpd/conf/httpd.conf
末尾添加內(nèi)容:
LoadModule cgi_module /usr/lib64/httpd/modules/mod_cgi.so?
LoadModule cgid_module /usr/lib64/httpd/modules/mod_cgid.so
修改內(nèi)容:(注意路徑)
<Directory "/var/www/cgi-bin">
? ?
AllowOverride None
? ?
Options ExecCGI
? ?
Order deny,allow
? ?
Allow from all
</Directory>
取消注釋:
? ?AddType text/html .shtml
? ?
AddOutputFilter?
INCLUDES .shtml
? ?
AddHandler cgi-script .cgi .sh ? ? ? ? //在其后添加.sh,使其支持此結(jié)尾的腳本
修改默認(rèn)端口,防止與Nginx沖突:
Listen 8088
啟動(dòng)httpd
systemctl start httpd
在CGI目錄下編寫(xiě)腳本:
[root@cq html]# cd /var/www/cgi-bin/
此處需注意權(quán)限問(wèn)題,CGI目錄下的腳本調(diào)用是使用的apache用戶;需要根據(jù)自身需求修改權(quán)限。
需要了解的是CGI的環(huán)境參數(shù),以方便后續(xù)在腳本中直接調(diào)用:
此處引用:https://blog.csdn.net/JOKER0707/article/details/101569780
echo SERVER_SOFTWARE = $SERVER_SOFTWARE #服務(wù)器軟件
echo SERVER_NAME = $SERVER_NAME ? ? ? ? #服務(wù)器主機(jī)名
echo GATEWAY_INTERFACE = $GATEWAY_INTERFACE ? ?#CGI版本
echo SERVER_PROTOCOL = $SERVER_PROTOCOL ?#通信使用的協(xié)議
echo SERVER_PORT = $SERVER_PORT ? ? ? ? #服務(wù)器的端口號(hào)
echo REQUEST_METHOD = $REQUEST_METHOD ? #請(qǐng)求方(GET/POST/PUT/DELETE..)
echo HTTP_ACCEPT = $HTTP_ACCEPT ? ? ? ? #HTTP定義的瀏覽器能夠接受的數(shù)據(jù)類(lèi)型
echo SCRIPT_NAME = $SCRIPT_NAME ? ? ? ? #當(dāng)前運(yùn)行的腳本名稱(包含路徑)
echo QUERY_STRING = $QUERY_STRING ? ? ? #地址欄中傳的數(shù)據(jù)(get方式)
echo REMOTE_ADDR = $REMOTE_ADDR ? ? ? ? #客戶端的ip