電腦玩家Stan
这些萌萌的图片都是女朋友画的嗷(自豪脸)!
思,而不凡

CentOS下L4D2服务器搭建保姆级教程

CentOS下L4D2服务器搭建保姆级教程

导航

前言

L4D2虽然已经发行超过11年了,但是至今仍有很多玩家活跃在游戏中。这是一款真正的被mod续命的游戏,每天都有大量玩家制作的优质mod出现。

由于天朝的网络环境实在是太过复杂,大多数玩家的电脑并不能被分配公网IP。这就导致很多时候想要和朋友一起玩,但是却无法创建一个能被其他人找到并加入的主机。我甚至还遇到过明明两个人离得不远,却因为一个是中国移不动,另一个是中国信不过,导致延迟奇高,僵尸瞬移的情况。因此,选择一台合适的云服务器搭建L4D2独立服务器就显得尤为重要。

准备工作

  1. 一台云服务器,天朝境内最佳,香港次之,新加坡及日韩地区不得已而选之。
  2. SSH工具,如Putty、XShell、Windows Powershell等。
  3. 愿折腾的心,that's the most。

详细步骤

  • 云服务器的购买

如果你是学生党,恭喜你,阿里云学生机(购买传送门)和腾讯云学生机(购买传送门)是你的不二之选。一个月不到10元软妹币,1C2G1M或是1C2G5M的配置带动L4D2的服务端绰绰有余。一次认证,三次购买机会,资金充裕的话建议直接购买1年。

如果你不是学生党,找人代购嘛对不对。实在不行,60-90元软妹币一月,少吃点零食也就省下来了。

云服务器购买过程中可以选择操作系统或是应用,由于个人比较习惯CentOS,所以以下全文都是以CentOS为基础的。在其他系统上安装游戏服务端的教程会看情况补充(咕咕咕)

  • 安装SteamCMD

可以跟着我的步骤走,也可以直接访问SteamCMD开发者帮助页面,按照里面的帮助文档安装。

  1. 检查服务器架构

首先要确定你的服务器的架构。CentOS下验证方法为:在命令行中输入:

arch

就可以得到如下信息:

x86_64

当然,有时也可能得到:

x86armarm64i386amd64

等等架构信息。如果是x86_64、x86、i386或者amd64,继续下面的内容就可以,如果不是这两种架构,这篇文章可以退出了:p。

可选操作:在下方选择你的服务器CPU架构,即可隐藏与你服务器架构不相符的内容,不选择则默认显示所有内容。

  1. 从软件仓库安装

首先尝试在软件仓库直接安装SteamCMD,部分软件源仓库内已经包含了SteamCMD。执行:

CentOS6、7、8通用:

sudo yum install steamcmd -y

仅CentOS8可用:

sudo dnf install steamcmd -y

若出现:

Installed
  steamcmd-*.x86_64                                                                           
Complete!

则说明你的可以直接从软件仓库安装,可以节省大量时间。

安装完成后链接可执行文件:

ln -s /usr/games/steamcmd steamcmd

之后便可以在任何地方使用steamcmd命令开启SteamCMD。

可选操作:选择你是否能从软件仓库安装,将根据情况隐藏对你无用的内容。

  1. 手动安装

如果你的软件仓库没有SteamCMD,则需要进行手动安装。

创建一个非root用户,防止恶意软件通过root权限注入恶意代码,在下方输入框输入你想取的用户名并点击确认(只允许输入英文字母、数字和下划线),后面的教程就会以该用户名作为示例。如不进行自定义,则默认以steam作为新建用户。

sudo useradd -m steam

切换至新用户steam。当前登陆用户为root或者有root权限的用户:

su steam

当前用户没有root权限:

sudo -iu steam

进入用户steam的家目录:

cd

32位CentOS6、7、8通用(仅限前面的架构显示为x86的机器):

sudo yum install glibc libstdc++ -y

仅32位CentOS8可用(仅限前面的架构显示为x86的机器):

sudo dnf install glibc libstdc++ -y

64位CentOS6、7、8通用(仅限前面的架构显示为x86_64amd64的机器):

sudo yum install glibc.i686 libstdc++.i686 -y

仅64位CentOS8可用(仅限前面的架构显示为x86_64amd64的机器):

sudo dnf install glibc.i686 libstdc++.i686 -y

为SteamCMD创建一个安装目录,在下方输入框输入你想要安装的位置(本页面最多支持五级目录,不需要的层级可以留空,更多级目录请自行记忆)并点击确认,后面的教程就会以该目录作为示例。如不进行自定义,则默认以/home/steam/SteamCMD作为SteamCMD安装位置。

