0x00:前言

七日杀

本文是一篇在Linux操作系统平台下安装与设置七日杀专属服务器的教程。
博主在网上搜罗了一下,发现没有相关详细的教程,所以就随手将自己捣鼓的过程写下来。

需要准备的工具:

  • 公网服务器 & 有公网IP的家庭网络
  • 服务器系统:Ubuntu X64
  • SteamCmd (安装教程
  • 博主建议使用配置在1H2G以上VPS进行架设

0x01:下载七日杀服务端文件

  • 安装screen(Screen方便服主将服务端进程切至后台运行)
# RedHat/CentOS
yum install -y screen

# Ubuntu/Debian
apt install screen

为了您服务器的安全,本文强烈建议不要使用root用户开启服务端

  • 为七日杀服务端创建用户
useradd -m dtd
  • 切换到用户
su - dtd
  • 运行SteamCmd
  • 以个人steam账号登录steamcmd

Steam Server List
由于在steam官方文档中,不允许用户通过匿名登录下载七日杀服务端,故本文使用博主的账号登录进行下载
登录Steamcmd

login <账号> <密码>
  • 设置服务端安装目录
force_install_dir ~/dtd
  • 下载服务端文件
app_update 294420 validate

下载服务端
下载大概会持续30分钟或者更多(具体时间根据每个人服务器的带宽而定)( ̄┰ ̄*)
所以在接下来时间就没你什么事情了啦(~ ̄▽ ̄)~。
下载完成
等到出现如图所示的 Success! App '294420' fully installed.之后便可以退出steamcmd了。

如果出现如图 Error! App '294420' state is 0x402 after update job. 则只需要再输入一次下载指令继续下载即可。
错误提示

  • 退出SteamCmd
quit

0x02:编译运行环境

由于七日杀服务端使用的GLIBCXX和GLIBC库比较新,是有些Linux发行版本无法直接通过包管理进行安装的,所以需要单独进行编译安装。

以下操作全程在root用户下进行

①.安装GLIBC_2.15

  • 查看当前Linux现有的GLIBC包版本
strings /lib64/libc.so.6 |grep GLIBC  
#查看当前glibc版本
  • 下载GLIBC_2.15源码包
cd /usr/src/  
wget http://mirror.bjtu.edu.cn/gnu/glibc/glibc-2.15.tar.gz  
wget http://mirror.bjtu.edu.cn/gnu/glibc/glibc-ports-2.15.tar.gz  #glibc插件
  • 解压
tar zxvf glibc-2.15.tar.gz  
tar zxvf glibc-ports-2.15.tar.gz  
mv glibc-ports-2.15 glibc-2.15/ports  
mkdir build  
cd build
  • 编译安装
../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make -j4
make install
  • 验证是否安装成
strings /lib64/libc.so.6 |grep GLIBC

②.安装GLIBCXX_3.4.15

  • 查看当前Linux现有的GLIBCXX包版本
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
  • 下载libstdc++包
cd /usr/src/
#进入src目录
#32位Linux下载 
wget http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_i386.deb 
#解压
ar -x libstdc++6_4.7.2-5_i386.deb && tar xvf data.tar.gz

#64位Linux下载
wget http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_amd64.deb 
#解压
ar -x libstdc++6_4.7.2-5_amd64.deb && tar xvf data.tar.gz

我们会发现其实在安装GCC时,libstdc++.so.6已经是存在的了,于是直接copy一份,创建软链就好了。

  • 拷贝新的libstdc++.so.6文件,并创建软链
###################32位Linux的操作###################
cd usr/lib/i380-linux-gun
#复制新的libstdc++.so.6文件
cp libstdc++.so.6.0.17 /usr/lib

cd /usr/lib
#删除原来的软链
rm -f libstdc++.so.6
#创建新的软链
ln -s libstdc++.so.6.0.17 libstdc++.so.6


###################64位Linux的操作###################
cd usr/lib/x86_64-linux-gnu/
#复制新的libstdc++.so.6文件
cp libstdc++.so.6.0.17 /usr/lib64/

cd /usr/lib64/
#删除原来的软链
rm -f libstdc++.so.6
#创建新的软链
ln -s libstdc++.so.6.0.17 libstdc++.so.6

#####################################################
#检查软链情况
ll libstdc*
  • 检查安装是否成功
strings /usr/lib/libstdc++.so.6 | grep GLIBCXX       #32位Linux查看方式
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX     #64位Linux查看方式

检查发现GLIBCXX_3.4.15已经安装成!


0x03:配置服务端

经过以上的过程,你的七日杀Linux服务器已经基本搭建完成了(已经可以直接运行了)!
接下来修改serverconfig.xml来个性化自己的服务器!
该文件存放在七日杀服务端的目录下

cd ~/dtd/
#进入七日杀服务端根目录o(* ̄▽ ̄*)o 
#安装目录不是绝对的,每个人安装路径可能不一样
#如果全程跟我步骤,则这个目录的妥妥的一样!o(* ̄▽ ̄*)o

vim serverconfig.xml
#按insert键或I键进入编辑模式

以下为配置文件中各项的相关注释

  • 首先是服务器名、服务器端口以及服务器密码等
<property name="ServerPort"               value="26900"/> #默认26900
<property name="ServerName"               value="服务器名"/>
<property name="ServerPassword"           value="服务器登入密码"/>
<property name="ServerMaxPlayerCount"      value="8"/> #最大玩家数 默认8
<property name="ServerDescription"        value="服务器描述"/>
<property name="GameWorld"                value="Navezgane"/> #服务器世界名默认Navezgane
<property name="GameName"                 value="My Game"/> #存档名字
<property name="GameDifficulty"           value="2"/> #游戏难度
<property name="GameMode"                  value="GameModeSurvivalMP"/> #游戏模式,默认GameModeSurvivalMP
<property name="ZombiesRun"                value="0"/> #僵尸行走,默认值0,白天走晚上跑 1为不跑 2为一直跑
<property name="DayNightLength"            value="60"/> #游戏内一天在现实世界(三次元)时长(单位分钟min)
<property name="DayLightLength"            value="18"/> #游戏内白天的时间(单位小时h)
<property name="PlayerKillingMode"        value="1"/> #玩家之间能造成的伤害,默认1.敌人0.无2.非同盟3.所有人
<property name="DropOnDeath"                value="2"/> #玩家死亡掉落,默认0.全部 1.工具栏 2.背包 3.删除所有东西
<property name="MaxSpawnedZombies"          value="60"/> #服务器最大僵尸生成量
<property name="MaxSpawnedAnimals"          value="50"/> #服务器最大生物生成量
<property name="AirDropFrequency"           value="72"/> #空投循环生成时间(单位分钟min)
<property name="AirDropMarker"              value="true"/> #是否空投 默认true
  • 玩家安全区相关
<property name="PlayerSafeZoneLevel"        value="5" /> #当玩家等级或玩家人数小于一定值时为玩家创建的安全区大小
<property name="PlayerSafeZoneHours"        value="5" /> #安全区时间(单位小时h)
  • EAC反作弊,设置是否开启EAC(注:开启EAC有些打了中文补丁的玩家会因为文件验证不过关而进不来服务器)
<property name="EACEnabled"                 value="false"/> #默认true,建议false
  • 服主管理相关
#网页控制台相关
<property name="ControlPanelEnabled"        value="true"/> #是否开启网页控制台
<property name="ControlPanelPort"           value="8080"/> #网页控制台端口
<property name="ControlPanelPassword"       value="mdzz"/> #网页控制台密码
#Telnet控制相关
<property name="TelnetEnabled"              value="true"/> #是否开启Telnet
<property name="TelnetPort"                 value="8081"/> #Telnet端口
<property name="TelnetPassword"             value="mdzz"/> #Telnet密码
#管理员档案
<property name="AdminFileName"              value="serveradmin.xml"/> #管理员steam相关信息

将以上信息设置完成后,保存文件就可以开启自己专属的服务器啦。
另外,不习惯使用Vim编辑器的小伙伴可以通过WinSCP连接服务器。将serverconfig.xml下载到本地,通过windows记事本进行编辑(#^.^#)。

注:
默认情况下服务端的存档位置(使用root启动服务端)在

/root/.local/share/7DaysToDie/

非root用户启动服务端则在

~/.local/share/7DaysToDie/

0x04:正式启动服务器

经过长时间的奋斗,我们的服务端终于可以启动啦

  • 设置防火墙放行相关端口
    在官方文档中,要求服务器防火墙放行以下端口
#TCP
8080        #Web控制台
8081        #Telnet端口
8082        #如果安装了Alloc的mods,这个端口可以展示地图
26900       #客户端通讯

#UDP
26900       #客户端通讯
26901       #客户端通讯
26902       #客户端通讯
  • 创建一个screen(防止在ssh断开连接后服务端停止工作)
screen -S 7DayServer
  • 启动服务器
./startserver.sh -configfile=serverconfig.xml
  • 按住Ctrl + A +D 将screen加入后台运行

到此,一切准备就绪!快和你的小伙伴们一起进入服务器玩耍吧。
狂叫


0x05:管理员指令,权限相关

服主通过Telnet连接 或者 Web管理页面 进入服务端控制台后
输入help就会弹出服务器管理的相关指令
博主这里列出了部分常用的管理指令,其他的指令大家自己去摸索(^▽^)

debugmenu dm                     => 打开/关闭debug模式 (参数=on|off)
mem                              => 显示内存信息和调用碎皮回收机制
admin add [玩家名] [权限等级]     => 设置玩家管理权限组(注:最高权限等级为0)
admin remove [玩家名]            => 去掉玩家的管理权限
admin update [玩家名] [权限等级]  =>提升玩家的管理权限组
say [信息]                       => 以server的名义广播一条信息
kick [玩家名] [原因]              => 踢出玩家[并说明原因]
ban [玩家名] [时间]               => 禁止玩家登陆服务器一段时间(minutes, hours, days, weeks, months, years)
shutdown                         => 关闭服务器
spawnairdrop                     => 刷一次空投
spawnsupplycrate                 => 给玩家刷一个补给箱
listplayers lp                   => 获取在线玩家信息
kill [id/name]                   => 杀死指定玩家
give [id/name] [物品] [数量]      => 给玩家刷某样东西
unban [Steam64位Id]              => 解锁玩家
cp [指令] [权限组ID]              => 给某个权限组加入使用某个指令的权限

注:在服务器控制台添加自己为最高权限后,其他的操作可以在游戏内完成!

admin add [玩家名或Steam64位Id] 0 => 设置某人为服务器最高管理员(0权限组位最高权限组)

在游戏内按【~】进入控制台
输入dm 当控制台提示 ‘debugmenu on’ 便成功启动了调试模式。
退出控制台,按G进入上帝模式,按H进入飞行模式。
进入控制台,输入cm打开创造模式(再输入一次关闭)。
退出控制台,按U就可以打开物品栏从裤裆中掏出想要的东西了

动次打次


0x06:参考文献

Last modification:March 10th, 2020 at 01:06 am
If you think my article is useful to you, please feel free to appreciate