帖子写的比较长,但也是希望能帮到有需要的同学。
前情提要
搭建CSGO社区社区服务器使用一些娱乐插件的时候经常会遇到客户端需要下载额外资源的情况(例如音频文件、地图文件等等)。而CSGO服务端默认情况下是不具备上传服务器文件的功能的,因此我们就需要搭建FastDL下载站来解决客户端资源下载的问题。
然鹅,大多数同学搭建服务器都是使用的腾讯云、阿里云之类的VPS云服务器,通常这些服务器的硬盘空间和带宽水平仅能满足服务器基本需要(如果你财大气粗当我没说)。而且搭建下载站又在一定程度上需要拥有搭建网站的技能和经验,这些都成为搭建社区服与朋友娱乐的同学们搭建下载站的门槛。
关于如何搭建FastDL下载站的方法网上一搜一把,本站也有相应的教程。而本帖旨在提供一个新的思路帮助财力、技能不能够满足搭建独立下载站需求的同学解决客户端资源下载的问题,同时这一方法也是我本人搭建的服务器目前在使用的一种方法。
具体操作
众所周知,Sourcemod的插件大多在github上能够找到源代码。而github的特点就是开源代码托管服务,这也就意味着我们能够直接下载github上插件作者的源代码仓库中的特定文件,而这也正是FastDL所需要的。因此基于这个条件,善于白嫖(bushi)的劳动人民就想出了一条新的FastDL思路,便是在github上注册账号并创建仓库,并将需要的文件上传到github的仓库里,然后将下载链接添加进服务器配置文件中就可以实现几乎零成本实现FastDL。
以我本人的github仓库举个栗子:
根据对应的资源在github仓库中创建文件夹路径,然后将文件上传。仓库创建好之后那么问题来了,downloadurl如何获得。事实上FastDL所需要的downloadurl和我们平时使用下载工具使用的downloadurl是一样的(本质上CSGO客户端是利用浏览器解析进行下载的),所以我们只需要随便打开其中一个上传好的资源就能看到一个“view raw”的按钮,点击之后我们的浏览器就会跳转到github官方的一个CDN加速服务器网站,如下图所示:
我们只需要将main后面的所有内容都删除,只保留前面的内容并复制下来,添加进服务器配置文件里保存即可,比如:
或者我们在点开文件可以看到这样一个界面:
在这里右键Download,选择复制链接地址,然后我们就能得到一个这样的链接:
这个链接我们复制进浏览器的地址栏中回车也是会进行下载的,也就意味着这是一个downloadurl,那么我们只需要像前面的方法一样删除后面的内容:
添加进服务器配置文件中即可。
初级优化思路
至此,利用开源代码托管网站零成本(baipiao)搭建FastDL下载站的思路已经阐述完毕。但还有一个非常致命的问题,gayhub的服务器在漂亮国,而漂亮国和我们相隔一整个太平洋,这也就意味着我们直连gayhub非常不稳定,而且下载会非常慢,同时根据第一个方法获得downloadurl的同学会发现那个链接会打不开。即使我们自己在测试时能够下载,也不能保证其他进入服务器玩的人能够下载。
那么这里提供一个利用CDN服务进行加速的方法,利用jsdelivr进行加速。配置方法:https://cdn.jsdelivr.net/gh/你的github账号/你的仓库名字
举例:
利用jsdelivr的公开cdn加速服务,下载文件的速度已经相当不错。这个方法虽然有效却仍然不稳定。由于是公开服务,而且jsdelivr在国内的节点也并不多,遇到流量高峰期的时候下载速度甚至比直连还慢(实测23M的文件下载了快一个小时)。苦于没有条件搭建网站,服务器的带宽也不大,github的网站又在国外,体验极差,迫使我又开始了新一轮的研究。
进阶优化思路
首先类似github的网站有很多,比如git,gitlab等等。但知名的大多是国外的,依然不能解决根本问题。而解决下载速度和稳定性的问题核心思路是寻找国内的服务,无论是CDN服务还是代码托管服务。而我最先找到的国内代码托管服务是国内知名度比较高的码云,即开源中国旗下的gitee.com。但码云不知什么原因mp3文件无法下载,然后我又尝试了coding(腾讯旗下)。coding虽然能够下载mp3文件但实际测试过程中发现coding可能限制了单位时间内访问服务器的次数,经常会有些文件能下载下来而有些不能。到了这一步我几乎走投无路,只能花时间研究国内的CDN服务,而我又发现国内几乎没有类似jsdelivr的开放CDN服务,要么是收费的CDN服务,要么是js静态资源库,主要是提供给网站加速的。
就在问题看似无法解决的时候,我偶然间发现CSDN旗下也有代码托管服务,而这个网站叫做gitcode.com。
gitcode完美解决了所有问题,不仅没有码云不能下载mp3文件的问题,也不会出现coding那种会有一部分文件下载不下来的问题。而且下载速度还比较可观。而且码云只提供5GB的总仓库空间,coding只提供2GB的仓库空间。不过gitcode我并没有看到对仓库空间有限制,也许有但我也不确定。所以利用开源代码托管服务实现FastDL功能建议是在文件体积较小,CSGO服务器流量也比较小的情况下。
获得gitcode的下载链接原理和前面详细介绍的github单个文件下载链接的方法类似,这里就不赘述了。大家可以自行尝试。
向服务端配置FastDL
有了downloadurl链接之后,向服务器配置文件里添加sv_downloadurl即可(这一步和普通的FastDL搭建方法一样)。如果是用LinuxGSM搭建的服务器则服务器配置文件是csgoserver.cfg,其余方法搭建的大家可以自行研究,原理上都是一样的。
P.S.最后还是要强调一下,虽然是免费服务,但不建议大家滥用哦。并且github这类网站的在线上传有限制单个文件的大小,使用的时候要注意一下。