通过腾讯云、阿里云这种云服务器假设游戏服务器很方便,可以在主机不在线的时候让其他小伙伴依旧可以游玩。我在腾讯云购买了2核4G轻量应用服务器1年。

1.准备工作

1.1设置swap

首先登录云服务器终端。设置swap操作需要在root下进行,swap类似虚拟内存,防止因游戏进程内存消耗过大导致进程中止。

# 获取root权限
$ sudo su 
# 检查是否配置过swap,若无返回结果,则未配置过
$ swapon -s
# 检查可用的存储空间
$ df -h
# 如果未设置swap,则一般设置为物理内存的1或2倍,此处我物理内存4G,设置swap也为4g
$ fallocate -l 4G /swapfile
$ ls -lh /swapfile
$ chmod 600 /swapfile
$ ls -lh /swapfile #此时权限应为rw-------
# 启用swap文件
$ mkswap /swapfile
$ swapon /swapfile
# 确认swap是否已经生效
$ swapon -s
$ free -m

前述设置重启失效,修改fstab使其永久生效

$ sudo vi /etc/fstab

在fstab末尾加入(vi基本操作:1,按i进入编辑模式,正常编辑内容;2.按Esc退出编辑模式);3.输入:wq保存并退出。)

/swapfile swap swap sw 0 0

可选:swappiness参数决定系统将数据从内存交换到swap的频率,数值越接近0,系统越倾向于不进行swap,最大限度使用物理内存。数值越接近100,越倾向于使用swap,而过多的使用swap可能导致服务器运行效率缓慢。ubuntu系统的默认推荐值是60,这里我为了保证服务器运行效率,建议设置为10。(我就没改)

# 查看当前的swappiness
$ cat /proc/sys/vm/swappiness
# 修改swappiness为10
$ sudo sysctl vm.swappiness=10

编辑sysctl.conf,使设置永久生效

$ sudo vi /etc/sysctl.conf

在末尾加入

vm.swappiness = 10

:wq退出。

1.2安装screen

安装screen,后面开服时会用到。使用screen可以让服务器进程在后台运行,而不会因为远程连接的断开而停止进程。我是Ubuntu 20.04 LTS

$ sudo apt install screen

1.3安装SteamCmd运行环境

这部分按照steamcmd官网的说明,为了避免安全问题,不建议使用root用户进行以下操作,所以优先在root下建立新用户:

# steam就是用户名。也可以不叫steam,叫别的名字
$ useradd -m steam
$ cd /home/steam
# 安装steamcmd
$ sudo add-apt-repository multiverse
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install lib32gcc1 steamcmd 
$ ln -s /usr/games/steamcmd steamcmd

2.安装七日杀服务器端

2.1下载安装steamcmd

上面装一次了,但是在另一个教程里,我看这样做比较方便,就又按这个方式搞了一下。首先在刚开始建立好的steam用户(不要使用root)

$ cd ~
$ wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz 
$ tar -zxf steamcmd_linux.tar.gz

运行steamcmd

$ cd Steam
#如果有permission denied的问题就先加权限
$ chmod +x steamcmd.sh
$ ./steamcmd.sh

首次运行steamcmd会下载更新,等终端出现steam>时,就可以操作了。

2.2登录steam账号,并下载服务端

首先登录steam账号,或者匿名登陆login anonymous,很多游戏不需要账户购买也可以开设服务器,具体可以在这里查看,同时也会给出游戏的编号

steam> login <username> <password>
# 如果设置了安全令牌,会让你输入一次安全令牌
# 设置服务端文件目录
force_install_dir ~/7_Days_to_Die_server
# 下载服务端,284420是七日杀的编号
app_update 294420 validate

过一段时间,下载完成,就可以通过quit命令退出steamcmd

2.3 设置服务端参数

进入刚才设定的安装服务器的目录

$ cd ~/7_Days_to_Die_server
# 编辑服务器参数
$ vi serverconfig.xml

各个参数的意义可以上网查,这个网站是七日杀的官方,需要自己翻译。

2.4 设置防火墙

