准备工作
我们可以先对系统进行更新(也可以不做这一步,对后面开服的影响不大):
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账户:
![](https://tc.sfwww.cn/i/2023/02/03/63dc148921257.png)
接下来就可以安装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
然后脚本就会自动拉取文件,我们需要等待一会直到看到如下图的情况:
![](https://tc.sfwww.cn/i/2023/02/03/63dc1489d11dd.png)
直接敲击回车即可,然后LinuxGSM会先对所需的依赖进行检测,出现如下画面:
![](https://tc.sfwww.cn/i/2023/02/03/63dc148acb81c.png)
到了这一步,在CentOS环境下,我们在准备工作中已经手动将所需的所有依赖进行了安装,因此应该会显示全绿并直接进入CSGO服务器的下载安装,而Debian环境下我们没有事先安装依赖,在此处LGSM会自动请求安装依赖,会提示你输入用户csgo的密码,只需要将密码输入,就会开始安装依赖。
当依赖安装完成后,切记要再次输入./csgoserver install才会重新开始CSGO服务器的安装进程。
![](https://tc.sfwww.cn/i/2023/02/03/63dc148b8ef01.png)
看到这样的画面表明已经开始安装SteamCMD,并会安装CSGO服务器。
P.S.某些情况下安装完SteamCMD但未安装CSGO服务器安装进程就会终止,此时请利用XFTP或WinSCP之类的SSH文件传输工具打开/home/csgo/serverfiles路径检查是否已经将CSGO服务器文件安装完成(服务器的文件结构与客户端的类似),若没有安装完成,则在进程最后询问是否安装完成输入N并回车,或不小心输入了Y回车后再次输入./csgoserver install进行安装。
![](https://tc.sfwww.cn/i/2023/02/03/63dc148c55b4d.png)
如上图就是只安装了SteamCMD后安装进程就终止了,我们只要输入n再回车安装进程就会重新开始,这次就会将CSGO服务器进行安装了。然后需要等待一段时间,这个时间的长短取决于你的网速和硬件性能。
趁着这个等待的期间,我们可以先去注册一个GSLT(Game Server Login Token),这是用于CSGO联机服务器的验证凭证。登陆https://steamcommunity.com/dev/managegameservers。需要用到魔法上网,然后登录你的Steam账户,创建一个新的密钥并复制下来记住,待会服务器安装好后会用到。
服务器安装完成后会出现如下画面:
![](https://tc.sfwww.cn/i/2023/02/03/63dc148ce560d.png)
这里是让填写GSLT Token,也就是我们刚才趁服务器安装期间创建的,这里可以填入,也可以选择不填,后面还可以再填。
修改配置文件
LGSM的方便之处在于不仅提供了很多方便服务器管理的功能,还提前将配置文件的模板撰写好了,我们只需要根据需求进行一定的修改就能将服务器开起来。
我们首先修改主配置文件:
cd /home/csgo/lgsm/config-lgsm/csgoserver
cat _default.cfg > csgoserver.cfg
vim csgoserver.cfg
我们进入了vim编辑器对csgoserver.cfg进行修改会看到如下画面:
![](https://tc.sfwww.cn/i/2023/02/03/63dc14949317c.png)
补充关于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
![](https://tc.sfwww.cn/i/2023/02/03/63dc149553688.png)
这个配置文件就主要涉及到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)
然后就会看到如下画面:
![](https://tc.sfwww.cn/i/2023/02/03/63dc14a8647db.png)
我们需要安装的是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://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。否则皮肤插件无效。
功能 | 聊天指令 | 控制台指令 |
换皮肤 | !ws | sm_ws |
换刀 | !knife | sm_knife |
换手套 | !glove | sm_glove |
换探员 | !agents | sm_agents |
meta list命令可以查询已安装的插件
![](https://tc.sfwww.cn/i/2023/02/03/63dc14aa389a2.png)
至此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是一串数字),同时订阅此地图
![](https://tc.sfwww.cn/i/2023/02/03/63dc14ab7da17.png)
打开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的创意工坊后,如下图所示,选择:浏览-->合集
然后点击右侧的创建合集,然后按要求填写信息,最后将创建的合集提交审核
![](https://tc.sfwww.cn/i/2023/02/03/63dc14af76be3.png)
经审核通过的合集,可以在创意工坊中找到,选择:浏览-->订阅的物品-->合集-->项目
点击打开合集,在浏览器地址栏链接里能找到合集的id(id是一串数字)
![](https://tc.sfwww.cn/i/2023/02/03/63dc14b4ef8b3.png)
![](https://tc.sfwww.cn/i/2023/02/03/63dc14b728009.png)
在创意工坊搜索地图,然后订阅并添加到新创建的合集中。
另外还需要记录一个地图的id作为合集的默认地图
![](https://tc.sfwww.cn/i/2023/02/03/63dc14b8d2bb7.png)
在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
2 条评论
更新后不能启动服务器了怎么解决
请参考CentOS-7.6版本的内核问题