CentOS CSGO服务器教程(1)基础准备

前篇

继前篇的预告之后 开始进行CSGO服务器搭建的第一步:基础准备
考虑到公网IP、端口,一般CSGO服务器都部署在云服务器
本文涉及以下几个概念:CentOS、SteamCMD、LinuxGSM、GSLT、SteamAPI
1.服务器系统的选择
1.1 Windows Server
大家一开始都会考虑用Windows Server搭建服务器,但与大家的感性认知不同,Windows由于“过于”人性化,导致其过于臃肿。利用SteamCmd(steam服务端命令行)虽然可以比较间接地搭建CSGO服务器,但搭建后的服务器系统OS开销过大,对服务器使用资源压缩过大,导致实际运行时,服务器的sv、var值较高(我们俗称为跳var、跳sv),对实际游戏会产生较大干扰。另外,由于Windows的计划指令效率过低,也不适宜在Windows上部署自动更新脚本。
Windows做服务器端的优势是后期插件编译时可以直接在服务器端完成编译、导入的步骤。
1.2 Linux
与Windows相对的Linux便没有以上的问题,采用Linux操作系统除了操作不太便利,服务器性能、维护与Windows比都有很好的改善。
以下为部分Linux的发行版:

这里只介绍主流的Linux发行版
◆Debian
Debian的整个系统基础核心非常小,不仅稳定,而且占用硬盘空间小,占用内存小。Debian是适合于服务器的操作系统。但Debian的帮助文档相与技术资料与CentOS比较少。
◆Ubuntu
Ubuntu有着漂亮的用户界面,完善的包管理系统,强大的软件源支持,丰富的技术社区,Ubuntu还对大多数硬件有着良好的兼容性。但Ubuntu的最佳应用领域是桌面操作系统而非服务器操作系统。
1.3 CentOS
笔者采用了CentOS作为CSGO服务器的载体。CentOS是从RHEL源代码编译的社区重新发布版,与商业版RedHat具有相同的渊源。CentOS简约,命令行下的人性化做得比较好,稳定,有着强大的英文文档与开发社区的支持。

考虑到后面采用了LinuxGSM工具部署服务器,而该工具不支持CentOS6,故笔者采用CentOS7作为服务器的镜像。
2.自动化部署工具LinuxGSM
一般情况下,我们需要下载SteamCMD,利用其下载CSGO服务器并自己编写脚本运行、维护服务器,步骤较为繁琐。在Valve开设的CSGO服务器介绍页中提及了LinuxGSM。
“LinuxGSM is command-line tool for quick, simple deployment and management of Linux dedicated game servers.”
https://developer.valvesoftware.com/wiki/Counter-Strike:_Global_Offensive_Dedicated_Servers
LinuxGSM是一个可以迅速、简单维护和管理Linux下专用服务器的命令行工具。利用自动化工具部署可以大大降低我们搭建、维护服务器所需的时间与精力。
https://linuxgsm.com/

3.运维服务器过程中涉及的Linux语法
这部分介绍一些运维服务器以及下载、编译插件所需的Linux命令,需要时查询即可。
命令参考自Linux教程
https://www.cnblogs.com/xuxiuxiu/p/6270494.html
3.0 预备知识
Linux中执行命令时使用的是shell语言,可以理解为与Windows中的cmd(命令提示符)部分类似的工具。Linux中root用户(管理员)的shell前缀为#,普通用户的shell前缀为$。在shell中,如果要输入较长的文件名或命令,可以利用tab补全,减少输入量,例如输入rm csgoserver.cfg时,可以只输入rm cs 然后按tab补全即可(补全前若有多个文件名部分匹配,可以利用↑、↓键进行选择)
3.1 cp命令
该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,功能十分强大。
语法: cp [选项] 源文件或目录 目标文件或目录
举例:
3.2 rm命令
用户可以用rm命令删除不需要的文件或者目录。
语法:rm [选项] 文件
举例:
如果没有使用- r选项,则rm不会删除目录。
3.3 cd 命令
功能:改变工作目录。
语法:cd [directory]
举例:
该命令返回上一层目录
3.4 ls 命令
ls是英文单词list的简写,其功能为列出目录的内容。该命令类似于DOS下的dir命令。
语法:ls [选项] [目录或是文件]
一般直接敲ls直接使用即可
3.5 su命令
这个命令非常重要。它可以让一个普通用户拥有超级用户或其他用户的权限,也可以让超级用户以普通用户的身份做一些事情。普通用户使用这个命令时必须有超级用户或其他用户的口令。
该命令的一般形式为: su [选项] [使用者帐号]
举例:
注意: su root 只是切换了root身份,但shell环境仍然是普通用户的shell
su - root 连用户和Shell环境一起切换成root身份了
3.6 ps命令
显示系统中执行的程序。
语法:ps [选项](一般直接用)
3.7 top命令
ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。
为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。
语法:top [选项](一般直接用)
3.8 yum命令
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器,CentOS中的yum源自于RedHat。yum基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令。
两个常用的yum命令,可以看出yum类似于apt-get、pip、conda:
yum install <package_name>
例如:
yum update <package_name>
3.9 wget命令
wget是Linux中的一个下载文件的工具,wget是在Linux下开发的开放源代码的软件
常用的命令格式:
wget -O <web_url>
3.10 tar命令
tar(tape archive )命令用于备份文件。
tar 是用来建立,还原备份文件的工具程序,它可以压缩、解压缩备份文件、压缩包内的文件。
常用tar参数:
x:解包,解压缩
f:指定文件压缩文件
z:压缩成gz格式
v:显示详细信息
举例:
4.其他所需准备的工具&材料
4.0 说明
除了LinuxGSM外,在连接云服务器时笔者推荐使用PuTTY、WinSCP等工具可视化操作服务器文件,使用VSCode进行cfg、插件的修改。除了基本的工具之外,由于LinuxGSM脚本仓储于Github,我们还需要修改服务器本机的host以快速访问,当然,架设服务器所需的令牌、API密钥也是必不可少的。
4.1 PuTTY
PuTTY是一款开源的连接软件,可以用来远程连接服务器,支持SSH、Telnet、Serial等协议的连接。本教程主要使用SSH连接。
使用PuTTY远程管理Linux的主要优点如下:
◆ 完全免费;
◆ 在Windows操作下运行的都非常好;
◆ 全面支持SSH1和SSH2;
◆ 体积很小,不到1M;
◆ 操作简单,所有的操作都在一个控制面板中实现。
下载地址如下,下载时64位系统请选择64bit版本。
https://www.chiark.greenend.org.uk/~sgtatham/putty/

