Rust 开服(一)Ubuntu18 下通过 LinuxGSM 搭建 Rust Server 游戏服务器端

LinuxGSM (Linux Game Server Managers) 是开源的 Linux 服务器游戏服务器开设工具,简单好用,可以节省大量时间因此选用。
注:一般情况下我都是更倾向用熟悉的 CentOS7 系统,但是在尝试搭建一遍过后,卡在了 Yum 无法安装 Python3.6 的问题上,因此本教程选择 Ubuntu18 系统。


注意:最低的服务器配置需求为 2H4G,低于 4G 内存请不用尝试了。且如果你使用的是境内服务器,我推荐你设置好代理,以保证安装脚本能顺利的从 GitHub 下载所需文件:

# 仅供参考格式用
export http_proxy=socks5://99999:[email protected]:20800
git config --global http.proxy socks5://99999:[email protected]:20800
git config --global https.proxy socks5://99999:[email protected]:20800

如果你没有代理,也可以试试修改 hosts,但这并不能保证 100% 解决你的问题:

vi /etc/hosts
...
···
199.232.4.133 raw.githubusercontent.com

1、安装所需依赖和下载 LinuxGSM
先更新软件源:

sudo apt-get update && sudo apt-get upgrade

接着安装 LinuxGSM 所需依赖

sudo dpkg --add-architecture i386; sudo apt update; sudo apt install curl wget file tar bzip2 gzip unzip bsdmainutils python util-linux ca-certificates binutils bc jq tmux netcat lib32gcc1 lib32stdc++6 libsdl2-2.0-0:i386 steamcmd lib32z1

官方文档推荐为每个游戏服务器都新建一个系统用户,我这里新建了 rustserver 用户:

# 切换到 root 管理员用户下
sudo su
# 新建用户
adduser rustserver
# 修改密码
passwd rustserver
# 切换到这个用户
su - rustserver

之后的操作都是在这个用户和 /home/rustserver 目录下执行的。

下载 LinuxGSM:

# 下载 LinuxGSM
wget -O linuxgsm.sh https://linuxgsm.sh
# 赋予其执行权限
chmod +x linuxgsm.sh

2、安装 Rust 服务器
准备服务器安装所需内容:

bash linuxgsm.sh rustserver
# 赋予其执行权限
chmod +x rustserver

开始安装 Rust 服务器:

./rustserver install

中途需要确认的地方输入 Y 回车即可(这里用的是 CentOS7 服务器的截图,可能和 Ubuntu18 有些不同,但是流程是一样的一路确定下去即可):
1 次确认
2 次确认
3 次确认
看到以下信息则说明安装完成:
安装完成

3、配置 Rust 服务器
配置文件的路径在安装日志中存在,因此直接拷贝即可。
配置文件路径
修改下服务器的描述信息:

vi /home/rustserver/serverfiles/server/rustserver/cfg/server.cfg
...
...
#  A text description of your server. For a new line add:  \n
server.description "Belong to senjianlu.com"
...
...

修改游戏配置:

cd /home/rustserver/lgsm/config-lgsm/rustserver
# 拷贝一份默认配置并覆盖当前的空配置文件
cp _default.cfg rustserver.cfg
vi rustserver.cfg
...
...
## Predefined Parameters | https://docs.linuxgsm.com/configuration/start-parameters
# 允许所有 IP 地址连接此服务器
ip="0.0.0.0"
# 服务器端口
port="28015"
# 管理端口
rconport="28016"
appport=28082
# 管理员密码
rconpassword="xxxxxxxxx"
rconweb="1" # Value is: 1 for the Facepunch web panel, Rustadmin desktop and Rustadmin Online; 0 for RCON tools like Rusty.
# 服务器名称
servername="senjianlu"
gamemode="vanilla" # Values: vanilla, softcore ( Doc: https://wiki.facepunch.com/rust/server-gamemodes )
serverlevel="Procedural Map" # Values: Procedural Map, Barren, HapisIsland, SavasIsland
customlevelurl="" # Custom level url. +server.levelurl \"${customlevelurl}\"
seed="" # range: 1-2147483647, used to reproduce a procedural map.
salt="" # range: unknown, used to recover a known setting from an existing map.
# 最大玩家数
maxplayers="10"
worldsize="3000" # default: 3000, range: 1000-6000, map size in meters.
saveinterval="300" # Auto-save in seconds.
tickrate="30" # default: 30, range: 15-100.
...
...

保存后此步结束。

4、启动服务器

# 回到用户目录下
cd /home/rustserver
# 启动服务器
./rustserver start

看到如下信息说明服务器启动完成:
启动完成

几个需要注意的点:
① 记得开发防火墙和安全组的对应端口,我这里贪省事直接关闭了防火墙:

sudo ufw disable

② 服务器的启动需要时间,大概在 5 到 10 分钟左右。如何判断服务器是否启动成功可以通过监控,在 2H4G 的云服务器,RustDedicated 大概会吃 50% 的 CPU 资源和 90% 的内存资源,长时间稳定这个占用的话基本就算是启动成功了。
top
③ 如果发现 kswapd0 长时间占用几乎 100% 的 CPU 资源,那说明你服务器的内存不足以启动 Rust 服务器,系统开始使用硬盘做虚拟内存了,你可以选择多花钱升级服务器的内存或者提前设置好虚拟内存供开服使用,教程在这里:CentOS7 下建立 SWaP 分区以增加虚拟内存(命令可以完全照搬,CentOS7 和 Ubuntu18.04 通用)

最后到游戏中,按下 F1 并输入:

# IP 和端口自行替换
connect 127.0.0.30:28015

连接到服务器即可!
连接成功

结束。