准备工作

我们可以先对系统进行更新(也可以不做这一步,对后面开服的影响不大):

Debian:apt update && apt upgrade -y
CentOS:yum update -y

对于CentOS发行版,我们还要再安装EPEL源:

yum -y install epel-release

完成更新后,由于大多数VPS(即云服务器)所提供的系统镜像都是最小化的,因此我们可以安装一部分软件工具方便后面使用:

Debian:apt -y install vim curl wget tar gzip2 bzip
CentOS:yum -y install vim curl wget tar gzip2 bzip

由于CentOS中需要手动将创建的用户添加进sudo组中才能使用sudo命令,而Debian中不需要,所以使用CentOS的情况下先手动安装CSGO服务器所需的依赖:

CentOS:yum -y install nmap-ncat mailx postfix unzip python3 binutils bc jq tmux glibc.i686 libstdc++ libstdc++.i686

完成软件工具的安装后,我们可以安装连接数据库所需的依赖,方便后面使用MySQL数据库:

Debian:apt -y install lib32z1
CentOS:yum -y install zlib.i686

关于不同发行版使用数据库所需的依赖,论坛已经有大佬整理好了,链接贴在此:https://bbs.csgocn.net/thread-22.htm

然后我们就可以安装宝塔了,宝塔有诸多功能,可以傻瓜式搭建MySQL数据库、网站、FastDL服务器等等:

Debian:wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh
CentOS:wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

不同的发行版安装宝塔的方法在宝塔官网均有介绍,这里也不再赘述:https://www.bt.cn/btcode.html#mysql

完成上面的准备工作后,我们就可以开始安装LinuxGSM了。

安装LinuxGSM

由于LGSM出于安全考虑不允许在root身份下安装使用,因此我们需要创建一个新的用户:

Debian:sudo useradd -m csgo -g sudo -s /bin/bash -d /home/csgo
               sudo passwd csgo
CentOS:adduser csgo
                passwd csgo

这里对使用到的指令做一点补充。useradd -m csgo -g是指创建一个名为csgo的新用户。sudo -s /bin/bash -d /home/csgo指的是为新用户csgo创建一个路径为/home/csgo的专属工作区(即文件夹),而这一步在CentOS中是不需要的,CentOS中创建新用户会自动创建以该用户名为路径的工作区,且路径在home分区下。passwd csgo指的是为名为csgo的用户设置密码。

为用户csgoserver添加管理员权限

vim /etc/sudoers

找到%wheel ALL=(ALL) ALL,在下面一行添加

csgo ALL=(ALL) NOPASSWD:ALL

保存退出

wq!

创建好了新用户后,就可以切换到新用户的环境了:

su - csgo
cd

看到类似这样的提示,则已经切换到csgo账户:

接下来就可以安装LGSM了,由于LGSM的仓库在github上,国内直连会非常缓慢,于是我将其fork到了我个人的gitee仓库上供大家使用,只需要根据我给出的步骤进行安装即可。P.S.可能更新不及时,以后有时间我还会制作一个一键部署脚本,届时我会设置一个能自动更新的gitee/gitcode仓库。

如下步骤没有特殊说明都是Debian和CentOS同理:

wget -O linuxgsm.sh https://gitee.com/AEISet/LinuxGSM/raw/master/linuxgsm.sh && chmod 744 linuxgsm.sh && bash linuxgsm.sh csgoserver

拉取完linuxgsm.sh后,就可以根据指引继续输入:

./csgoserver install

然后脚本就会自动拉取文件,我们需要等待一会直到看到如下图的情况:

直接敲击回车即可,然后LinuxGSM会先对所需的依赖进行检测,出现如下画面:

到了这一步,在CentOS环境下,我们在准备工作中已经手动将所需的所有依赖进行了安装,因此应该会显示全绿并直接进入CSGO服务器的下载安装,而Debian环境下我们没有事先安装依赖,在此处LGSM会自动请求安装依赖,会提示你输入用户csgo的密码,只需要将密码输入,就会开始安装依赖。

