centos7服务器搭建7日杀(7daystodie)服务器,配置,存档,迁移方法(踩坑总结)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
centos7服务器搭建7⽇杀(7daystodie)服务器,配置,存档,迁移⽅法(踩坑总
结)
最近搞了软路由, 不搞点事情不舒服. 正好周末和朋友玩7⽇杀, 搭个服务器玩玩.
⽹络环境准备.
1. 公⽹ip的机器
or
2. ⾃家⽹络, 找电信要了公⽹ip && 光猫使⽤桥接由路由拨号 && 路由器需要⽀持ddns && 路由器⽀持端⼝映射
机器
⼀个⼰喜欢的linux发⾏版(本记录使⽤centos7为例)
安装过程:
1. 安装steamlink所需要的lib包
yum install glibc.i686 libstdc++.i686 -y
2. 选⼀个steamlink的安装⽬录, 这⾥我装到 /home/ ,下载并解压
cd /home/ && wget https:///client/installer/steamcmd_linux.tar.gz
tar xf steamcmd_linux.tar.gz
cd steamcmd/
3. 登录steamlink
./steamcmd.sh
登录账号前先设置7⽇杀安装⽬录, 这⾥我直接装在当前⽬录的 7d2d 新⽬录(/home/steamcmd/7d2d)
force_install_dir ./7d2d
login 你的steam账号
输⼊密码和令牌登录成功
4. 下载游戏
app_update 294420
5. 编辑服务器信息
进⼊7⽇杀程序⽬录 cd 7d2d
编辑服务器配置
vim serverconfig.xml
这⾥重点关注⼏个字段:
ServerName 你服务器在公⽹显⽰的名字
ServerPassword 连接密码
ServerPort 服务器端⼝, 注意这个端⼝填的是tcp端⼝,假设是默认的26900. 但七⽇杀同时还需要⽤到这个端⼝号+3范围内的udp端⼝(我这udp监听的是26902), 配置⽂件这⾥只填tcp的端⼝号就好
ServerVisibility 服务器可见性 2公开, 1朋友可见(但服务器没有朋友,所以和0效果⼀样), 0不列出
TelnetEnabled telnet开关,强烈建议开着⽅便调试连通性
GameWorld 这⾥填的值注意如果是随机地图就填 RWG , 如果不是随机地图⽽是系统预设好的,则使⽤系统预设地图名 ,名字就是7⽇杀安装⽬录/Data/Worlds ⾥的地图名
WorldGenSeed 地图⽣成种⼦注意这⾥有坑如果是从外部迁移存档并且使⽤的是随机⽣成的地图, 这个种⼦必须和创建时⼀致. 因为他是通过这个种⼦和地图⼤⼩来计算出地图名的, 计算出的地图名的结果需要和你迁移过来的⽣成地图⼀致WorldGenSize 地图⼤⼩ 2048的倍数, 最⼤在16384以内,对应到游戏创建时的4km-14km 注意如果是从外部迁移存档并且使⽤的是随机⽣成的地图, 这个种⼦必须和创建时⼀致,原因同上(关于迁移, 下⾯会说)
GameName 游戏名, 如果是迁移的, 也必须⼀致(关于迁移, 下⾯会说)
其他配置根据⾃⼰喜好参考官⽅⽂档修改 https:///wiki/7_Days_to_Die_Dedicated_Server
6. 启动服务器
启动服务器, 因为 startserver.sh 会阻塞当前ssh窗⼝, 建议使⽤ nohup 和&结合, 新建⼀个脚本 startup.sh专门⽤来启动服务器,把⽇志输出到⽂件⾥.这样就可以随意关闭控制台了
vim startup.sh
#!/bin/sh
nohup ./startserver.sh -configfile=serverconfig.xml > stdout.log &
保存退出, 设置运⾏权限
chmod 777 startup.sh
启动服务器
./startup.sh
top ⼀下看看7DaysToDieServe 进程有没有开始在努⼒跑, 如果是那就正确了.
tailf stdout.log 可以观察服务器⽇志输出.
关闭服务器进程可执⾏
pkill 7Days
看服务器是否正确的监听了tcp和udp端⼝
netstat -anop | grep 7Day
如果端⼝没改过是默认的26900, 那么启动好后执⾏这个命令可以看到tcp端⼝监听,同时还会看到监听 26902 udp端⼝
测试tcp端⼝连通性
telnet 127.0.0.1 26900
如果通,会看到下⾯消息
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
GameType:7DTD;GameMode:Survival;GameName:哎呀哟;ServerDescription:XXXXX 专⽤;ServerWebsiteURL:;IP:XXXXXXX;LevelName:Mahude Valley;GameHost.........
测试udp端⼝连通性
nc -vuz 127.0.0.1 26902
如果通,会看到下⾯消息
Ncat: Version 7.50 ( https:///ncat )
Ncat: Connected to 127.0.0.1:26902.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 1 bytes received in 2.03 seconds.
7. 外⽹处理
如果是在外⽹ip的机器上, 直接设置防⽕墙和iptables开放26900-26903端⼝即可
如果是⾃家⽹络, 需要在路由器上设置ddns, 路由器上设置端⼝映射外⽹的 tcp 26900, udp 26901-26903 映射到7⽇杀所在服上的相同端⼝, 这部分不同路由器操作不⼀样, 不记录步骤了. ⾃家⽹络不建议设置DMZ主机! 整台机全部端⼝暴露到公⽹会有安全风险.
连通性测试, 和第6步后⾯⼀样, 只是把127.0.0.1 换成公⽹ip或是你设置的ddns域名
8. 存档和⽬录结构
win存档位置 C:\Users\⽤户名\AppData\Roaming\7DaysToDie\Saves\[GameWrold]\[GameName]
win随机⽣成地图位置 C:\Users\⽤户名\AppData\Roaming\7DaysToDie\GeneratedWorlds\[GameWrold]
linux存档位置 /root/.local/share/7DaysToDie/Saves/[GameWrold]/[GameName]
linux随机⽣成地图位置 /root/.local/share/7DaysToDie/GeneratedWorlds/[GameWrold]
注意
GameWrold 如果是预设地图, 则是游戏⽬录⾥Data/Worlds 对应的名字⽐如PREGEN02,PREGEN6k ,
如果是随机⽣成地图则是⽣成的地图名字, ⽐如Voluya Territory, Mahude Valley 这种名字
9. 迁移:
如果是预设地图, 直接迁移 save\[GameWrold]\[GameName] 到服务器的 save\[GameWrold]\[GameName] , 然后编辑服务器serverconfig.xml的 GameWorld和GameName和⽬录对应即可,
如果是随机⽣成地图, 需要迁移GeneratedWorlds\[GameWrold] 和 save\[GameWrold]\[GameName] 到服务器对应⽬录, 然后编辑服务器serverconfig.xml的 GameWorld 改为RWG, GameName填⽬录对应的GameName, WorldGenSeed和WorldGenSize需要和创建时⼀致. 改完后启动时注意观察⽇志输出, 如果看到 GamePref.GameWorld 这⾏和你迁移的GameWorld名字⼀样说明就对了, 说明服务器计算出的地图名和你迁移的GameWorld名称⼀致,就会使⽤你已经创建好的随机⽣成地图和存档, 这⾥有点坑不知道为什么这么设计..。