这个部分应该是在腾讯云的后台设置,放行以下端口,才能让服务器正常运转

端口

协议

说明

8080

TCP

Web控制台

8081

TCP

Telnet端口(建议不要放行)

8082

TCP

如果安装了Alloc的mods,这个端口可以展示地图

26900/26902

UDP

客户端通讯

Telnet建议不要放行,直接在服务器中使用telnet localhost 8081即可登录telnet。如果一定要用远程telnet连接,请务必在serverconfig.xml中设置好TelnetPassword后,再放行端口。该行为有很大的风险。

2.5启动服务器

首先创建一个screen,可以让服务器在后台运行,防止因为ssh断开等原因中止进程

$ screen -S 7Days
$ /home/steam/7_Days_to_Die_server/startserver.sh -configfile=serverconfig.xml

使用Ctrl+A+D组合键使屏幕后台运行

当要回到screen页面时,使用

screen -ls	# 查看screen,记下7DaysServer的编号
screen -r <7DaysServer的编号>

2.6补充

2.6.1几个重要路径和文件

路径

# 路径取决于你的设置的安装位置,如果完全按照本文操作,那么路径如下
~/7DaysToDieServer	# 七日杀服务端主目录
~/7DaysToDieServer/Data/Worlds	# 七日杀服务端地图目录
~/.local/share/7DaysToDie/Saves	# 七日杀服务端存档目录
~/7DaysToDieServer/7DaysToDieServer_Data	# 七日杀服务器日志输出目录
~/7DaysToDieServer/Mods	# Mods目录,需要自己创建

文件

~/.local/share/7DaysToDie/Saves/serveradmin.xml	# 服务器配置文件
~/7DaysToDieServer/serverconfig.xml	# 管理员配置文件

2.6.2添加mod

想添加mod的同学看这里。

cd ~/7DaysToDieServer	# cd至七日杀服务端主目录
mkdir Mods	# 创建mods文件夹

服务器的mod和自己平时玩的mod基本通用,跟在自己游戏中装mod一样,将mod文件放入Mods文件夹中即可。

上传mods到服务器上的方法有很多,比如Xshell中可以使用lrzsz上传。

# 以下操作要在root用户中进行

# Ubuntu/Debian
sudo apt-get install lrzsz

# RedHat/CentOS
yum  install lrzsz

安装zip/unzip 用于解压mod压缩包

# Ubuntu/Debian
apt-get install zip

# RedHat/CentOS
yum install zip unzip

上传mod文件,并解压。

# 使用su - steam,回到steam用户中继续操作
cd ~/7DaysToDieServer
rz #直接将mod的压缩包上传文件至linux
unzip <压缩包名>	# 一般mod压缩包内自带Mods文件夹,直接解压即可
# 如果解压后路径不对,可以使用mv指令移动至Mods文件下

2.6.3管理服务器

在服务器中安装telnet。(也可以用Xshell的远程telnet连接,这里不做赘述)

# RedHat/CentOS
rpm -qa telnet	# 检测telnet的rpm包是否安装 
yum install telnet	# 若未安装,则安装telnet

# Ubuntu/Debian
netstat -a | grep telnet	# 检测telnet的rpm包是否安装 
sudo apt-get install xinetd telnetd	# 若未安装,则安装telnet
telnet localhost 8081	#登录服务器telnet

管理员指令

admin add <玩家名> <权限级别>	# 给予玩家管理权限(最高级别为0)
admin remove <玩家名>	# 移除玩家的管理权限
admin update <玩家名> <权限等级>	#提高管理权限级别
#建议先在telnet用上述指令给自己管理权限
#然后就可以直接在游戏中,按F1使用下面的指令了
dm	#打开或关闭debug模式
ban <玩家名> <时间>	# 禁止玩家登陆服务器一段时间(minutes, hours, days, weeks, months, years)
kill <id/name>	# 杀死指定玩家
listplayers lp	# 获取在线玩家信息
give <id/name> <物品> <数量>	# 给玩家刷某样东西
shutdown	# 关闭服务器
say <信息>	# 以server的名义广播一条信息