/////
mkdir /home/steam/SteamCMD && cd /home/steam/SteamCMD

下载并解压SteamCMD安装文件压缩包:

curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
或
curl -sqL "https://media.st.dl.bscstorage.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
  • 安装L4D2

可选/推荐步骤:安装Screen保持会话后台运行,防止终端会话意外中断导致SteamCMD及后续游戏安装失败:

CentOS6、7、8通用:

sudo yum install screen -y

仅CentOS8可用:

sudo dnf install screen -y

新建一个screen会话,命名为steam,然后运行SteamCMD:

screen -S steam

注意:在运行SteamCMD时可能出现点击退格键无法删除字符而是显示“^H”的情况,此时可以使用Ctrl+退格的组合按键删除字符。

通过软件仓库安装的SteamCMD,可使用以下指令:

steamcmd

通过软件仓库安装的SteamCMD,可使用以下指令:

./steamcmd.sh

为L4D2服务端设置安装目录,在下方输入框输入你想要安装的位置(本页面最多支持五级目录,不需要的层级可以留空,更多级目录请自行记忆)并点击确认,后面的教程就会以该目录作为示例。如不进行自定义,则默认以/home/steam/GameServers/L4D2作为L4D2服务端安装位置。

/////
force_install_dir /home/steam/GameServers/L4D2
login anonymous
//此时需等待登录完成,待终端显示:
//Connecting anonymously to Steam Public...Connectivity test: result=Connected, in progress=0..OK
//Waiting for client config...OK
//Waiting for user info...OK
//后才可继续
app_update 222860 validate

然后耐心等待服务器文件下载安装并验证完成后,即可退出SteamCMD:

quit

当然,也可以选择只使用一条长命令完成上述指令:

对于从软件仓库安装的用户:

steamcmd +login anonymous +force_install_dir /home/steam/GaneServers/L4D2  +app_update 222860 +validate +quit

对于手动安装的用户:

./steamcmd.sh +login anonymous +force_install_dir /home/steam/GaneServers/L4D2  +app_update 222860 +validate +quit

此时,SteamCMD会在下载安装并验证完成后自动退出。

  • 安装额外插件

个人推荐至少安装SourceMod和MetaMod插件,更多的插件可以自行搜索相关教程,或者等我有闲心情了再来更新相关教程(再次咕咕咕)

进入L4D2服务端文件夹,下载SourceMod和MetaMod并解压:

cd /home/steam/GameServers/L4D2/left4dead2 && wget https://sm.alliedmods.net/smdrop/1.10/sourcemod-1.10.0-git6529-linux.tar.gz && tar xvzf sourcemod-1.10.0-git6529-linux.tar.gz && wget https://mms.alliedmods.net/mmsdrop/1.11/mmsource-1.11.0-git1145-linux.tar.gz && tar xvzf mmsource-1.11.0-git1145-linux.tar.gz && wget http://dl.stanma.fun/res/other/l4d2-metamod.vdf -O /home/steam/GameServers/L4D2/left4dead2/addons/metamod.vdf

注:截稿时,SourceMod更新到1.10版本,MetaMod更新到1.11版本。如果你在安装时想要使用最新的版本,请自行前往SourceMod发布页MetaMod发布页查找最新版本并下载。如果有可能我会手动更新上面指令中的最新版本地址。随缘随缘。

  • 配置服务器和插件

首先需要给SourceMod配置一个管理员,用文本编辑器打开管理员配置文件:

vi /home/steam/GameServers/L4D2/left4dead2/addons/sourcemod/configs/admins_simple.ini

使用Steam ID FinderSteam I/O之类的网站,查找到想要赋予管理员权限的Steam账号的32位ID,然后按“i”键或者“insert”键进入编辑模式,在文本最末端加入一行:

"[STEAM_0:1:506233690]"   "99:z"  # 千万不要忘记半角(英文)双引号,该命令是将该用户设置为超级管理员,自己改中括号里面的内容。示例中的ID为博主账号,你们原封不动抄过去的话,就等于把服务器的控制权交给我了。

完成编辑后依次输入"Esc"→":"→"w"→"q"退出并保存。

然后新建一个配置文件,作为服务器启动时默认的配置,在下方输入框输入你想取的配置文件名并点击确认,下面的教程就会以该配置文件名作为示例。如不进行自定义,则默认以server.cfg作为新建配置文件名。

.cfg
vi /home/steam/GameServers/L4D2/left4dead2/cfg/server.cfg

