准备工作

首先你需要拥有一个云服务器,内地的主流云服务平台有阿里云、腾讯云等,如果你在海外可以选择AWS、google云服务等。七日杀服务端的建议最低配置是2core 4G,内存8G及以上最佳。考虑到目前国内云服务的价格比较,在校大学生可以考虑使用学生优惠的1core 2G套餐,配置swap后勉强够用。

云服务器的主机名一般是一串很长的乱码,例如显示在用户终端上很影响使用。比如我在修改前是:

  1. [root@bS2&Lb%n21fAS7D ~]$

为了方便以后使用,建议大家先修改它。

  1. # 这些操作要在root中进行。
  2. hostnamectl set-hostname centos7 #可以改成你喜欢的主机名,别太长
  3. hostname # 查看下
  4. centos7
  5. vim /etc/hosts # 编辑下hosts文件, 给127.0.0.1添加hostname
  6. cat /etc/hosts # 检查

修改之后像这样:

  1. [root@centos7 ~]$

舒服多了!

1.设置swap

这些操作都在root中进行。

linux系统的swap空间类似windows系统的虚拟内存。如果你的云服务器内存小于4G,比如只有2G内存,那你就必须设置一个swap空间,否则启动服务器时会因为内存不足导致进程killed。

使用swapon命令可以检查系统是否已经配置过swap,云服务器一般都没有提前设置swap。

  1. swapon -s # 如果该命令没有返回出结果,则代表该系统尚未配置过swap。
  2. df -h # 检查可用的存储空间

如果没有,按如下步骤创建Swap文件。一般建议swap大小设置为自己物理内存相同或两倍。我这里设置了4G。

  1. # 这些操作要在root中进行。
  2. sudo fallocate -l 4G /swapfile # 请根据自己情况修改swap大小
  3. ls -lh /swapfile
  4. sudo chmod 600 /swapfile # 更改swap文件的权限,否则会有很大的安全隐患
  5. ls -lh /swapfile # 然后检查是否设置完成

启用swap文件

  1. sudo mkswap /swapfile
  2. sudo swapon /swapfile
  3. # 确认一下设置是否已经生效
  4. swapon -s
  5. free -m

前面设置的swap会在重启后失效,通过修改fstab让配置永久生效。

  1. sudo vim /etc/fstab

i 进入输入模式,在文件末尾加入下面这行内容。

  1. /swapfile swap swap sw 0 0

按esc退出输入模式,输入 :wq 保存退出。(对vim操作不熟悉的,可以搜索“vim指令”进一步学习)

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

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

编辑sysctl配置文件,使其永久生效

  1. sudo vim /etc/sysctl.conf

i 进入输入模式,将以下内容粘贴到文件末尾:

  1. vm.swappiness = 10

按esc退出输入模式,输入 :wq 保存退出。

2.安装screen

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

  1. # RedHat/CentOS
  2. yum install -y screen
  3. # Ubuntu/Debian
  4. apt install screen

3.安装SteamCmd运行所需环境

  1. # 这些操作要在root中进行,根据你的系统选择不同指令。
  2. # Ubuntu/Debian 64位
  3. sudo apt -y install lib32gcc1
  4. # RedHat/CentOS 32位
  5. sudo yum -y install glibc libstdc++
  6. # RedHat/CentOS 64位
  7. sudo yum -y install glibc.i686 libstdc++.i686

4.创建一个用户

不建议使用root系统进行后面的操作,这里我们为steam创建一个专门的用户。

  1. useradd -m steam # 新建一个名为steam的用户
  2. passwd steam # 为用户steam设置密码
  3. su - steam # 切换至新建的steam用户。改成root,可以切换回root用户

修改用户终端配色。

CentOS7的终端和指令颜色一样,大端的代码中难以区分。修改一下用户终端的配色,可以大大的提高整个shell页面的可读性,方便你更快的找到每段代码的开头。

修改前后如下图所示:

