搭建游戏服务器
root用户登陆

su root

安装需要的软件

yum install wget -y
yum install screen -y
yum install unzip -y

开放防火墙

firewall-cmd --permanent --add-port=7777/tcp
firewall-cmd --reload

建立游戏文件夹

cd /opt/
mkdir terraria
mkdir terraria/{bin,downloads}

下载服务端,版本1353

cd /opt/terraria/downloads
wget http://terraria.org/server/terraria-server-1353.zip

解压

unzip terraria-server-1353.zip -d /opt/terraria/bin

设定服务器设置

cd /opt/terraria/bin/1353/Windows
cp -p serverconfig.txt /opt/terraria/
cd /opt/terraria/
nano serverconfig.txt

在打开的nano页面最下面写入

world=/opt/terraria/Worlds/世界的名字.wld
autocreate=2
worldname=世界的名字
difficulty=0
maxplayers=4
password=设定一个密码
worldpath=/opt/terraria/Worlds

名字和密码自定

启动服务器

cd /opt/terraria/bin/1353/Linux
chmod 744 TerrariaServer.bin.x86_64
./TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt

初次运行需要时间,请耐心等待,在运行成功后的冒号后输入

exit

退出服务器后重新编辑配置文件保证自动化运行

cd /opt/terraria
cp -p serverconfig.txt serverconfig.txt_yyyymmdd
nano serverconfig.txt

在打开的nano窗口中找到autocreate,worldname,difficult,在这三项前添加#改为

#autocreate=2
#worldname=Terraria
#difficulty=1

3.制作自动启动脚本
新建脚本文件

cd /opt/terraria
nano terra_script.sh

在打开的nano窗口输入

#!/bin/bash
 
USERNAME='root'
SCNAME='root'
TERA_VER='1353'
BIN_PATH="/opt/terraria/bin/$TERA_VER/Linux/"
SERVICE='TerrariaServer.bin.x86_64'
CONFIG='/opt/terraria/serverconfig.txt'
 
 
ME=`whoami`
 
if [ $ME != $USERNAME ] ; then
   echo "Please run the $USERNAME user."
   exit
fi
 
start() {
   if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
       echo "$SERVICE is already running!"
       exit
   fi
 
   echo "Starting $SERVICE..."
   screen -AmdS $SCNAME $BIN_PATH$SERVICE -config $CONFIG
   exit
}
 
stop() {
   if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
       echo "Stopping $SERVICE "
   else
       echo "$SERVICE is not running!"
       exit
   fi
 
   screen -p 0 -S $SCNAME -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. "\015'
   sleep 10
   screen -p 0 -S $SCNAME -X eval 'stuff "exit"\015'
   exit
}
 
save() {
   echo 'World data saving...'
   screen -p 0 -S $SCNAME -X eval 'stuff "say World saveing..."\015'
   screen -p 0 -S $SCNAME -X eval 'stuff "save"\015'
   exit
}
 
status() {
   if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
                echo "$SERVICE is already running!"
                exit
   else
       echo "$SERVICE is not running!"
       exit
        fi
}
 
case "$1" in
   start)
       start
       ;;
   stop)
       stop
       ;;
   save)
       save
       ;;
   status)
       status
       ;;
   *)
       echo  $"Usage: $0 {start|stop|status|save}"
esac

这样就分别有了「启动」「关闭」「保存」「重启」了,分别对应

服务器启动 /opt/terraria/terra_script.sh start
服务器停止 /opt/terraria/terra_script.sh stop
服务器重启 /opt/terraria/terra_script.sh restart
确认状态/opt/terraria/terra_script.sh status
保存世界存档 /opt/terraria/terra_script.sh save

启动服务器测试一下脚本是否正常

chmod 744 terra_script.sh
sh -x ./terra_script.sh start

用screen检查是否正常启动

screen -ls

如果出现1 socket in /var/run/screen/S-root/说明成功

如果这时候想进入服务器后台只需要输入

screen -r

就会跳转到服务器后台

设置脚本自动启动

cd /etc/systemd/system
nano terraria.service

在打开的nano窗口输入

[Unit]
Description=Terraria Server
After=network.target local-fs.target
 
[Service]
Type=forking
User=root
ExecStart=/opt/terraria/terra_script.sh start
ExecStop=/opt/terraria/terra_script.sh stop
 
[Install]
WantedBy=multi-user.target

保存退出后输入

systemctl enable terraria

重启

reboot

如果重启后服务器可以连得上就说明自启动成功了

4.设置自动保存等定时任务
安装所需服务

yum install crontabs -y
systemctl enable crond
systemctl start crond

编辑定时任务

nano /etc/crontab

在打开的nano窗口最下面添加

*/10 * * * * root /opt/terraria/terra_script.sh save
0 5 * * * root /opt/terraria/terra_script.sh save
1 5 * * * root reboot

这代表十分钟保存一次,每天凌晨5点保存服务器,5点01分重启服务器。可以将/10改为/5,就变成五分钟保存一次了,重启的时间也可以自己定义

5.安装mod
下载tModLoader

cd /opt/terraria/downloads
wget https://github.com/tModLoader/tModLoader/releases/download/v0.11.6.2/tModLoader.Linux.v0.11.6.2.tar.gz

解压到服务器目录

tar -zxvf tModLoader.Linux.v0.11.6.2.tar.gz -C /opt/terraria/bin/1353/Linux

运行tml

cd /opt/terraria/bin/Linux
./tModLoaderServer

随便新建一个世界,接下来一路默认,成功之后输入exit关闭服务器

如果没安装java的话进行以下步骤,安装过请跳过

yum list java*
yum list java-1.8*
yum install java-1.8.0-openjdk* -y

不出意外的话在/opt/terraria/bin/1353/Linux文件夹下已经有一个文件叫tModLoaderServer.bin.x86_64,可以输入

cd /opt/terraria/bin/1353/Linux
ls

进行查看,如果没有的话运行

java -jar tModLoaderInstaller.jar

放入mod及替换世界
使用winscp(windows)或FileZilla(macOS)访问服务器,用户root端口号22
进入路径/root/.local/share/Terraria/ModLoader的文件夹,把要装的mod放进Mods文件夹,要玩的世界改名为“世界的名字”.wld放入Worlds文件夹,将Worlds文件夹内部的其他世界文件删除
(如果重开档可跳过倒入存档步骤。)

修改config文件和自动启动脚本

cd /opt/terraria
nano serverconfig.txt

在打开的nano窗口中,修改"world=/opt/terraria/Worlds/世界的名字.wld"为"world=//root/.local/share/Terraria/ModLoader/Worlds/世界的名字.wld",保存退出nano,接下来修改脚本配置

nano terra_script.sh

在打开的nano窗口中,修改SERVICE='TerrariaServer.bin.x86_64’为SERVICE=‘tModLoaderServer.bin.x86_64’,保存退出nano

重启

reboot

不出意外的话mod服就成功启动了,如果想回到非mod服只需要把上述的两个修改回最初的设置就可以。

Last modification:December 29, 2021
If you think my article is useful to you, please feel free to appreciate