同样地,进入编辑模式,然后输入配置。这里有一份简略版的配置可以拿去用,更详尽的配置文件可以参考此文件,有打算将其翻译并放在博客的计划(又双叒咕咕咕)。

sm_cvar hostname "这里随便填,你想让你的服务器名字显示什么就填什么"
sm_cvar sv_steamgroup ""    //关联steam组,填入Steam组ID可以绑定到特定组,不绑定就留空
sm_cvar sv_steamgroup_exclusive "1"    //1为组私有,0为公有
sm_cvar sv_region "4"    // 服务器区域:0为美东,1为美西,2为南美,3为欧洲,4为亚洲,5为澳洲,6为中东,7为非洲,255为全球
sm_cvar sv_consistency "0"    //一致性校验,1为开,0为关,开了之后要求游戏版本和服务器版本一致才可进入
sm_cvar rcon_password ""    //控制台rcon远程密码
sm_cvar sv_allow_lobby_connect_only "0"    //只能在游戏大厅连接,1为开,0为关,开了之后只能通过新建大厅才能搜索该服务器
sm_cvar z_difficulty "Normal"    //游戏难度:Easy简单,Normal普通,Hard困难,impossible专家
sm_cvar sv_gametypes "both"    //地图模式:coop合作,versus对抗,realism写实,survival生存,scavenge清道夫,both所有模式
sm_cvar mp_gamemode "both"    //游戏模式:coop合作,versus对抗,realism写实,survival生存,scavenge清道夫,both所有模式
  • 开启服务器并连接

在终端中输入:

bash/home/steam/GameServers/L4D2/left4dead2/srcds_run -game left4dead2 -insecure +ip xxx.xxx.xxx.xxx +hostport 27015 -condebug +exec server.cfg -nomaster

注释:

  • "-insecure"选项指不开启VAC反作弊,可以防止误封,如果服务器需要防止玩家作弊,删除此条指令即可。
  • "+ip xxx.xxx.xxx.xxx"指要绑定的IP地址,如果你是阿里云之类的VPS用户,你得到的会是内网IP,必须要在此填写你的内网IP地址,不然服务器启动后只能在局域网模式下工作。获取IP地址的方法很简单,终端输入"ifconfig"后查看网卡“eth0”后面的“inet”字段(不同VPS商家可能名称不一样,但是大同小异)。
  • "+port 27015"非必填项,默认即是绑定27015端口,如果不想被其他人检测到你的服务器,可以改成其他65535以内的端口号,建议使用10000-65535中的端口,以免占用其他重要服务的端口。
  • "-condebug"非必填项,是否开启控制台调试,即在控制台显示当前服务器运行状况,建议保留。
  • "+exec xxx.cfg"加载服务器配置,即之前创建的配置文件。

当然,你也可以选择新建一个比如叫l4d2.sh的文件,把这一长串指令输入进去,以后只需要输入:

./l4d2.sh

就可以直接开启服务器了。

vola,大功告成。

收尾工作

服务器是跑起来了,但是如果没有screen的话,终端一断线,服务器也会关闭。这就体现了screen的好处了:p

一些常用的screen指令如下:

screen -ls               //列出所有的会话及pid
screen -S xxx            //新建一个名为"xxx"的会话
screen -r xxx 或 pid     //恢复名为"xxx"或某个pid的会话
screen -R                //恢复上一次挂起的会话
Ctrl a+d                 //将当前会话挂起到后台
screen -S -X xxx 或 pid  //关闭一个名为"xxx"或某个pid的会话

也就是说,服务器开好之后,按Ctrl a+d将其挂到后台,或者直接关闭SSH连接,都不会让游戏服务器关闭,下次连接之后只需要输入指令就可以继续管理服务器。

打开L4D2客户端,在设置中开启控制台,"~"键呼出控制台,在其中输入:

connect xxx.xxx.xxx.xxx

注意:这里要输入的是你的VPS的公网IP地址,千万不要输成提供商给的内网IP地址了,不然是连不上的。如果嫌IP太长不好记,可以去绑定域名,不过这个就不是我要讲的东西了。

OK,享受游戏吧

# # # #
首页      VPS      CentOS下L4D2服务器搭建保姆级教程

发表回复

textsms
account_circle
email

  • drearry

    大佬,你的证书过期了

    11 月前 回复

思,而不凡

CentOS下L4D2服务器搭建保姆级教程
导航 前言准备工作详细步骤购买云服务器安装SteamCMD检查服务器架构从软件仓库安装手动安装安装L4D2安装额外插件配置服务器和插件开启服务器并连接收尾工作 前言 L4D2虽然已经…
扫描二维码继续阅读
2022-03-19