打开后,在Host Name栏输入IP,Port栏输入端口(默认22),即可远程连接服务器。



4.2 Vim
4.2.1 Vim界面介绍
在shell下使用Vim便可打开包括.txt .ini .cfg等多种文档
举例:

4.2.2 Vim的使用
Vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
用户启用vim后,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
Esc+:wq 保存离开
Esc+:q 不保存离开
Insert 更改输入模式
4.3 WinSCP
WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端,同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件,只要远程设备能SSH连接即可。
本教程使用WinSCP基于以下三个目的
◆复制、粘贴、下载、删除等操作便捷
◆可视化结构更加明显
◆可在线编辑并回传
WinSCP的下载地址如下:
https://winscp.net


4.4 VSCode
对于接触过C/C++的小伙伴,Visual Studio(VS)一定都不陌生。原本这部分代码修改的工作我是选用Notepad++的,但鉴于Notepad++的开发者寡廉鲜耻、嘴脸丑恶,故强推大家使用微软开发另一个轻量编辑器Visual Studio Code(VSCode),如果你已有VS便可不必在下载VSCode,直接用VS默认打开cfg等文档即可。VSCode的下载地址如下:
https://code.visualstudio.com/

由以上三部分的介绍可以看出,WinSCP可以远程打开并便捷编辑文档,VSCode在此处只能本地打开并编辑文档(可以远程配置但没必要),VSCode与WinSCP相比有语法高亮,比较使用,PuTTY打开后的Vim编辑过程比较繁琐,不建议在需要本地状态调整(如net refresh)等条件下使用。
4.5 Hosts(Github)
由于LinuxGSM的脚本仓储于Github,运行LinuxGSM时需从Github自动下载.sh。不修改hosts的情况下,可能会出现如下错误:
所以要通过修改本机hosts,直接固定ip,使文件得以下载
方法一:Vim修改
进入hosts
进入编辑模式,将hosts列表粘贴进入。hosts列表来源及具体内容如下:
https://github.com/ineo6/hosts
修改完毕并保存后,重启服务
或从外部重启云服务器即可
方法二:WinSCP
进入WinSCP,以root身份进入/etc/hosts
打开,将上方的hosts列表粘贴进入,保存
从外部重启云服务器即可
4.6 GSLT(Game Server Login Token)
GSLT,即服务器令牌,没有令牌就无法使服务器出现在公网上。令牌可通过如下网站获取:
https://steamcommunity.com/dev/managegameservers
登录后,选择游戏为730(CSGO),生成令牌,并自己保存好
4.7 SteamAPI密钥(WebAPI)
考虑到部分服务器会使用创意工坊地图,如果玩家原本没有此服务器中的地图,会调用API接口下载,故提前配置好API密钥会避免后期的意外发生。
获取Steam网页API秘钥的链接如下
https://steamcommunity.com/dev/apikey
第一部分基础准备基本结束,本周或下周高概率更新第二部分——服务器的搭建,敬请期待!
2021/12/2