通过腾讯云、阿里云这种云服务器假设游戏服务器很方便,可以在主机不在线的时候让其他小伙伴依旧可以游玩。我在腾讯云购买了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的名义广播一条信息