squad战术小队游戏服务器部署+简易面板部署

您所在的位置:网站首页 怎么用steamcmd开服 squad战术小队游戏服务器部署+简易面板部署

squad战术小队游戏服务器部署+简易面板部署

2023-11-03 11:56| 来源: 网络整理| 查看: 265

部署环境 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

系统环境配置:

yum -y install screen glibc libstdc++ glibc.i686 libstdc++.i686

这里使用脚本的形式安装,创建文件夹并编辑以下脚本:

[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

运行脚本,等待安装完成:

bash ./squad_up.sh

编辑启动脚本:

#!/bin/bash

/home/steam/squad_server/SquadGameServer.sh Port=6301 QueryPort=26301 FIXEDMAXPLAYERS=100 RANDOM=NONE

启动脚本即可运行服务器。

拓展内容:

配置文件描述:

Admins.cfg                     # 权限组[管理员]

Bans.cfg                       # 封禁玩家列表

License.cfg                    # 许可证

MapRotation.cfg                # 地图循环列表

MOTD.cfg                       # 服务器介绍[每日消息]

Rcon.cfg                       # 远程管理配置

RemoteAdminListHosts.cfg       # 远程权限组[管理员]列表

RemoteBanListHosts.cfg         # 远程封禁玩家列表

Server.cfg                     # 服务器配置

ServerMessages.cfg             # 服务器循环[红字]公告

远程管理[Rcon]

文件名:Rcon.cfg

如果您不想使用 远程管理[Rcon],请将密码 [Password=] 设置为空。 注意: 如果IP为 0.0.0.0,将自动绑定到默认的公网IP。

这里推荐一个远程管理工具: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

针对squad的非交互式的使用方法:

mcrcon -H 127.0.0.1 -P 21114 -p passwd -w 1 "AdminBroadcast 消息发送" ok

通过对脚本的编写,可实现一定自动化能力

参考命令(在本地运行):

[root@cd3 mcrcon-master]# mcrcon -P 21114 -p passwd

配置文件参考文档:https://squad.fandom.com/wiki/Server_Configuration/zh

崩溃自动拉起脚本:

#!/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

如果有其他会影响刷新日志的脚本,需要将其他脚本sleep数秒,此脚本在crontab中需要最高优先级,并且每分钟监控执行。

模组添加方法

参考如下,修改游戏更新脚本:

#!/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/

运行后重新启动服务端即可。

认证服申请:http://master.joinsquad.com/dedicatedserverlicense

训练场不可用的解决方法

修改配置文件ExcludedLayers.cfg和ExcludedLevels.cfg

其中ExcludedLayers.cfg是用于禁止的地图精准匹配,ExcludedLevels.cfg则为模糊匹配,使用//注释即可。

地图循环失败的解决方法

检查SquadGame/ServerConfig/Server.cfg

配置项为以下参数

MapRotationMode=LayerList

循环地图会使用文件 SquadGame/ServerConfig/LayerRotation.cfg

简易控制面板部署

简易控制面板这里是通过CGI和RCON来实现的前后端交互能力

前台示例的html代码如下:

           

            TDU-简易控制面板

       

       

           

                立即切换地图

               

                   

                        Anvil_RAAS_v4

                       

                   

                        BlackCoast_RAAS_v4

                   

           

                自助跳边

用户昵称:

               

           

   

       

游戏地图切换后台调用的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/参数1+参数2+参数3+...

注意,因自动UrlEncode编码转换问题,导致无法支持中文;

最终实现效果示例:

击杀查询是通过游戏日志输出的解析实现的

CGI部署

安装httpd:

yum install -y httpd

修改配置:

vim /etc/httpd/conf/httpd.conf

末尾添加内容:

LoadModule cgi_module /usr/lib64/httpd/modules/mod_cgi.so 

LoadModule cgid_module /usr/lib64/httpd/modules/mod_cgid.so

修改内容:(注意路径)

   

AllowOverride None    

Options ExecCGI    

Order deny,allow    

Allow from all

取消注释:

   AddType text/html .shtml    

AddOutputFilter 

INCLUDES .shtml    

AddHandler cgi-script .cgi .sh         //在其后添加.sh,使其支持此结尾的脚本

修改默认端口,防止与Nginx冲突:

Listen 8088

启动httpd

systemctl start httpd

在CGI目录下编写脚本:

[root@cq html]# cd /var/www/cgi-bin/

此处需注意权限问题,CGI目录下的脚本调用是使用的apache用户;需要根据自身需求修改权限。

需要了解的是CGI的环境参数,以方便后续在脚本中直接调用:

此处引用:https://blog.csdn.net/JOKER0707/article/details/101569780

echo SERVER_SOFTWARE = $SERVER_SOFTWARE #服务器软件

echo SERVER_NAME = $SERVER_NAME         #服务器主机名

echo GATEWAY_INTERFACE = $GATEWAY_INTERFACE    #CGI版本

echo SERVER_PROTOCOL = $SERVER_PROTOCOL  #通信使用的协议

echo SERVER_PORT = $SERVER_PORT         #服务器的端口号

echo REQUEST_METHOD = $REQUEST_METHOD   #请求方(GET/POST/PUT/DELETE..)

echo HTTP_ACCEPT = $HTTP_ACCEPT         #HTTP定义的浏览器能够接受的数据类型

echo SCRIPT_NAME = $SCRIPT_NAME         #当前运行的脚本名称(包含路径)

echo QUERY_STRING = $QUERY_STRING       #地址栏中传的数据(get方式)

echo REMOTE_ADDR = $REMOTE_ADDR         #客户端的ip



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3