当依赖安装完成后,切记要再次输入./csgoserver install才会重新开始CSGO服务器的安装进程。

看到这样的画面表明已经开始安装SteamCMD,并会安装CSGO服务器。

P.S.某些情况下安装完SteamCMD但未安装CSGO服务器安装进程就会终止,此时请利用XFTP或WinSCP之类的SSH文件传输工具打开/home/csgo/serverfiles路径检查是否已经将CSGO服务器文件安装完成(服务器的文件结构与客户端的类似),若没有安装完成,则在进程最后询问是否安装完成输入N并回车,或不小心输入了Y回车后再次输入./csgoserver install进行安装。

如上图就是只安装了SteamCMD后安装进程就终止了,我们只要输入n再回车安装进程就会重新开始,这次就会将CSGO服务器进行安装了。然后需要等待一段时间,这个时间的长短取决于你的网速和硬件性能。

趁着这个等待的期间,我们可以先去注册一个GSLT(Game Server Login Token),这是用于CSGO联机服务器的验证凭证。登陆https://steamcommunity.com/dev/managegameservers。需要用到魔法上网,然后登录你的Steam账户,创建一个新的密钥并复制下来记住,待会服务器安装好后会用到。

服务器安装完成后会出现如下画面:

这里是让填写GSLT Token,也就是我们刚才趁服务器安装期间创建的,这里可以填入,也可以选择不填,后面还可以再填。

修改配置文件

LGSM的方便之处在于不仅提供了很多方便服务器管理的功能,还提前将配置文件的模板撰写好了,我们只需要根据需求进行一定的修改就能将服务器开起来。

我们首先修改主配置文件:

cd /home/csgo/lgsm/config-lgsm/csgoserver
cat _default.cfg > csgoserver.cfg
vim csgoserver.cfg

我们进入了vim编辑器对csgoserver.cfg进行修改会看到如下画面:

补充关于vim编辑器的小知识点,使用vim编辑器打开任何文本文件默认都只是查看,需要按下键盘的i才会进入编辑模式,如果要保存,则按esc然后输入:w。如果要退出,则按esc输入:q。保存并退出则是:wq。

gamemode和gametype的值可以设定游戏的模式,例如:
休闲模式

+game_type 0 +game_mode0

竞技模式

+game_type 0 +game_mode1

军备竞赛

+game_type 1 +game_mode0

爆破模式

+game_type 1 +game_mode1

死亡竞赛

+game_type 1 +game_mode2

由于LGSM已经提前将配置文件的模板设置好了,我们不需要将我这里罗列出来的参数进行复制粘贴,只需要找到对应的cvar并对后面的数值进行修改即可。

P.S.CSGO的服务器和客户端类似都有启动项设置,+game_type 0的意思是服务器启动时自动往控制台输入game_type 0这个指令。

在这个文件中,我们重点需要修改game_type,game_mode,port,defaultmap,maxplayers,tickrate,gslt几个参数。其中port是设置服务器端口。defaultmap是服务器启动时的默认地图。maxplayers是服务器允许加入的玩家数,最大人数是64。tickrate则是服务器的tick设置,通常满十,BHOP之类的模式都建议设置为128tick,值得注意的是,128tick对带宽的需求更大,如果你的服务器只有小水管,那还是建议不要设置成128tick。

P.S.关于服务器带宽的问题,CSGO服务器的带宽需求不是线性的,单一服务器人数越多需要的带宽会越来越大,例如5M可能可以承载8人128tick,但10人128tick就会需要8M带宽了。如果带宽不大,降低tickerate是最佳选择。

对于wsapikey,wscollectionid,wsstartmap的补充说明:

这三个参数和使用创意工坊地图有关,wsapikey是你的SteamAPI,根据配置文件中给出的网址进行查询获取。wscollectionid是你在创意工坊中设置的地图合集的id,wsstartmap则是启动时使用的默认创意工坊地图,需要填入地图的id(数字)。但由于国内网络环境的原因,直接使用创意工坊的地图往往会导致一些奇怪的问题例如换图卡住,所以需要用创意工坊地图的话强烈建议下载下来后上传到maps文件夹中并上传到你的FastDL服务器中。

