需求分析
在搭建游戏服务器物理机的时候,最重要的是明确需求。其实无论做什么,做需求分析都是很重要的一件事,首先它能让你明白你所需要购买的元器件的性能下限,亦或者能让你知道你需要从哪里去获取你所需要的信息或者是知识。其次,需求分析能够给你指明相对于无脑堆砌的另一条路径:超高性价比,这在你的预算有限时至关重要。
下面我们来对一台游戏服务器进行需求分析。首先当今时代大部分独立游戏或者是联机的合家欢游戏都是使用单核进行运算,比如我比较爱玩的Minecraft,就是单核运行的(包括他的服务端)。因此我们首先要保证单核的性能满足需求,这首先要求的是CPU的单核主频,其次包括三级缓存等其他指标。在这里我选择的方向是:
- 保证该CPU代数距离目前最先进代数没有太久远的代差,比如目前性能最强的英特尔处理器为14代处理器,那么在现在阶段选择6代或者7代的CPU作为游戏服务器的核心显然是过于古老的,尽管它会很便宜,但是其潜在的翻新和接近报废的风险会相当高。其次,我也不会选择目前最先进的处理器,原因是:太贵了!对于一台用于跑服务器而不是客户端的电脑来说,选择最先进的处理器会导致性价比急剧下降,因此也不予以考虑。
- 首先保证CPU的主频达到要求,这里需要提一句的是,很多i5系列的CPU的主频甚至会比同代的i9系列CPU的主频更高,因此并不一定要去追求i9系列的处理器,相反,选择i5系列的处理器可能会让部分场景的运行更稳定。
- 虽然我之前提到单核性能是首先考虑的性能指标,但是这并不意味着我们完全不考虑多核性能。在多线程日益普及的今天,很多游戏也进行了多核优化,虽然很多时候优化并不理想。例如Minecraft的第三方服务端Paper核心,就专门对多线程进行了优化。因此我认为还是应该保证CPU的多核性能也有一定的底子,且核心数不至于过少:至少四核以上,六核保底。
硬件选配
根据以上的原则,我最后选定的CPU是i5-10600KF,K代表的是可超频,F代表无核显。i5-10600KF的默频就已经达到了4.10GHZ,最大睿频达到了4.8GHZ,已经是目前主频相当高的CPU了。同时,其拥有6个核心,多核性能也不算太过糟糕,完全满足我对于游戏服务器的需求,最重要的是,他才500块。
确定了CPU之后,就开始围绕着CPU配置其他的硬件,主板选择的是10600KF的板U套装,因此主板没有太多选择,是B460M迫击炮 MATX主板,因为其没有核显,因此给其配备了一张20块的亮机卡作为显示器输出(不然咋装系统)。内存方面,由于主板只有两个内存插槽,为了保证其内存性能,两个插槽我们肯定是都要用上。对于Minecraft游戏服务器而言,500M内存对应着一个实体玩家,因此20-30人的服务器只需要不到16G运存。但物尽其用,我直接上了32G×2的银爵DDR4 3200天策内存,这意味着如果我只用它开一个Minecraft服务器,它能够至少满足128人同时进行游戏(当然这只是性能需求,对于多人同时在线,更重要的是网络的并发数和上传速率)。
系统安装
系统的安装相对简单,首先需要一个16G以上的U盘,然后去Ubuntu的官网下载他最新或者LTS版本的服务器系统iso包。
接下来需要做的就是将系统包预装到U盘中,这个过程网络上有数种安装手段,个人建议是使用纯净的安装介质和软件,而非网络上极其常见的PE装机(以往对于PE的刻板印象让我将其和预装软件仅仅挂钩在一起)。而后将U盘插入装好的物理机中。如果物理机的硬盘是全新的,且没有安装过任何系统,那么他理应先从U盘读取引导,启动系统的安装程序。这里开始一路往下默认安装就可以,唯一值得注意的是镜像选择选项,这里建议是将国外的默认镜像地址改成清华源:
将上述地址改为:https://mirrors.tuna.tsinghua.edu.cn/ubuntu/
即可。这样可以提升下载软件包的速度。
安装完成系统后记得设置好root账号的密码和sudo指令的密码,以便后续进行软件安装使用。其次,由于我的物理机并不放在寝室里,因此我还为他安装了SSH
进行远程的指令操作。SSH
的安装非常简单,只需输入以下指令:
sudo apt update
sudo apt install openssh-server
sudo systemctl status ssh
输入第一条指令后,应该会提示你进行密码的输入,这时候输入之前说的sudo
指令的密码即可。而后记得将SSH
服务从防火墙放行。
sudo ufw allow ssh
之后就可以在cmd中输入下述指令进行连接
ssh username@ip_address
这里要注意的是,如果物理机跟你的操控机不在同一局域网下,这要求你的物理机必须拥有外网IP地址(无论是IPV4还是IPV6,目前新增设的宽带基本都是只可能给外网IPV6地址),如果没有的话,SSH
服务是没有办法起作用的。
接下来就可以开始为其安装游戏服务端的依赖库和服务端了,由于不同的游戏其依赖库不一致,这里仅以MC举例,MC首先需要JAVA运行环境,不同版本的MC需要不同版本的JAVA,可以用下述指令安装JDK:
sudo apt install openjdk-17-jdk
#这里的数字17取决于你想要安装的JDK版本
#我安装了14、17和21版本
java -version
指令可以用于查看目前正在使用的JAVA版本,而通过下述命令可以设置目前设置的默认JDK版本,这对于运行不同版本的MC服务端是必须的:
sudo update-alternatives --config java
如果需要频繁改动JAVA版本,就不建议设置JAVA_HOME
环境变量了,不然你改动了上面也没有意义,还需要修改环境变量进行修改。
对于MC服务端,当然可以通过编写sh脚本和screen后台系统进行运行,但对于小白更建议使用一些面板软件来辅助开服,我这里选择的是MCSM面板,拥有Web界面,即时登录,即时操作,而且可以方便地对文件进行管理和备份,我觉得能够极大的提升工作效率,安装只需输入:
sudo wget -qO- https://gitee.com/mcsmanager/script/raw/master/setup_cn.sh | bash
安装完成后,输入:
# 先启动面板守护进程。
# 这是用于进程控制,终端管理的服务进程。
systemctl start mcsm-daemon.service
# 再启动面板 Web 服务。
# 这是用来实现支持网页访问和用户管理的服务。
systemctl start mcsm-web.service
# 重启面板命令
systemctl restart mcsm-daemon.service
systemctl restart mcsm-web.service
# 停止面板命令
systemctl stop mcsm-web.service
systemctl stop mcsm-daemon.service
即可启动面板,此时应该会给出你的默认访问端口,输入进入浏览器即可访问(建议是使用另一台处于局域网中的电脑进行访问),设置好默认的管理员账号和密码即可开始使用。
DDNS和内网穿透
如果你已经完成了上述所有步骤,并通过面板运行了一个MC服务端,那么你需要开始担心如何让其他玩家连接到你的服务器,如果你的服务器没有外网IP,那么你需要进行内网穿透,这里推荐使用frp
服务,网络上有很多frp
服务商,我使用的是sakura frp
,你们可以选择其他的服务商,这里以我使用的举例,sakura frp
有完整的安装文档,链接为:https://doc.natfrp.com/launcher/usage.html
,可以访问查看linux服务器的安装方法,一般按照步骤进行启动就可以,启动隧道可以在网页端进行配置:
点击创建隧道,选择对应的节点,映射的端口要与你MC服务器监听的端口一致,
而后进入远程管理界面,在你需要开启的机器上开启对应的隧道,即可进行访问
如果你拥有外网IP以及一个已备案的域名,那么你可能需要进行DDNS的设置。网络上有很多DDNS脚本,可以随意进行下载,我使用的的是DDNSGO
脚本,一键安装好后,github
上有他的全套包和文档,只需要设置好阿里云的API及访问密码,确定你所需要的子域名即可一键跑通,非常方便。
后记
通过以上的操作,应该就可以拥有一个至少可玩的游戏服务器了,你可以如法炮制,运行饥荒的服务器,泰拉瑞亚的服务器,MCSM
面板甚至可以一键启动幻兽帕鲁的服务器,而后你只需要担心有没有朋友来和你一起游玩。
对了,我的MC服务器你有兴趣来玩吗?有兴趣的话,请私信我。