原生泰拉瑞亚PC版 Linux 建服步骤 您所在的位置:网站首页 泰拉瑞亚怎么查看服务器 原生泰拉瑞亚PC版 Linux 建服步骤

原生泰拉瑞亚PC版 Linux 建服步骤

2024-07-18 03:00| 来源: 网络整理| 查看: 265

一:准备一台云服务器

鉴于目前的形势,推荐大家使用Ubuntu发行版(centos已不再维护)。可以通过腾讯云或者阿里云购买,教程是以在腾讯云处购买的Ubuntu发行版为演示。(推荐购买轻量应用服务器)

二:下载服务器文件

登录泰拉瑞亚官网(https://terraria.org/),在页面最下方点击PC Dedicated Server 下载pc版服务器文件到本地计算机。

官网下载PC服务器文件包

解压后会得到三个文件包,对应的是在不同系统下的服务器文件。我们是Linux系统,所以只需要Linux下的文件。

解压后得到的三个文件包

服务器的设置文件是需要我们自己创建的,所以在解压出来的Linux文件夹下新建一个serverconfig.txt文件。注意:文件存储格式应为不带BOM的UTF-8格式,换行符应为unix换行符。如果不知道怎么设置的可以直接在我给出的样板上修改。服务器设置参数:

#设置服务器上允许的最大玩家数。数字须在1到255之间 maxplayers=10 #载入世界并自动启动服务器,需要写绝对地址。注意:服务器启动时会按此参数寻找文件,如果找不到则会按参数 worldname 自动创建世界 world=/game/terraria-server/world/world_expert.wld #设置端口号 port=2233 #设置服务器密码 password=2233 #设置游戏中迎接新一天的消息 motd=泡杯护肝茶吧 #设置存储世界文件的文件夹 worldpath=/game/terraria-server/world/ #如果找不到,则创建一个新世界。 世界大小由下式指定:1(小型)、2(中型)和3(大型)。 autocreate=3 #找不到世界时,自动创建的世界名称。不需要写.wld后缀 worldname=world_expert #banlist的位置。默认在工作目录中的“banlist.txt”。 banlist=banlist.txt #添加额外的作弊保护,就是是否允许作弊 secure=1 #默认系统优先级0:真实时间、1:高、2:高于普通、3:普通、4:低于普通、5:闲暇 #priority=0 language=zh #1.4版本难度分为0(普通), 1(专家), 2(大师), 3(旅途) difficulty=1三:上传文件并开通防火墙

通过xshell或者MobaXterm之类的连接工具,连接你所购买的服务器。并将准备好的文件夹上传至服务器上:

#建立/game目录,用于存放游戏 sudo mkdir /game #授权 sudo chmod -R 777 /game #然后就可以上传刚刚的游戏目录至服务器上的/game文件夹下了,我一般将要上传的文件夹命名为 terraria-server #再次授权 sudo chmod -R 777 /game #开通端口的防火墙,你设置的是哪个端口就开哪个 sudo ufw allow 2233

在服务器上,我的文件路径如下所示:如果版本更新了,只需再去官网下载一次,然后覆盖服务器上对应的文件就好了。

刚开通了服务器本身的防火墙,还需开通腾讯云的防火墙:

腾讯云服务器防火墙点击添加规则,设置文件写的哪个端口就开通哪个四:试运行泰拉瑞亚服务

 可通过在泰拉瑞亚主文件夹下运行  ./TerrariaServer.bin.x86_64 -config  serverconfig.txt 来运行泰拉瑞亚服务。此处指定的配置文件 serverconfig.txt 就是步骤二我们自己写的。

世界越大,启动时间越长。成功启动服务器时,最后的信息会显示: Server started

不要断开xshell或者MobaXterm之类的连接工具,试试能不能在游戏中连上服务器(此时泰拉瑞亚是运行在你打开的窗口上,断开就会让服务中断)

为了使我们即使断开也能继续运行泰拉瑞亚服务,我们需要给服务器下载screen包,在screen窗口下运行的服务,即使我们断与服务器的ssh连接,它依旧会在运行:

#如果出现提示按Y或N,同意即可 #更新软件源软件列表 sudo apt update #安装screen sudo apt install screen #几个泰拉瑞亚建服常用的screen用法: #建立名为 terraria 的窗口,用于运行泰拉瑞亚服务 screen -S terraria #离线指定窗口 screen -d 窗口名 #连接到离线的窗口 screen -r 窗口名五:服务器命令help - 显示命令列表。 playing - 显示玩家列表。可以在游戏内聊天输入/player来使用。 clear - 清空控制台。 exit - 关闭并保存服务器。 exit-nosave - 关闭并不保存服务器。 save - 保存游戏世界。 kick  - 踢人。 ban  - 禁止一个玩家进入服务器。 password - 显示密码。 password  - 更改密码。 version - 显示版本号。 time - 显示游戏时间。 port - 显示监听的端口。 maxplayers - 显示最大玩家数目。 say  - 向全体成员发生消息,他们会在聊天框中看到以黄色前缀开头的全体消息。 motd - 显示 MOTD。 motd  - 更改 MOTD。 dawn - 调整时间为黎明 (4:30 AM)。 noon - 调整时间为中午 (12:00 PM).。 dusk - 调整时间为黄昏 (7:30 PM)。 midnight - 调整时间为午夜 (12:00 AM)。 settle - 使所有水平衡。六:更好的运行泰拉瑞亚服务

为了更好的控制服务启停、日志记录、备份、重启,我编写了个名为control.sh的shell脚本放在泰拉瑞亚主目录下。直接运行,可以看到它的参数。它的参数有:

shell脚本参数start      --启动 stop       --停止 status     --查看是否启动 save       --让服务器存档(不是备份) backup     --备份,会自动关闭泰拉瑞亚服务,备份完成后会依据备份时的服务器状态选择是否自动启动服务(如果备份前服务时运行的,则会自动启动服务) dawn       --将时间切换至黎明 noon       --将时间切换至中午 dusk       --将时间切换至黄昏 midnight   --将时间切换至午夜 settle     --使所有水平衡

用法示例:,启动服务:

/game/terraria-server/control.sh start

以下是shell脚本的详细内容,抛砖引玉供大家参考交流:

#!/bin/bash ############  需手动设定的参数: #运行程序的linux用户。Ubuntu的初始用户一般都是这个,不需要改 USERNAME='ubuntu' #设定运行泰拉瑞亚的screen窗口名 SCNAME='terraria' #泰拉瑞亚主文件夹路径 BIN_PATH='/game/terraria-server/' #泰拉瑞亚二进制文件名(启动文件)。官方给的就是这个,一般不需要改 SERVICE='TerrariaServer.bin.x86_64' #泰拉瑞亚服务器参数文件路径 CONFIG='/game/terraria-server/serverconfig.txt' #泰拉瑞亚日志文件路径 LOGFILE='/game/terraria-server/run.log' ################# 不需要修改的参数 #泰拉瑞亚日志文件路径 LOGFILE=$BIN_PATH'run.log' STARTED_FLAG='Server started' END_FLAG='Saving before exit...' ########### 功能实现: #备份功能前置检查 check() { #获取世界文件路径 while read line do if [[ "$line"'X' == world*.wld'X' ]] ; then if  [[ "${line%=*}"'X' != worldname'X' ]];then break fi fi done < $CONFIG #世界名字 WORLD_PATH="${line#*=}" WORLD_NAME="${WORLD_PATH##*/}" #存放存档的文件夹 WORLD_FILE="${WORLD_PATH%/*}/" #存放备份的文件夹 BACKUP_FLIE="${WORLD_FILE}world_bak_"`date +%F`/ #检测目录是否存在,不存在则创建目录  if [[ ! -d $BACKUP_FLIE ]] || [[ ! -e $BACKUP_FLIE ]]; then   echo '即将自动创建备份目录'   sudo mkdir -p $BACKUP_FLIE   sudo chmod -R 775 $BACKUP_FLIE   echo '备份目录已创建'  fi } #启动功能 start() { if pgrep -u $USERNAME -f $SERVICE > $LOGFILE ; then echo `date +%F_%T` "服务已经在运行!" exit fi echo '启动中' echo `date +%F_%T` "Starting $SERVICE..." >> $LOGFILE screen -AmdS $SCNAME echo '已建立视窗' screen -S $SCNAME  -X stuff "${BIN_PATH}${SERVICE} -config ${CONFIG} >> ${LOGFILE}"\\n echo '视窗-服务器启动中' sleep 2 v_started=`tail -c 15  $LOGFILE` while [[ "$v_started"'x' != "$STARTED_FLAG"'x' ]] do sleep 1 v_started=`tail -c 15  $LOGFILE` done echo '启动完成' exit } #关闭服务功能 stop() { if pgrep -u $USERNAME -f $SERVICE >> $LOGFILE ; then echo '即将关闭服务并保存...' echo `date +%F_%T` "Stopping $SERVICE " >> $LOGFILE else echo `date +%F_%T` "$SERVICE is not running!" >> $LOGFILE echo '服务并未启动' exit fi echo '服务器将于12秒后关闭' screen -p 0 -S $SCNAME -X  stuff "say 服务器将于十秒后关闭. "\\n   sleep 10 screen -p 0 -S $SCNAME -X stuff "exit"\\n sleep 2 v_end=`tail -c 22  $LOGFILE` while [[ "$v_end"'x' != "$END_FLAG"'x' ]] do sleep 1 v_end=`tail -c 22  $LOGFILE` done screen -S $SCNAME -X quit echo '已关闭' exit } #存档功能 save() { echo `date +%F_%T` 'World data saving...' >> $LOGFILE screen -p 0 -S $SCNAME -X stuff "save"\\n echo '存档完成' screen -p 0 -S $SCNAME -X stuff "say 存档中..."\\n screen -p 0 -S $SCNAME -X stuff "say 存档完成"\\n exit } #查看状态功能 status() { if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then echo `date +%F_%T` "服务器运行中" exit else echo `date +%F_%T` "服务器未启动" exit fi } #备份功能 backup() { echo '检查前置' check echo '前置检查完毕' if pgrep -u $USERNAME -f $SERVICE >> $LOGFILE ; then  # 启动前是运行状态时; echo `date +%F_%T` '备份中...' >> $LOGFILE echo '17s后将关闭服务' screen -p 0 -S $SCNAME -X  stuff "say 服务器于15s后进行重启备份!"\\n   sleep 1 screen -p 0 -S $SCNAME -X  stuff "say 服务器于15s后进行重启备份!"\\n sleep 1 screen -p 0 -S $SCNAME -X  stuff "say 服务器于15s后进行重启备份!"\\n sleep 12 screen -p 0 -S $SCNAME -X  stuff "say 即将重启备份!"\\n echo '3s后将关闭服务' sleep 3 #开始关闭服务器 echo '开始关闭服务器' screen -p 0 -S $SCNAME -X stuff "exit"\\n sleep 2 v_end=`tail -c 22  $LOGFILE` while [[ "$v_end"'x' != "$END_FLAG"'x' ]] do sleep 1 v_end=`tail -c 22  $LOGFILE` done screen -S $SCNAME -X quit echo '服务器已关闭' echo '开始备份' sudo cp -p $WORLD_FILE$WORLD_NAME $BACKUP_FLIE$WORLD_NAME'_'`date +%T` echo '备份完成' echo `date +%F_%T` "备份完成" >> $LOGFILE sudo cp -p $LOGFILE $BACKUP_FLIE$WORLD_NAME'_'`date +%T`.log #开始启动 start else   # 启动前是非运行状态时; echo `date +%F_%T` '备份中...' >> $LOGFILE  echo '服务本就为关闭状态' echo '开始备份'  sudo cp -p $WORLD_FILE$WORLD_NAME $BACKUP_FLIE$WORLD_NAME'_'`date +%T`  echo '备份完成' echo `date +%F_%T` "备份完成" >> $LOGFILE sudo cp -p $LOGFILE $BACKUP_FLIE$WORLD_NAME'_'`date +%T`.log #备份日志 exit fi } #其他功能 dawn() { screen -p 0 -S $SCNAME -X  stuff "dawn"\\n   echo "已调整时间至黎明" screen -p 0 -S $SCNAME -X  stuff "say 已调整时间至黎明(4:30 AM)"\\n exit } noon() { screen -p 0 -S $SCNAME -X  stuff "noon"\\n   echo "已调整时间至中午" screen -p 0 -S $SCNAME -X  stuff "say 已调整时间至中午(12:00 PM)"\\n exit } dusk() { screen -p 0 -S $SCNAME -X  stuff "dusk"\\n   echo "已调整时间至黄昏" screen -p 0 -S $SCNAME -X  stuff "say 已调整时间至黄昏(7:30 PM)"\\n exit } midnight() { screen -p 0 -S $SCNAME -X  stuff "midnight"\\n   echo "已调整时间至午夜" screen -p 0 -S $SCNAME -X  stuff "say 已调整时间至午夜(12:00 AM)"\\n exit } settle() { screen -p 0 -S $SCNAME -X  stuff "settle"\\n   echo "已所有水平衡" screen -p 0 -S $SCNAME -X  stuff "say 已所有水平衡"\\n exit } #主程序 case "$1" in start) start ;; stop) stop ;; save) save ;; status) status ;; backup) backup ;; dawn) dawn ;; noon) noon ;; dusk) dusk ;; midnight) midnight ;; settle) settle ;; *) echo $"Usage: $0 {start|stop|status|save|backup|dawn|noon|dusk|midnight|settle}" esac



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有