修改好csgoserver.cfg后,我们再来修改和游戏内有关的一个csgoserver.cfg文件:

vim /home/csgo/serverfiles/csgo/cfg/csgoserver.cfg

这个配置文件就主要涉及到CSGO服务器控制台指令了。

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

然后按下键盘的i键进入编辑模式

sv_setsteamaccount "xxx" //设置服务器登录令牌,将xxx替换为获取的token
hostname "xxx的服务器" //设置服务器名称,游戏内按Tab打开计分板,会在右上角显示
sv_region 4 //设置服务器区域为亚洲
rcon_password "" //在引号内填写远程连接服务器控制台的密码,引号内不填就是不设密码
sv_password "" //在引号内填写客户端连接服务器的密码,引号内不填就是不设密码
sv_maxrate "196608" //设置服务器最大宽带使用量,网上也有建议填最大值786432
sv_minrate "80000" //设置服务器最小宽带使用量
mp_match_end_restart 0 //一局比赛结束后自动重开
mp_autokick 0 //防止自杀次数过多被服务器踢出房间

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

安装插件

LinuxGSM可以很方便的安装CSGO插件所需的Sourcemod平台,若刚刚在使用vim修改配置文件,则路径不在根目录:

cd

回到根目录后,输入:

./csgoserver mi(即mod install)

然后就会看到如下画面:

我们需要安装的是Metamod和Sourcemod,需要注意的是,这里要先安装Metamod后再安装Sourcemod:

metamodsource
待安装完成后,再次./csgoserver mi
sourcemod

安装完成后,在serverfiles/csgo中就会看到一个名为addons的文件夹。

然后我们创建一个最高服务器权限的管理员:

echo '"你的STEAMID" "99:z"' >> /home/csgo/serverfiles/csgo/addons/sourcemod/configs/admins_simple.ini

也可以在/home/csgoserver/serverfiles/csgo/addons/sourcemod/configs/admins_simple.ini 文件中添加sourcemod的admin管理员用户,格式为

“STEAM_1:1:122170925” “z”
“STEAM_1:1:528138521” “z”
“STEAM_1:1:223831180” “z”
“STEAM_1:1:445039989” “z”
“STEAM_1:1:451545623” “z”
“STEAM_1:0:521375560” “z”
“STEAM_1:1:440635526” “z”
“STEAM_1:0:246580798” “z”
“STEAM_1:0:546754288” “z”
“STEAM_1:0:124344904” “z”
//左侧为steamid

获取steamID有两种方法

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

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

枪皮插件

https://github.com/kgns/weapons/releases/latest

PTaH(weapons插件需要PTaH,否则无法正常运行)

https://ptah.zizt.ru/

手套插件

https://github.com/kgns/gloves/

全探员插件 RoyZ汉化版

https://github.com/RoyZ-CSGO/Franug-AgentsChooser/raw/master/csgo_agentschooser-zh-CN.smx

注意:打开sourcemod-1.10.0-git6539-linux\addons\sourcemod\configs\core.cfg,将最后一项"FollowCSGOServerGuidelines" "yes"中的yes改为no。否则皮肤插件无效。

功能聊天指令控制台指令
换皮肤!wssm_ws
换刀!knifesm_knife
换手套!glovesm_glove
换探员!agentssm_agents

meta list命令可以查询已安装的插件

至此CSGO服务器已经安装完成了。接下来还需要对端口进行放行:

su - root
firewall-cmd --zone=public --add-port=27015/tcp --permanent
firewall-cmd --zone=public --add-port=27015/udp --permanent
firewall-cmd --reload
firewall-cmd --list-ports

