欢迎光临散文网 会员登陆 & 注册

CS:GO服务器搭建(Linux-CentOS)

2022-06-21 22:28 作者:KOFXIII  | 我要投稿


1 前言

搭建CSGO服务器比较简单,Valve开发者社区wiki也给出了安装指导,也可以使用LinuxGSM更快捷的搭建(本文不是用LinuxGSM)

Valve开发者社区wiki地址:https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Dedicated_Servers:zh-cn

2 准备工作

2.1公网IP的电脑或云服务器,安装CentOS_7.x x64版本

注:

没有公网IP,则搭建的服务器只能在局域网内使用,解决办法是内网穿透

服务器硬盘可用空间最好不低于35G(csgo游戏文件约32G,其他空间预留给游戏更新包、插件、Mod、第三方地图)

建议安装无图形化界面的CentOS以节省资源开销,提高服务器性能

2.2 开启CentOS的27015端口

csgo服务器使用udp协议进行数据传输,默认端口为27015

如果使用的是云服务器,先检查CentOS的防火墙有没有打开,如果防火墙是关闭状态,只需要在服务器安全组中开放27015端口的udp协议即可

注意!注意!注意!

CentOS的防护墙和云服务器的安全组是两个不同的工具,都需要开放相应的端口!,另外如果云服务器还安装了宝塔面板之类的工具,也要检查一下它自带的防火墙功能