输入以下指令修改终端配色。

  1. # 临时修改配色
  2. PS1="\[\e[32;1m\][\[\e[32;1m\]\u\[\e[32;1m\]@\h \[\e[34;1m\]\W\[\e[0m\]]\\$ "
  3. # 永久修改vim配色
  4. vim ~/.bashrc #编辑.bashrc文件

加入这一行

  1. PS1="\[\e[32;1m\][\[\e[32;1m\]\u\[\e[32;1m\]@\h \[\e[34;1m\]\W\[\e[0m\]]\\$ "

保存退出。

  1. source ~/.bashrc # 重新加载bash配置

steamCMD与七日杀服务器端

1.下载并安装SteamCMD

确定你当前在你新建的steam用户中,如果不是,请使用su - steam切换用户。目前版本steamcmd必须直接解压在 ~ 目录下,否则会报错。

  1. # 这些操作要在刚才创建的steam用户中进行,请不要使用root用户!
  2. #cd至~目录
  3. cd ~
  4. # 下载Linux系统专用的SteamCMD
  5. wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
  6. # 解压
  7. tar -zxf steamcmd_linux.tar.gz

运行SteamCmd

  1. # 运行steamcmd
  2. ./steamcmd.sh

首次运行steamcmd,他会自己下载更新自己。等出现steam>时,就可以对steamcmd进行操作啦。

2.登录steam账号

你可以使用steam账号登录,或匿名登录login anonymous。但是七日杀必须要steam登录才可以下载服务端。

  1. login <用户名> <密码>
  2. # 如果设置了安全令牌,会让你输入一次安全令牌

3.下载七日杀服务端

  1. force_install_dir ~/7DaysToDieServer # 设置服务端安装目录
  2. app_update 294420 validate # 下载七日杀服务端,294420是七日杀的编号
  3. # 本文由 @白火shiraka 辛苦编写,未经授权禁止转载
  4. # 白火的博客主页:www.cnblogs.com/shiraka
  5. # 如果你在白火shiraka的博客、知乎、B站以外的地方看到这篇文章,帮忙举报侵权,十分感谢!
  6. # 下载会持续一段时间,请耐心等待

等到出现如图所示的 Success! App '294420' fully installed.之后便可以退出steamcmd了。

  1. quit #退出SteamCmd

4.配置服务端

  1. # 进入七日杀服务端根目录
  2. cd ~/7DaysToDieServer
  3. # 编辑配置文件
  4. vim serverconfig.xml

下面翻译了部分参数。

  1. <property name="ServerPort" value="26900"/> <!-- 默认26900 -->
  2. <property name="ServerName" value="服务器名"/>
  3. <property name="ServerPassword" value="服务器登入密码"/>
  4. <property name="ServerMaxPlayerCount" value="8"/> <!-- 最大玩家数 默认8 -->
  5. <property name="ServerDescription" value="服务器描述"/>
  6. <property name="GameWorld" value="Navezgane"/> <!-- 服务器世界名 默认Navezgane -->
  7. <property name="GameName" value="My Game"/> <!-- 存档名字 -->
  8. <property name="GameDifficulty" value="2"/> <!-- 游戏难度 默认难度是2 -->
  9. <property name="ZombiesRun" value="0"/> <!-- 僵尸行走,默认值0,白天走晚上跑 1为不跑 2为一直跑 -->
  10. <property name="DayNightLength" value="60"/> <!-- 游戏内一天在现实世界时长(单位分钟min) -->
  11. <property name="DayLightLength" value="18"/> <!-- 游戏内白天的时间(单位小时h)-->
  12. <property name="PlayerKillingMode" value="1"/> <!-- 玩家之间能造成的伤害,0.禁止杀戮 1.只能杀死盟友 2.只能杀死陌生人 3.允许杀死所有人 -->
  13. <property name="DropOnDeath" value="2"/> <!-- 玩家死亡掉落,默认0.全部 1.仅腰带 2.仅背包 3.删除所有 -->
  14. <property name="MaxSpawnedZombies" value="60"/> <!-- 服务器最大僵尸生成量 -->
  15. <property name="MaxSpawnedAnimals" value="50"/> <!-- 服务器最大生物生成量 -->
  16. <property name="AirDropFrequency" value="72"/> <!-- 空投循环生成时间(单位分钟min) -->
  17. <property name="AirDropMarker" value="true"/> <!-- 是否在地图上标记空投 默认true -->
  18. <property name="EACEnabled" value="false"/> <!-- #反作弊,默认true,开启可以防止玩家作弊,同时也会使部分mod不可使用。 -->
  19. <property name="TelnetEnabled" value="true"/> <!-- 是否开启Telnet -->
  20. <property name="TelnetPort" value="8081"/> <!-- Telnet端口 -->
  21. <property name="TelnetPassword" value="mdzz"/> <!-- #Telnet密码 -->
  22. <!-- 以上内容由 @白火shiraka 翻译整理,未经授权禁止转载 -->
  23. <!-- 白火的博客主页:www.cnblogs.com/shiraka -->
  24. <!-- 如果你在白火shiraka的博客、知乎、B站以外的地方看到这篇文章,帮忙举报侵权,十分感谢! -->
  25. <!-- 更多设置请参考配置文件中的注释,英语不好的同学善用翻译软件!-->

