搭建前的准备
需求
- 一个装有CentOS的服务器(我的是阿里云)
- 公网IP
- 最好延迟比较低(因为如果延迟高玩不了,卡爆)
- 能够满足需求人数同时连接的带宽(比如我自己的小服务器大概最多也才十个人一起玩,所以我的带宽5M就够了)
为你的服务器注册Steam Token
如果你只想让你的CSGO服务器运行在局域网(LAN)内,那么可以直接跳到下一部分
由于V社规定,如果你想让别人通过服务器的公网(WAN)IP连接的话,是需要用你的Steam账号注册获得这个Token的。否则你的服务器将只能在局域网(LAN)中使用
注册地址:
https://steamcommunity.com/dev/managegameservers
打开后为CSGO添加一个Token(游戏代码730)并且保管好这个Token,不要告诉别人,后面要用到。
搭建
下载 SteamCMD
__SteamCMD 是 Valve 的一个 steam cmd 客户端__,我们这里通过它来下载CSGO服务器
首先创建一个用户 steam,避免root(超级权限)的直接执行。
1 | useradd -m steam // 添加一个名为steam的用户 |
接着创建一个update.txt自动更新cs的脚本
1 | vim update.txt // 使用vim创建update.txt文本文档 |
服务器配置
steamcmd搞定之后我们还需要下载Sourccemod以及metamod来支持一些插件
网址
https://www.sourcemod.net/downloads.php
http://www.metamodsource.net/downloads.php?branch=stable
把解压得到的addons跟cfg文件夹放到/home/steam/csgoserver/csgo/下 (如果不会传文件的话可以网上查一下)
设置sourcemod的管理员及权限
首先cd到 addons/sourcemod/configs 目录
还是使用vim 打开admins_simple.ini文件
格式:
“STEAMID” “权限” “管理员密码(可选)”
“STEAM_1:1:59886493” “99:z”
随便接着随便进一个服务器 然后控制台打status获取你的SteamID
后面的STEAM_X:X:XXXXXX就是你的STEAMID
权限等级:
1 | "a"//预留通道 |
创建启动服务器时自动运行的cfg配置文件
cd到csgoserver/csgo/cfg文件夹新建一个cfg文件比如autoexec.cfg
1 | hostname "你的服务器名称" |
最后,如果你的服务器是需要改参数的,请新建一个文件叫 server.cfg(具体参数可以看文档,连接贴在下面了),这样每次在加载模式后会修改参数。
脚本启动
cd到/home/steam/csgoserver目录下
使用vim创建一个名字为run.sh的
1 | vi run.sh |
写入以下内容
1 | ./srcds_run -noipx -nohltv -steam_dir ../steamcmd -steamcmd_script ../steamcmd/update.txt -game csgo -console -usercon +game_type 0 +game_mode 1 +mapgroup mg_allclassic +map de_dust2 -tickrate 128 +sv_setsteamaccount 将注册好的steam token替换掉这段文字 -net_port_try 1 |
下面是从官方文档中复制下来的不同模式的命令,可以根据game_type以及game_mode来决定默认的模式
休闲模式
+game_type 0 +game_mode 0
竞技模式
+game_type 0 +game_mode 1
军备竞赛
+game_type 1 +game_mode 0
爆破模式
+game_type 1 +game_mode 1
死亡竞赛
+game_type 1 +game_mode 2
自动更新服务器
使用 crontab 设置自动更新
crontab -e
0 0 * * * /home/steam/steamcmd/steamcmd.sh +runscript update.txt
其他服务器启动项
-maxplayers_override 最大玩家数
-noipx 关闭IPX协议的支持
-nohltv 关闭gotv
-nobots 关闭bot功能! csgo如果想开某些不需要bot的服务器要加这个参数不然有人换队bot还是会占位!
-tickrate 128 设置服务器tick为128 满十必备
-authkey 如果要使用steam web API要用到这个启动项 apikey在这里申请:http://steamcommunity.com/dev/apikey
开启服务器
cd到/home/steam/csgoserver目录下, 输入./run.sh来运行刚刚我们创建的启动脚本.
如果出现下图中类似的说明服务器已经开启
接着开CSGO终端输入connect ip地址 (如果有密码的话,格式是connect ip:端口;password 密码)
如果连不上的话记得检查端口27015是否是打开状态
踩到过的坑
- no-package-lib32z1-lib32ncurses5-lib32stdc6错误.
- 输入 sudo yum install libstdc++*
- steamclient.so.错误 显示无法找到steamclient.so
- ln -s steamcmd/sdk32/steamclient.so steam/sdk32/steamclient.so
Reference(参考):
- https://blog.csdn.net/orangleliu/article/details/8869626
- https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Dedicated_Servers#Downloading_the_CS:GO_Dedicated_Server
- https://kotori.net/2018/11/18/centos-%E6%90%AD%E5%BB%BAcsgo%E6%9C%8D%E5%8A%A1%E5%99%A8/
- https://wiki.alliedmods.net/Adding_Admins_(SourceMod)
- https://stackoverflow.com/questions/35271553/no-package-lib32z1-lib32ncurses5-lib32stdc6-available-in-centos
- https://www.globo.tech/learning-center/install-counter-strike-go-server-centos-7/
- http://csgo.gamersky.com/201709/952256_3.shtml
- https://blog.csdn.net/u012643122/article/details/48032327
- https://wiki.alliedmods.net/Managing_your_Sourcemod_installation
- https://steamcommunity.com/app/445220/discussions/0/143388511227851134/