linux云服务搭建七日杀服务器
<p></p><div class="toc"><div class="toc-container-header">目录</div><ul><li>准备工作<ul><li><ul><li>1.设置swap</li><li>2.安装screen</li><li>3.安装SteamCmd运行所需环境</li><li>4.创建一个用户</li></ul></li></ul></li><li>steamCMD与七日杀服务器端<ul><li><ul><li>1.下载并安装SteamCMD</li><li>2.登录steam账号</li><li>3.下载七日杀服务端</li><li>4.配置服务端</li><li>5.配置防火墙</li><li>6.启动服务器</li></ul></li></ul></li><li>补充<ul><li><ul><li>1.几个重要路径和文件</li></ul></li></ul></li><li>null<ul><li><ul><li>2.添加mod</li><li>3.管理服务器</li></ul></li></ul></li></ul></div><p></p><h1 id="准备工作">准备工作</h1>
<p>首先你需要拥有一个云服务器,内地的主流云服务平台有阿里云、腾讯云等,如果你在海外可以选择AWS、google云服务等。七日杀服务端的建议最低配置是2core 4G,内存8G及以上最佳。考虑到目前国内云服务的价格比较,在校大学生可以考虑使用学生优惠的1core 2G套餐,配置swap后勉强够用。</p>
<p>云服务器的主机名一般是一串很长的乱码,例如显示在用户终端上很影响使用。比如我在修改前是:</p>
<pre><code class="language-shell">$
</code></pre>
<p>为了方便以后使用,建议大家先修改它。</p>
<pre><code class="language-shell"># 这些操作要在root中进行。
hostnamectl set-hostname centos7 #可以改成你喜欢的主机名,别太长
hostname # 查看下
centos7
vim /etc/hosts # 编辑下hosts文件, 给127.0.0.1添加hostname
cat /etc/hosts # 检查
</code></pre>
<p>修改之后像这样:</p>
<pre><code class="language-shell">$
</code></pre>
<p>舒服多了!</p>
<h3 id="1设置swap">1.设置swap</h3>
<p>这些操作都在root中进行。</p>
<p>linux系统的swap空间类似windows系统的虚拟内存。如果你的云服务器内存小于4G,比如只有2G内存,那你就必须设置一个swap空间,否则启动服务器时会因为内存不足导致进程killed。</p>
<p>使用<code>swapon</code>命令可以检查系统是否已经配置过swap,云服务器一般都没有提前设置swap。</p>
<pre><code class="language-shell">swapon -s # 如果该命令没有返回出结果,则代表该系统尚未配置过swap。
df -h # 检查可用的存储空间
</code></pre>
<p>如果没有,按如下步骤创建Swap文件。一般建议swap大小设置为自己物理内存相同或两倍。我这里设置了4G。</p>
<pre><code class="language-shell"># 这些操作要在root中进行。
sudo fallocate -l 4G /swapfile # 请根据自己情况修改swap大小
ls -lh /swapfile
sudo chmod 600 /swapfile # 更改swap文件的权限,否则会有很大的安全隐患
ls -lh /swapfile # 然后检查是否设置完成
</code></pre>
<p>启用swap文件</p>
<pre><code class="language-shell">sudo mkswap /swapfile
sudo swapon /swapfile
# 确认一下设置是否已经生效
swapon -s
free -m
</code></pre>
<p>前面设置的swap会在重启后失效,通过修改fstab让配置永久生效。</p>
<pre><code class="language-shell">sudo vim /etc/fstab
</code></pre>
<p>按 <code>i</code> 进入输入模式,在文件末尾加入下面这行内容。</p>
<pre><code>/swapfile swap swap sw0 0
</code></pre>
<p>按esc退出输入模式,输入 <code>:wq</code> 保存退出。(对vim操作不熟悉的,可以搜索“vim指令”进一步学习)</p>
<p><code>swappiness</code>参数决定了系统将数据从内存交换到swap空间的频率。该数值越接近于0,系统越倾向于不进行swap,最大限度使用物理内存。数值越接近100,越倾向于使用swap,而过多的使用swap可能导致服务器运行效率缓慢。ubuntu系统的默认推荐值是60,这里我为了保证服务器运行效率,建议设置为10。</p>
<pre><code class="language-shell">cat /proc/sys/vm/swappiness # 查看当前的swappiness
sudo sysctl vm.swappiness=10 #修改swappiness为10
</code></pre>
<p>编辑sysctl配置文件,使其永久生效</p>
<pre><code>sudo vim /etc/sysctl.conf
</code></pre>
<p>按 <code>i</code> 进入输入模式,将以下内容粘贴到文件末尾:</p>
<pre><code>vm.swappiness = 10
</code></pre>
<p>按esc退出输入模式,输入 <code>:wq</code> 保存退出。</p>
<h3 id="2安装screen">2.安装screen</h3>
<p>安装screen,后面开服时会用到。使用screen可以让服务器进程在后台运行,而不会因为远程连接的断开而停止进程。</p>
<pre><code class="language-shell"># RedHat/CentOS
yum install -y screen
# Ubuntu/Debian
apt install screen
</code></pre>
<h3 id="3安装steamcmd运行所需环境">3.安装SteamCmd运行所需环境</h3>
<pre><code class="language-shell"># 这些操作要在root中进行,根据你的系统选择不同指令。
# Ubuntu/Debian 64位
sudo apt -y install lib32gcc1
# RedHat/CentOS 32位
sudo yum -y install glibc libstdc++
# RedHat/CentOS 64位
sudo yum -y install glibc.i686 libstdc++.i686
</code></pre>
<h3 id="4创建一个用户">4.创建一个用户</h3>
<p>不建议使用root系统进行后面的操作,这里我们为steam创建一个专门的用户。</p>
<pre><code class="language-shell">useradd -m steam # 新建一个名为steam的用户
passwd steam # 为用户steam设置密码
su - steam # 切换至新建的steam用户。改成root,可以切换回root用户
</code></pre>
<p>修改用户终端配色。</p>
<p>CentOS7的终端和指令颜色一样,大端的代码中难以区分。修改一下用户终端的配色,可以大大的提高整个shell页面的可读性,方便你更快的找到每段代码的开头。</p>
<p>修改前后如下图所示:</p>
<p><img src="https://img2020.cnblogs.com/blog/1660935/202011/1660935-20201119125312069-909578565.jpg" alt="" loading="lazy"></p>
<p>输入以下指令修改终端配色。</p>
<pre><code class="language-shell"># 临时修改配色
PS1="\[\e[\[\e\u\[\e@\h \[\e\W\[\e]\\$ "
# 永久修改vim配色
vim ~/.bashrc #编辑.bashrc文件
</code></pre>
<p>加入这一行</p>
<pre><code>PS1="\[\e[\[\e\u\[\e@\h \[\e\W\[\e]\\$ "
</code></pre>
<p>保存退出。</p>
<pre><code class="language-shell">source ~/.bashrc # 重新加载bash配置
</code></pre>
<h1 id="steamcmd与七日杀服务器端">steamCMD与七日杀服务器端</h1>
<h3 id="1下载并安装steamcmd">1.下载并安装SteamCMD</h3>
<p>确定你当前在你新建的steam用户中,如果不是,请使用<code>su - steam</code>切换用户。目前版本steamcmd必须直接解压在 <code>~</code> 目录下,否则会报错。</p>
<pre><code class="language-shell"># 这些操作要在刚才创建的steam用户中进行,请不要使用root用户!
#cd至~目录
cd ~
# 下载Linux系统专用的SteamCMD
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
# 解压
tar -zxf steamcmd_linux.tar.gz
</code></pre>
<p>运行SteamCmd</p>
<pre><code class="language-shell"># 运行steamcmd
./steamcmd.sh
</code></pre>
<p>首次运行steamcmd,他会自己下载更新自己。等出现<code>steam></code>时,就可以对steamcmd进行操作啦。</p>
<h3 id="2登录steam账号">2.登录steam账号</h3>
<p>你可以使用steam账号登录,或匿名登录<code>login anonymous</code>。但是七日杀必须要steam登录才可以下载服务端。</p>
<pre><code class="language-shell">login <用户名> <密码>
# 如果设置了安全令牌,会让你输入一次安全令牌
</code></pre>
<h3 id="3下载七日杀服务端">3.下载七日杀服务端</h3>
<pre><code class="language-shell">force_install_dir ~/7DaysToDieServer # 设置服务端安装目录
app_update 294420 validate # 下载七日杀服务端,294420是七日杀的编号
# 本文由 @白火shiraka 辛苦编写,未经授权禁止转载
# 白火的博客主页:www.cnblogs.com/shiraka
# 如果你在白火shiraka的博客、知乎、B站以外的地方看到这篇文章,帮忙举报侵权,十分感谢!
# 下载会持续一段时间,请耐心等待
</code></pre>
<p>等到出现如图所示的 Success! App '294420' fully installed.之后便可以退出steamcmd了。</p>
<pre><code class="language-shell">quit #退出SteamCmd
</code></pre>
<h3 id="4配置服务端">4.配置服务端</h3>
<pre><code class="language-shell"># 进入七日杀服务端根目录
cd ~/7DaysToDieServer
# 编辑配置文件
vim serverconfig.xml
</code></pre>
<p>下面翻译了部分参数。</p>
<pre><code class="language-xml"><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"/> <!-- 游戏难度 默认难度是2 -->
<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"/> <!-- 玩家之间能造成的伤害,0.禁止杀戮 1.只能杀死盟友 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="EACEnabled" value="false"/> <!-- #反作弊,默认true,开启可以防止玩家作弊,同时也会使部分mod不可使用。 -->
<property name="TelnetEnabled" value="true"/> <!-- 是否开启Telnet -->
<property name="TelnetPort" value="8081"/> <!-- Telnet端口 -->
<property name="TelnetPassword" value="mdzz"/> <!-- #Telnet密码 -->
<!-- 以上内容由 @白火shiraka 翻译整理,未经授权禁止转载 -->
<!-- 白火的博客主页:www.cnblogs.com/shiraka -->
<!-- 如果你在白火shiraka的博客、知乎、B站以外的地方看到这篇文章,帮忙举报侵权,十分感谢! -->
<!-- 更多设置请参考配置文件中的注释,英语不好的同学善用翻译软件!-->
</code></pre>
<h3 id="5配置防火墙">5.配置防火墙</h3>
<p>还需要在防火墙放行以下端口,才可让服务器正常运转。阿里云请在平台的安全组页面添加规则,其他云平台可能有不同的安全组设置方式,大同小异。</p>
<table>
<thead>
<tr>
<th>端口</th>
<th>协议</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>8080</td>
<td>TCP</td>
<td>Web控制台</td>
</tr>
<tr>
<td>8081</td>
<td>TCP</td>
<td>Telnet端口(这个建议不要放行)</td>
</tr>
<tr>
<td>8082</td>
<td>TCP</td>
<td>如果安装了Alloc的mods,这个端口可以展示地图</td>
</tr>
<tr>
<td>26900/26902</td>
<td>UDP</td>
<td>客户端通讯</td>
</tr>
</tbody>
</table>
<p>Telnet建议不要放行,直接在服务器中使用<code>telnet localhost 8081</code>即可登录telnet。</p>
<p>如果一定要用远程telnet连接,请务必在serverconfig.xml中设置好TelnetPassword后,再放行端口。该行为有很大的风险。</p>
<h3 id="6启动服务器">6.启动服务器</h3>
<p>创建一个名为7DayServer的screen,可以让服务器在后台运行,断开远程连接也不终止进程。</p>
<pre><code class="language-shell">screen -S 7DaysServer
</code></pre>
<p>启动服务器</p>
<pre><code class="language-shell">./startserver.sh -configfile=serverconfig.xml
</code></pre>
<p>按住Ctrl + A +D 将screen加入后台运行</p>
<p>当你需要回到这个sreen页面时,使用如下指令。</p>
<pre><code class="language-shell">screen -ls # 查看screen,记下7DaysServer的编号
screen -r <7DaysServer的编号>
</code></pre>
<h1 id="补充">补充</h1>
<h3 id="1几个重要路径和文件">1.几个重要路径和文件</h3>
<p>路径</p>
<pre><code class="language-shell"># 路径取决于你的设置的安装位置,如果完全按照本文操作,那么路径如下
~/7DaysToDieServer # 七日杀服务端主目录
~/7DaysToDieServer/Data/Worlds # 七日杀服务端地图目录
~/.local/share/7DaysToDie/Saves # 七日杀服务端存档目录
~/7DaysToDieServer/7DaysToDieServer_Data # 七日杀服务器日志输出目录
~/7DaysToDieServer/Mods # Mods目录,需要自己创建
</code></pre>
<p>文件</p>
<pre><code class="language-shell">~/.local/share/7DaysToDie/Saves/serveradmin.xml # 服务器配置文件
~/7DaysToDieServer/serverconfig.xml # 管理员配置文件
</code></pre>
<h1 id="_"></h1>
<h3 id="2添加mod">2.添加mod</h3>
<p>想添加mod的同学看这里。</p>
<pre><code class="language-shell">cd ~/7DaysToDieServer # cd至七日杀服务端主目录
mkdir Mods # 创建mods文件夹
</code></pre>
<p>服务器的mod和自己平时玩的mod基本通用,跟在自己游戏中装mod一样,将mod文件放入Mods文件夹中即可。</p>
<p>上传mods到服务器上的方法有很多,比如Xshell中可以使用lrzsz上传。</p>
<pre><code class="language-shell"># 以下操作要在root用户中进行
# Ubuntu/Debian
sudo apt-get install lrzsz
# RedHat/CentOS
yuminstall lrzsz
</code></pre>
<p>安装zip/unzip 用于解压mod压缩包</p>
<pre><code class="language-shell"># Ubuntu/Debian
apt-get install zip
# RedHat/CentOS
yum install zip unzip
</code></pre>
<p>上传mod文件,并解压。</p>
<pre><code class="language-shell"># 使用su - steam,回到steam用户中继续操作
cd ~/7DaysToDieServer
rz #直接将mod的压缩包上传文件至linux
unzip <压缩包名> # 一般mod压缩包内自带Mods文件夹,直接解压即可
# 如果解压后路径不对,可以使用mv指令移动至Mods文件下
</code></pre>
<h3 id="3管理服务器">3.管理服务器</h3>
<p>在服务器中安装telnet。(也可以用Xshell的远程telnet连接,这里不做赘述)</p>
<pre><code class="language-shell"># 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
</code></pre>
<pre><code class="language-shell">telnet localhost 8081 #登录服务器telnet
</code></pre>
<p>管理员指令</p>
<pre><code class="language-shell">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的名义广播一条信息
</code></pre>
<p>参考:</p>
<p>Steam Developer Community : SteamCMD</p>
<p>Installing Linux dedicated server for 7 days to die</p><br><br>
来源:https://www.cnblogs.com/shiraka/p/14004966.html
頁:
[1]