5.配置防火墙

还需要在防火墙放行以下端口,才可让服务器正常运转。阿里云请在平台的安全组页面添加规则,其他云平台可能有不同的安全组设置方式,大同小异。

端口 协议 说明
8080 TCP Web控制台
8081 TCP Telnet端口(这个建议不要放行)
8082 TCP 如果安装了Alloc的mods,这个端口可以展示地图
26900/26902 UDP 客户端通讯

Telnet建议不要放行,直接在服务器中使用telnet localhost 8081即可登录telnet。

如果一定要用远程telnet连接,请务必在serverconfig.xml中设置好TelnetPassword后,再放行端口。该行为有很大的风险。

6.启动服务器

创建一个名为7DayServer的screen,可以让服务器在后台运行,断开远程连接也不终止进程。

  1. screen -S 7DaysServer

启动服务器

  1. ./startserver.sh -configfile=serverconfig.xml

按住Ctrl + A +D 将screen加入后台运行

当你需要回到这个sreen页面时,使用如下指令。

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

补充

1.几个重要路径和文件

路径

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

文件

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

2.添加mod

想添加mod的同学看这里。

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

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

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

  1. # 以下操作要在root用户中进行
  2. # Ubuntu/Debian
  3. sudo apt-get install lrzsz
  4. # RedHat/CentOS
  5. yum install lrzsz

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

  1. # Ubuntu/Debian
  2. apt-get install zip
  3. # RedHat/CentOS
  4. yum install zip unzip

上传mod文件,并解压。

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

3.管理服务器

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

  1. # RedHat/CentOS
  2. rpm -qa telnet # 检测telnet的rpm包是否安装
  3. yum install telnet # 若未安装,则安装telnet
  4. # Ubuntu/Debian
  5. netstat -a | grep telnet # 检测telnet的rpm包是否安装
  6. sudo apt-get install xinetd telnetd # 若未安装,则安装telnet
  1. telnet localhost 8081 #登录服务器telnet

管理员指令

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

参考:

Steam Developer Community : SteamCMD

Installing Linux dedicated server for 7 days to die