这一步如果你安装了宝塔,可以到宝塔里的防火墙中进行放行设置。27015是默认的CSGO服务器端口,如果你设置了其他的端口,则这里的27015改为你设置的端口。此外,CSGO是走UDP协议的,实际上可以不放行TCP协议的27015端口,只需要放行UDP协议的即可。如果你使用的云服务器有自带的防火墙(例如腾讯云,百度云,阿里云等),则需要进入到云服务器控制台再进行一次放行。

配置自动更新

crontab -e

添加

*/30 * * * * /home/csgoserver/csgoserver update > /dev/null 2>&1
0 0 * * 0 /home/csgoserver/csgoserver update-lgsm > /dev/null 2>&1

服务器端更新csgo

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

force_install_dir ./csgo_server
login anonymous
app_update 740
quit

然后保存并退出

与steamcmd.sh同路径下创建一个脚本用来更新csgo,命令 :vi csgo_server_update.sh,写入:

!/bin/bash
./steamcmd.sh +runscript update_csgo.txt

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

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

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

LinuxGSM的脚本具备诸多功能,针对CSGO服务器的功能只需要根目录下输入./csgoserver或bash csgoserver就可以看到其具备的所有功能,更多的玩法就靠大家自己去摸索了:

更换地图

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

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

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

开启作弊

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

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

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

保持csgo服务器在后台运行

安装screen

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

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

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

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

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

然后启动csgo服务器

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

需要修改启动项中的两个地方

① 将+mapgroup mg_bomb和+map de_dust2删除,加上+map  workshop/2050926271/1v1.bsp

② 将+game_type 0和+game_mode 1修改成地图支持的模式

注:常用游戏模式

    模式            game_type    game_mode

【休闲模式】        0                    0

【竞技模式】        0                    1

【搭档模式】        0                    2

【军备竞赛】        1                    0

【爆破模式】        1                    1

【死亡竞赛】        1                    2

【练习模式】        2                    0

【自定义模式】    3                    0

【守护模式】        4                    0

【合作精英】        4                    1

【武器专家】        5                    0

【头号特训】        6                    0

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

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

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

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

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

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

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

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

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

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

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

查找新建的合集

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

在创意工坊搜索地图,然后订阅并添加到新创建的合集中。

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

将地图添加到合集

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

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

需要修改启动项中的两个地方

① 删除+mapgroup mg_bomb和+map de_dust2,加上+host_workshop_collection xxx +host_workshop_map xxx -authkey xxx

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

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

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

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

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

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

LinuxGSM常用命令介绍

#LinuxGSM命令均为.sh脚本,故命令开头均为./csgoserver
#以下是常用命令
./csgoserver start #启动服务器
./csgoserver stop #停止服务器
./csgoserver restart #重启服务器
./csgoserver update #更新服务器
./csgoserver console #打开服务器控制台
#注意:关闭控制台需按ctrl+b再按d才可
#以下是不常用命令
./csgoserver force-update #手动使用SteamCMD更新
./csgoserver validate #使服务器不可用
./csgoserver monitor #监视服务器进程
#以下是不推荐使用的命令
./csgoserver details
./csgoserver debug
./csgoserver backup

csgo常用指令