如果使用的不是云服务器,可以依次输入下方的命令来打开防火墙27015端口的udp协议(//之后的是注释,不需要输入)

注:更多防火墙相关指令在本文7.5章节

2.3 获取token,这个是将自己的csgo服务器注册到csgo社区服务器所必须的登录令牌,获取方法如下图所示

令牌获取地址:https://steamcommunity.com/dev/managegameservers

获取token

注:

如果没有token,自建服务器只能在局域网内使用

获取新token后,如果没有启动csgo服务器,大概一天后token会自动失效;如果有几个月不启动csgo服务器,token也会自动失效,这个在csgo服务器的启动日志里会有失效提醒

2.4 下载两个基础插件,下载时选择linux版本

SourceMOD 下载地址:https://www.sourcemod.net/downloads.php?branch=stable

MetaMOD 下载地址:http://metamodsource.net/downloads.php?branch=stable

2.5 下载安装windows版本的XshellXftp软件,官网提供的免费版本即可

官网免费版的下载页面:https://www.xshell.com/zh/free-for-home-school

Xshell的用途:通过ssh连接服务器。windows系统安装SSH功能后也可以使用cmd命令行连接服务器

Xftp的用途: 向服务器端传输插件、Mod、第三方地图等文件  如果不喜欢使用linux命令的话,可以用Xftp进行新建文件夹、解压文件、编辑文档等操作

注:

鉴于Xshell破解版以前被曝出过安全隐患,可以用WinSCP代替Xftp,用Putty代替Xshell,B站有WinSCP+Putty的使用教学(或者我的另一篇Debian专栏第7.11章节有介绍)

WinSCP下载页面:https://winscp.net/eng/docs/lang:chs

WinSCP中文语言包下载页面:https://winscp.net/eng/translations.php

Putty下载页面(仅下载putty.exe即可):https://www.putty.be/latest.html

另外也推荐使用FinalShell来代替Xshell和Xfp,FinalShell免费版的功能已足够满足使用要求

FinalShell下载页面:http://www.hostbuf.com/t/988.html

FinalShell相比其他终端的优点是能方便的监控CPU、内存、磁盘和网络等资源的使用情况,但个人感觉它的文件管理界面不如WinSCP好用

3 搭建服务器

3.1 使用Xshell连接到CentOS,以root账户登录后,首先更新CentOS的软件库,命令:yum update

注:如果下载速度非常慢,可能是系统默认的yum源在国外,可以将yum源仓库改为国内的源以提高下载速度,例如:清华源、中科大、华为源、阿里云

3.2 安装SteamCMD所需的依赖库,命令:yum install glibc.i686 libstdc++.i686

注:不同linux版本对应的指令不同,x64和x86的也不同

3.3 在CentOS里,以root管理员身份新增一个普通用户,命令:adduser steam

再修改指定用户steam的密码,命令:passwd steam

在窗口提示New password:之后输入新密码99999(窗口不会显示输入的内容,但其实是有输入的),在提示Retype new password:之后重复输一次新密码99999,看到提示passwd: all authentication tokens updated successfully.代表已修改好密码

然后切换到普通用户steam,命令:su steam

最后切换到用户steam的根目录,命令:cd

注:这里“steam”和“99999”只是示例,可自定义用户名和密码

3.4 将SteamCMD的安装包下载到用户steam的根目录,命令:wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

下载完后进行解压,命令:tar xvf steamcmd_linux.tar.gz

解压完成后删除安装包,命令:rm steamcmd_linux.tar.gz

然后保持当前路径,继续安装SteamCMD,命令:./steamcmd.sh

下载完成后,命令行会变成以Steam>开头

注:

如果提示bash: wget: command not found,则需要用命令su root切换到root账户再安装wget下载命令器,命令:yum install wget -y,安装wget后再切换回steam账户的根目录

接下来的3.5~3.7步骤均在是Steam>后输入命令

3.5 指定服务器端的csgo的安装目录,命令:force_install_dir /home/steam/csgo_server

3.6 匿名登录steam,命令:login anonymous

3.7 安装以及校验csgo,命令:app_update 740 validate

要下载的游戏文件约32G,等下载完后退出steam>,命令:exit

注:

如果下载时报错:Error! App '740' state is 0x202 after update job.如下图所示,原因是安装csgo的磁盘分区可用空间不足,查看硬盘可用空间的方法在本文7.6.2章节。

如果是更新csgo服务器时遇到此报错,检查磁盘分区可用空间充足的情况下,可能是你更新时写错了安装路径,又在系统的其他目录下载了完整的csgo服务器文件

空间不足报错 0x202

如果下载时报其他错误,先在网上搜索报错内容的解决方法,如果搜索不到,可以继续尝试下载或改天再下载,因为大概率是网络问题

3.8 理论上服务器已安装完成,还可以安装SourceMODMetaMOD这两个基础的插件(也可以不安装,直接跳转到本文3.12章节),其他插件依个人需求来安装

注:使用解锁皮肤相关的插件可能违反V社规定,有封号风险

3.9 在CentOS里,打开csgo游戏文件目录,命令:cd /home/steam/csgo_server/csgo/

再输入命令:ls

可以看到一个名为cfg的文件夹,本文3.12章节会用到,现在不用管它

另外再新建一个addons文件夹,命令:mkdir /home/steam/csgo_server/csgo/addons

注:addons文件夹存放的是插件、Mod和第三方地图文件

3.10 以安装SourceMOD为例,按本文2.4章节所述下载到安装包,解压后得到addonscfg两个文件夹,将这两个文件夹里的所有东西通过Xftp传输到服务器端对应的addonscfg

同样的操作也适用于安装MetaMOD

注:传输过程中提示文件重复,选择全部覆盖

3.11 有了插件,就需要设置管理员权限来管理插件

在CentOS里,修改插件的配置文件,命令:vi /home/steam/csgo_server/csgo/addons/sourcemod/configs/admins_simple.ini,按下键盘的i键进入编辑模式,将光标移动到文档末尾,按下键盘的Enter键另起一行,写入:

"STEAM_x:x:xxxxxxxxx" "99:z"

写入后按下键盘的Esc键,再输入:wq即可保存并退出

注:

这里的STEAM_x:x:xxxxxxxxx要替换为自己的steamID

99:z指的是权限大小,一般不需要调整权限,照抄就行

如果还要添加更多管理员,再另起一行按同样格式进行书写

获取steamID有两种方法

方法一:打开csgo进入任意地图,在控制台输入status就会显示玩家的steamID

方法二:在浏览器中登录steam网站,打开个人资料页面,将地址栏的网址复制到查询网站的搜索框即可搜索出steamID,SteamID查询网址:https://steamid.io/lookup/

查询steamID

3.12 在CentOS里,在cfg文件夹里新建一个server.cfg文件,命令:vi /home/steam/csgo_server/csgo/cfg/server.cfg

然后按下键盘的i键进入编辑模式,写入以下内容

写入后按下键盘的Esc键,然后输入:wq即可保存并退出

注:以上是基础的开服配置指令,更多指令在本文7.2章节

3.13 启动csgo服务器

在CentOS里,打开srcds_run文件所在目录,指令:cd /home/steam/csgo_server

接下来有两种方式启动csgo服务器

方式一: 使用srcds_run配合一系列启动项来启动csgo服务器,在Xshell中输入命令:

稍等片刻,看到GC Connection established for server version 1481, instance idx 1

,代表csgo服务器启动完成

方式二: 写一个包含启动项的启动脚本,命令:vi /home/steam/csgo_server/start.sh,按下键盘的i键进入编辑模式,写入:

写入后按下键盘的Esc键,再输入:wq即可保存并退出

然后给脚本赋予可执行权限,命令:chmod +x start.sh

最后通过此脚本启动csgo服务器,命令:./start.sh

注:

配置服务器27015端口的方法在本文2.2和7.5章节

 不同服务器供应商的安全组设置方法略有不同,请自行在网上搜索教程

关于启动项的说明在本文7.3章节

服务器端更新csgo的方法在本文7.4章节

3.14 关闭csgo服务器,在服务器端输入命令:quitexit

4 日常使用

4.1 启动csgo服务器,启动方法在本文3.13章节

4.2 玩家打开csgo,在控制台输入连接指令:connect xx.xx.xx.xx:27015;password xxx

注:

这里将xx.xx.xx.xx替换为服务器的公网IP,同时将27015替换为启动项里指定的端口号将xxx改为自定义的密码

第一次连接成功后电脑会记住密码,以后的连接指令里可不写;password xxx

如果没有设置服务器连接密码(见本文3.12章节),连接指令里可以不写;password xxx

如果使用的是默认的27015端口,连接指令里可以不写:27015

客户端连接服务器失败检查方法在本文7.1章节

4.3 服务器安装SourceMOD和MetaMOD插件并且已经设置过管理员权限后,有权限的玩家可以按Y打开游戏内聊天框,输入指令打开插件的功能菜单,指令:!admin/admin

注:如果输入!admin没有出现菜单,可能的原因有

!admin指令中要使用英文感叹号

插件没安装好,启动服务器后在Xshell中查询所有已安装的插件,命令:meta list

查询已安装的插件

没有设置管理员权限,按本文3.11章节的步骤进行配置

4.4 更换地图

第三方地图的使用方法在本文第6章节,以下是官方地图的换图方法

方法一: 启动csgo服务器后,在Xshell输入map 地图名格式的换图指令,示例:map de_dust2

方法二: 启动csgo服务器后,在Xshell输入changelevel 地图名格式的换图指令,示例:changelevel de_dust2

方法三: 已安装SourceMOD和MetaMOD插件并且有管理权限的玩家可以按Y打开游戏内聊天框内,输入!admin!map打开菜单更换地图

4.5 开启作弊

方法一: 启动csgo服务器后,在Xshell输入命令:sv_cheats 1

方法二: 有管理权限的玩家在游戏内控制台输入指令:sm_cvar sv_cheats 1

注:大部分的csgo指令需要在服务器端输入(即Xshell里输入)才能生效,少部分指令例如noclip可以在客户端控制台里使用,多尝试几次就能发现规律

4.6 保持csgo服务器在后台运行

4.6.1 安装screen

Screen是能防止网络异常中断同时控制多个远程终端窗口的程序,使用screen启动csgo服务器的好处是即使断开Xshell与CentOS的远程连接,csgo服务器仍继续运行

在CentOS里安装screen,命令:yum install screen

注:如果安装时提示权限不足,需切换到root账户后再安装screen,命令:su root

4.6.2 新建一个托盘用来运行csgo服务器,命令:screen -S cs

注:cs是托盘名称,可按自己喜好来命名。为防止多个托盘名字相同,系统会给托盘名称前面添加id,示例:4764.cs

4.6.3 然后启动csgo服务器,启动方法在本文3.13章节

4.6.4 如有需要,可将csgo服务器程序切换到后台继续运行,方法:键盘上先按Ctrl+A,再按Ctrl+D

4.6.5 打开指定托盘,命令:screen -r cs

注:如果只有一个托盘,可简化命令:screen -r

4.6.6 查看现有的所有托盘,命令:screen -ls

4.6.7 关闭指定托盘,命令:screen -S 4764.cs -X quit

4.6.8 查看screen的所有指令,命令:screen -h

5 服务器设置128tick

5.1 参考本文3.13章节,修改csgo服务器启动项,将-tickrate 64改为-tickrate 128

5.2 验证128tick是否设置成功

客户端打开网络参数信息,控制台指令:net_graph 1

看到tick:128.0,即代表服务器是128tick

注:

若看到up:64.0/scmd:64.0/s,则需要玩家在控制台输入指令修改为128.0/s,控制台指令:cl_updaterate 128;cl_cmdrate 128

网络参数的解释

net_graph

第一行

fps:游戏帧数

var:电脑输出帧速率差,与玩家自己电脑硬件配置有关,此值越小越好

ping:客户端与服务器之间的延迟,此值越小越好

up:客户端从服务器下载数据的频率,此值应等于服务器的tick值

第二行

loss:服务器向客户端发送数据的丢包率,正常值为0%

choke:客户端向服务器发送数据的丢包率,正常值为0%

cmd:客户端向服务器上传数据的频率,此值应等于服务器的tick值

第三行

tick:服务器与客户端之间每秒交换数据的频率

sv:服务器处理每tick的用时,此值越小越好。当字体颜色变红时代表服务器性能不足,玩家会有卡顿感

var:服务器处理每tick的速度差,此值越小越好当字体颜色变红时代表服务器性能不足,玩家会有卡顿感

online:代表当前使用的是在线服务器

如果网络参数信息影响视线,可以关闭,控制台使用指令:net_graph 0

也可以使用下方的指令调整其显示位置和字体大小

net_graphpos 3 //此参数控制其在水平方向的位置(1偏右、2居中、3偏左

net_graphheight 1030 //此参数控制其在垂直方向的位置,与电脑屏幕显示分辨率有关

net_graphproportionalfont 0.9 //此参数控制字体大小

6 添加第三方地图到服务器(创意工坊地图)

6.1 方法一(适合添加单张地图)

6.1.1 使用浏览器登录steam,在网页上方的菜单依次选择:社区-->创意工坊

在此页面上搜索栏输入游戏名来切换到csgo的创意工坊,csgo的全称是:Counter-Strike: Global Offensive

切换到csgo的创意工坊

6.1.2 切换到csgo的创意工坊后,页面内的搜索栏搜索地图名,打开地图详情页后在浏览器地址栏看到地图id(id是一串数字),同时订阅此地图

从浏览器地址栏中查找map的id

6.1.3 打开csgo游戏,等待游戏自动下载已订阅的地图。然后从STEAM创意工坊地图中打开此地图,确认是否能进入地图,同时记下此地图支持的游戏模式

查看地图所支持的游戏模式

6.1.4 打开csgo的创意工坊地图目录,一般情况下路径应该是:Steam\steamapps\common\Counter-Strike Global Offensive\csgo\maps\workshop

在workshop文件夹里可以找到与订阅地图相同id的地图文件夹(假设第三方地图id是2050926271,那么地图所在文件夹的名字就是2050926271)

6.1.5 打开Xftp并连接到CentOS,打开路径/home/steam/csgo_server/csgo/maps,在这里新建一个workshop文件夹,并把2050926271文件夹传输到workshop中

6.1.6 参考本文3.13章节,需要修改启动项中的两个地方

改动一:+mapgroup mg_bomb+map de_dust2删除加上+map  workshop/2050926271/1v1.bsp

改动二:+game_type 0+game_mode 1修改成地图支持的模式

注:

常用游戏模式

如果不清楚要用哪种模式,可以先试试自定义模式

关于游戏模式,可参考V社wiki文档,地址:https://developer.valvesoftware.com/wiki/CS:GO_Game_Modes

修改启动项时一定要注意空格的数量,例如连续的两个空格会导致空格之后的启动项失效

6.1.7 修改完启动项后就可以启动csgo服务器了,注意所有要连接csgo服务器的玩家也要在创意工坊订阅此地图,否则会连接不到服务器

6.2 方法二(适合添加多张地图)

6.2.1 使用浏览器登录steam,在网页上方菜单依次选择:社区-->创意工坊

在此页面内的搜索栏搜索Counter-Strike: Global Offensive来切换到csgo的创意工坊

6.2.2 切换到csgo的创意工坊后,如下图所示,选择:浏览-->合集

然后点击右侧的创建合集,然后按要求填写信息,最后将创建的合集提交审核

在csgo的创意工坊里创建合集

6.2.3 经审核通过的合集,可以在创意工坊中找到,选择:浏览-->订阅的物品-->合集-->项目

点击打开合集,在浏览器地址栏链接里能找到合集的id(id是一串数字

查找新建的合集
从浏览器地址栏里查找合集的id

6.2.4 参考本文6.1.2章节,在创意工坊搜索地图,然后订阅添加到新创建的合集

另外还需要记录一个地图的id作为合集的默认地图

将地图添加到合集

6.2.5 在CentOS中,把合集中的全部地图id添加到地图列表maplist.txt中,命令:vi /home/steam/csgo_server/csgo/maplist.txt

同理,将合集中的全部地图id添加到地图循环列表mapcycle.txt中,命令:vi /home/steam/csgo_server/csgo/mapcycle.txt

6.2.6 参考本文3.13章节,需要修改启动项中的两个地方

改动一: 删除+mapgroup mg_bomb+map de_dust2加上+host_workshop_collection xxx +host_workshop_map xxx -authkey xxx

注:需分别将3个xxx替换为合集id默认地图idAPI密钥

API密钥获取地址:https://steamcommunity.com/dev/apikey

改动二:+game_type 0+game_mode 1修改成默认地图所支持的模式,参考本文6.1.6章节

6.2.7 修改完启动项后就可以启动csgo服务器了,服务器启动时会自动从创意工坊中下载合集中的所有地图(这是方法一和方法二的最大区别)

另外有权限的玩家可以按Y聊天框输入!admin!map更换合集中的地图(一定要完成本文6.2.5章节中的两个添加地图id的操作)

注:

若使用!map切换地图时,可选列表并没有合集中的地图,可能是因为服务器从创意工坊下载地图比较慢,需要等它下载完才能切换地图

关于创意工坊合集的详细信息,请参考V社官方社区的指导文档:https://developer.valvesoftware.com/wiki/CS:GO_Workshop_For_Server_Operators:zh-cn

7 补充说明

7.1 客户端连接不到服务器的原因

检查点一: 连接服务器的指令

检查ip地址是否正确?

检查是否含有中文标点符号?

CentOS的防火墙是否已开放启动项里指定的端口?(如果防火墙是关闭状态,可用理解为已开放全部端口)如果是云服务器,还需要在安全组里打开端口(有的云服务器厂家会把安全组也叫做防火墙)

再次提醒:CentOS的防火墙和云服务器的安全组是两个不同的东西,都需要开放端口

客户端连接时所写的端口号与服务器端指定的端口号是否一致?

检查服务器是否有设置连接密码?

服务器连接密码是否正确?

检查点二: 地图文件

检查服务器端开启的是哪张地图,客户端的maps文件夹(或workshop文件夹)中是否有相同版本的地图,最好是客户端在离线模式下单独测试能否打开并进入此地图

检查点三:csgo版本

服务器端的csgo需要手动执行更新命令,服务器端的csgo与玩家电脑上的csgo游戏版本不一致就会出现此问题。有自动更新csgo服务器的方法,有需要的请自行在网上搜索

检查点四:csgo服务器没有启动成功

启动csgo服务器成功的情况下,应该能看到最后两句话(见下图),第一句是说VAC有没有启用,第二句意思不太清楚,大概是说已启动哪个版本号的服务器,总之见到这两句才可认为服务器已启动成功

csgo服务器启动成功

反之,如果启动不成功就会出现各种各样的情况,就需要从启动日志里找报错的提示,然后在网上搜索解决办法。

启动出错的因素很多,我遇到的情况有以下三种:

 csgo服务器端连接不到steam的(启动日志里可能会有连接不到server之类的语句,还有提示只能局域网使用的语句,差不多就能判断是连接不到steam造成的,这种网络问题就看运气了,只能尝试重启csgo服务器)

因为linux系统更新或csgo服务器更新导致某些依赖库缺失的(这种在启动日志里很容易找到提示是丢失了什么文件或什么文件加载失败,在网上搜索怎么重新安装此文件即可,重新安装时要注意此文件是否适用你服务器系统,如debian系或redhat系,还有是否有32位和64位的区别)

长时间未启动csgo服务器,server.cfg里填写的那个token会自动失效(这种启动日志里有明显提示语句,重新申请一个token即可。

7.2 csgo常用指令

注:

以上指令直接写在server.cfg中可能不会生效,建议另外新建一个cfg文件,然后在服务器端使用exec指令加载新的cfg文件

关于bot的数量限制,优先级最高的是csgo服务器启动项中的-maxplayers_override 10,其次是bot_quota 5

例如启动项限制人数最多为10,而bot_quota值为15,真人玩家有3个,填充bot的方式是填满,那么最终地图中应该是3个真人玩家和7个bot

另外如果想让阵营一方为1个真人+2个bot,另一方为2个真人+4个bot,应禁用人数自动平衡,然后将最大相差人数设为大于等于3的值,或设为0不限制

获取物品武器的指令可参考另一篇专栏里的5.6章节

如需了解其他的可用指令,可参考V社的wiki,网址:https://developer.valvesoftware.com/wiki/List_of_CS:GO_Cvars

7.3 服务器启动项说明

其他可选的启动项

注:常用地图组名称

7.4 服务器端更新csgo

7.4.1 在CentOS里,打开路径/home/steam,找到steamcmd.sh(如果没有,则按本文3.4章节的步骤重新下载并解压),同路径下创建一个脚本用来更新csgo,命令 :vi csgo_server_update.sh,写入:

然后保存并退出,再给脚本赋予可执行权限,命令:chmod +x csgo_server_update.sh

7.4.2 当客户端的csgo更新时,服务器端的csgo也需要更新

在服务器端先打开路径/home/steam,再运行此脚本即可,命令:./csgo_server_update.sh

7.5 CentOS开启防火墙端口的相关命令

7.6 CentOS的常用命令

7.6.1 查看CentOS版本,命令:cat /etc/redhat-release

7.6.2 查看CentOS磁盘占用情况

查看CentOS的磁盘整体占用情况,命令:df -hl

查看csgo服务器的整体大小:du -h --max-depth=0 /home/steam/csgo_server

查看csgo服务器中workshop文件夹的大小,命令:du -h --max-depth=0 /home/steam/csgo_server/csgo/maps/workshop

查看csgo服务器中workshop里每个地图文件的大小,命令:du -h --max-depth=0 /home/steam/csgo_server/csgo/maps/workshop/*

7.6.3 查看CentOS内存占用情况

运行free命令:free -h

每5秒刷新一次内存占用情况,命令:free -h -s5

关闭每5秒刷新方法:键盘Ctrl+C

7.6.4 查看CentOS资源占用情况,命令:top

使用键盘按键可以改变显示形式:



CS:GO服务器搭建(Linux-CentOS)的评论 (共 条)

分享到微博请遵守国家法律