linux云服务搭建七日杀服务器的更多相关文章

  1. linux云服务搭建Minecraft服务器

    1 准备工作 以下内容全部要在root用户内完成 1.1 安装文件传输工具 为了方便传文件到服务器上,这里先装一个远程传输工具. yum -y install lrzsz 1.2 安装java Min ...

  2. Linux云服务部署Spring boot项目

    Linux云服务部署Spring boot项目 背景: 之前经过两个周的时间,做了一个简单的博客网站,网址:点击进入,在本地可以正常使用以后,想着部署到服务器上,给大家伙看个乐呵,于是有了这篇部署文章 ...

  3. Linux 邮件服务搭建

    Linux 邮件服务搭建 邮件服务针对,在大型企业使用的比较多,一般小型企业都会买一些邮件服务,或者使用一些免费的邮件服务,达到我们使用的需求,并且不需要自己维护,下面我就来简单安装一下两个邮箱的案例 ...

  4. Linux基础服务搭建综合

    Linux服务综合搭建的文章目录 =============================================== 1.foundation创建yum仓库 2.部署DNS 3.将YUM源 ...

  5. Linux如何从零开始搭建rsync+serync服务器(centOS6)

    一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除 ...

  6. 腾讯云,搭建Http静态服务器环境

    任务时间:15min ~ 30min 搭建静态网站,首先需要部署环境.下面的步骤,将告诉大家如何在服务器上通过 Nginx 部署 HTTP 静态服务. 安装 Nginx 在 CentOS 上,可直接使 ...

  7. owncloud存储云服务搭建

    owncloud是一款开源的存储云,用php写的,其作用可以像百度网盘那样存放文件到这个云当中, 只要能连上网,手机,平板,电脑都可以从中下载或者上传文件,用起来非常还不错,部署的过程也很简单,废话不 ...

  8. Linux samba服务搭建

    实验准备: 准备两台机器,server0(172.25.0.11)和deskop0(172.25.0.12),要求在server0上实现samba共享,在desktop0上访问共享. 1.允许mark ...

  9. Linux系统下搭建FTP/SFTP服务器

    传输文件经常使用ftp和sftp服务器.Windows下有多种可视化工具,使用快捷.Linux经常需要自行搭建这两种服务器,当然搭建熟练的话,会更加快捷. 1.检查Linux系统是否安装了vsftp和 ...

随机推荐

  1. html学习(1)

    认识html标签 1.<h1></h1>就是标题标签,<p></p>是段落标签,img是图片标签.  2.html中的标签一般都是成对出现的,分开始标签 ...

  2. 学习使用C语言/C++编程的7个步骤!超赞~

    C是一种编译性语言.如果你以前从来没有接触过任何的编程语言,那么你则需要学习一下一个拆分的逻辑思维.当我们想要写一个项目或者软件的时候,我们需要把这个整体拆分为7个步骤,这样也会让你的思路看起来更有条 ...

  3. 带权二分图最大匹配KM算法

    二分图的判定 如果一个图是连通的,可以用如下的染色法判定是否二分图: 我们把X部的结点颜色设为0,Y部的颜色设为1. 从某个未染色的结点u开始,做BFS或者DFS .把u染为0,枚举u的儿子v.如果v ...

  4. 搭建分布式 Redis Cluster 集群与 Redis 入门

    目录 Redis 集群搭建 Redis 是啥 集群(Cluster) Redis Cluster 说明 Redis Cluster 节点 Redis Cluster 集群模式 不能保证一致性 创建和使 ...

  5. Cypress系列(67)- 环境变量设置指南

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 常见的环境变量设置方式 可参考这篇文章: ...

  6. C#文件反序列化

    前言 最近,为了实现Unity游戏数据的加密,我都把注意力放到了C#的加密方式身上,最简单的莫过于C#的序列化了,废话不多说,直接开始 准备工作 在使用文件反序列化前我们得先引用命名空间 using ...

  7. 群晖DS218+做maven私服(nexus3)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. Go之NSQ简介,原理和使用

    NSQ简介 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异. NSQ 是实时的分布式消息处理平台,其设计的目的是用来大规模地处理每天数以十亿计级别的消息.它具有分布式和去中心化 ...

  9. String字符串性能优化的探究

    一.背景 String 对象是我们使用最频繁的一个对象类型,但它的性能问题却是最容易被忽略的.String 对象作为 Java 语言中重要的数据类型,是内存中占用空间最大的一个对象,高效地使用字符串, ...

  10. Flink1.9.2源码编译和使用

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...