bot_quota 5 //bot的最大数量
bot_quota_mode fill //填充bot的方式是填满
mp_autoteambalance 0 //双方阵营人数自动平衡(0禁用;1启用)
mp_limitteams 0 //双方阵营最大相差人数(0代表不限制)
mp_maxrounds 30 //休闲&竞技模式最大局数设为30局
mp_warmuptime 10 //热身时间改为10秒
mp_warmup_end //提前结束热身
mp_roundtime 60 //死亡竞赛模式每局时间60分钟
mp_roundtime_hostage 60 //人质图每局时间60分钟
mp_roundtime_defuse 60 //休闲&竞技模式每局时间60分钟
mp_freezetime 0 //开局出生原地冻结时间0秒
mp_free_armor 2 //甲(2大甲;1小甲;0无甲)
mp_drop_knife_enable 1 //可以扔掉匕首
sv_full_alltalk 1 //开启全局语音(无论CT、T、死、活、观察者)
mp_round_restart_delay 5 //回合结束的等待时间(休闲默认10秒,竞技默认5秒)
mp_maxmoney 60000 //最高金钱60000
mp_startmoney 60000 //出生金钱为60000
mp_buytime 3600 //开局购买时间3600秒(1小时)
mp_buy_anywhere 1 //在任意地点都能购买武器
mp_respawn_on_death_ct 1 //开启CT死后在家复活(0死了不复活)
mp_respawn_on_death_t 1 //开启T死后在家复活(0死了不复活)
sv_infinite_ammo 1 //弹药及投掷物无限(0关闭1无限弹药不换弹夹2无限备弹)
sv_grenade_trajectory 1 //显示投掷物飞行轨迹
sv_grenade_trajectory_time 6 //投掷物飞行轨迹显示时长6秒
sv_grenade_trajectory_thickness 3 //轨迹线粗细(3加粗)
sv_grenade_trajectory_dash 1 //轨迹线类型(0单色线;1双色线)
sv_showimpacts 2 //显示着弹点(1红蓝2仅红;红/蓝:本地/服务器计算的着弹点)
sv_showimpacts_time 3 //着弹点的显示时长3秒
mp_restartgame 1 //1秒后刷新游戏

注:

① 以上指令直接写在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不限制

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

启动项参数

## Server Parameters | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
startparameters="-game csgo -usercon -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers_override ${maxplayers} +mapgroup ${mapgroup} +game_type ${gametype} +game_mode ${gamemode} +host_workshop_collection ${wscollectionid} +workshop_start_map ${wsstartmap} -authkey ${wsapikey} -nobreakpad"

这里讲解一些有用的参数,命令后面的{xxx}代表参数出现在该命令外(详见csgoserver.cfg)

-usercon 允许从控制台控制服务器

-ip 服务器映射ip地址 云服务器由127.0.0.1映射到公网ip,故此处不需要再映射,为0.0.0.0

+sv_setsteamaccount  添加gslt令牌

-tickrate 服务器的有效帧数,即服务器每秒钟读取游戏的状态次数。常见的tickrate为128,64,demo的tickrate为32。

+servercfgfile 服务器控制文件,该部分将在下一篇文章中提及,这里按下不表

-maxplayers_override 最大玩家人数

+mapgroup 地图组

+game_type  +game_mode

-authkey 此处填写wsapikey,供玩家下载地图

-nobreakpad  保持旧版本插件可用性

此处再补充三个重要参数

-nobots 禁止服务器出现bot

-nomaster 隐匿服务器的公网IP(防止别人随意连接、外部攻击)

+sv_pure 0 全体白名单,避免被拒绝加入服务器

经过以上步骤,设置一个128tick,10人官匹服务器的启动项大致为

startparameters="-game csgo -usercon -nobots -nomaster -strictportbind -ip ${ip}-port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} -tickrate ${tickrate} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers_override ${maxplayers} +mapgroup ${mapgroup} +game_type ${gametype} +game_mode ${gamemode} +host_workshop_collection ${wscollectionid} +workshop_start_map ${wsstartmap} -authkey ${wsapikey} -nobreakpad"
#其中 ip、port、clientport、tv_port、host_workshop_collection、workshop_start_map不需要修改
#gslt、wsapikey填获取到的
#ticktrate=128
#defaultmap=de_dust2
#servercfg=server.cfg
#maxplayer=10
#mapgroup=mg_active
#gametype=0
#gamemode=1

更新时出现的0x202错误

在执行

./csgoserver update

更新时,出现错误,报错信息如下

Error! App '740' state is 0x202

原因是现有服务器大小+更新包大小>服务器磁盘大小

建议对服务器系统进行清理,删除csgo目录下的一些地图文件(map)

CentOS 7.6版本的内核问题

在CentOS 7.6版本下安装LinuxGSM后,后期会出现无法正常更新服务器的情况。经查,是由于Kernel内核版本过低所致(怀疑7.6之前版本也会出现同样问题),需要经过如下步骤解决

yum install kernel
uname -r
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
grub2-editenv list
#之后reboot即可

GSLT失效问题

在很久没有使用CSGO服务器时,会出现启动服务器正常,但连接服务器一直掉线的情况

一种可能的原因是GSLT过期,重新申请GSLT并填入即可

CentOS的常用命令

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

查看磁盘占用情况

查看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/*

查看内存占用情况,命令:free -h

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

使用Ctrl+C退出刷新

注:

-h 取整数显示

-k 以Kb为单位

-m 以Mb为单位

-s delay 刷新间隔

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

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

space 立即刷新

Q 退出

1 切换显示不同CPU的负载率

M 按内存占用排序

P 按cpu占用排序

m 切换内存占用显示形式

t 切换cpu占用显示形式

c 切换显示命令名称和完整命令行

i 不显示闲置(Idle)或无用(Zombie)进程

d 指定更新间隔

注:

VIRT 虚拟内存占用量

RES 物理内存占用量

SHR 共享内存占用量

S 进程状态(S休眠;R运行;Z僵死;N此进程优先级为负数)

%CPU CPU使用率

%MEM 内存使用率

/home/csgoserver/serverfiles/csgo/cfg/csgoserver.cfg

// ************************************************************************** //
//     Version 120719                                                         //
//                                                                            //
// ************************************************************************** //

// .................................. Basic ................................. //

// Hostname - Name of the server.
hostname ""

// RCON - remote console password.
rcon_password ""

// Server password - for private servers.
sv_password ""

// Email - Server admin email.
// Example: sv_contact "email@example.com"
sv_contact ""

// LAN mode - Server is a LAN server; can't connect from the internet. VAC (Valve Anti-Cheat) is disabled in this mode.
// Default: sv_lan 0
sv_lan 0

// Default: sv_cheats 0
// Cheats ON: sv_cheats 1
sv_cheats 0

// Tags - Used to provide extra information to clients when they're browsing for servers. Separate tags with a comma.
// Example: sv_tags "128-tick,deathmatch,dm,ffa,pistol,dust2"
sv_tags ""

// Region - The region of the world to report this server in.
// Default: -1
// 0 - US East, 1 - US West, 2 - South America, 3 - Europe, 4 - Asia, 5 - Australia, 6 - Middle East, 7 - Africa
sv_region -1

// ............................. Server Logging ............................. //

// Enable log - Enables logging to file, console, and udp < on | off >.
// Recommended: log on
log on

// Log bans - Log server bans in the server logs.
// Default: sv_logbans 1
// Recommended: sv_logbans 1
sv_logbans 1

// Log echo - Display log information to the server console.
// Default: sv_logecho 1
// Recommended: sv_logecho 1
sv_logecho 1

// Log file - Log server information in the log file.
// Default: sv_logfile 1
// Recommended: sv_logfile 1
sv_logfile 1

// One file log - Log server information to only one file.
// Default: sv_log_onefile 0
// Recommended: sv_log_onefile 0
sv_log_onefile 0

// Server Hibernation
sv_hibernate_when_empty 1
sv_hibernate_ms 5

// ............................. Server Query ............................. //
// More info at: https://www.gametracker.com/games/csgo/forum.php?thread=91691
host_name_store 1
host_info_show 1
host_players_show 2

// ................................ Ban List ................................ //

// User ban - Server banlist based on user steam ID.
// Recommended: exec banned_user.cfg
exec banned_user.cfg

// IP ban - Server banlist based on user IP.
// Recommended: exec banned_ip.cfg
exec banned_ip.cfg

// Write ID - Writes a list of permanently-banned user IDs to banned_user.cfg.
writeid

// Write IP - Save the ban list to banned_ip.cfg.
writeip

最后修改:2024 年 08 月 21 日
如果我的文章对你有用,请帮助小站能够存活下去( •̀ ω •́ )✧