系统环境

腾讯云CentOS 8


一、准备

  1. 创建目录

    mkdir /opt/terraria
    mkdir /opt/terraria{bin,config,downloads,Worlds}
    
  2. 下载安装包

    cd /opt/terraria/downloads
    wget https://terraria.org/api/download/pc-dedicated-server/terraria-server-1432.zip
    unzip terraria-server-1432.zip ../bin
    

二、配置

  1. 复制配置文件

    cd /opt/terraria
    cp bin/1432/Windows/serverconfig.txt config/
    
  2. 编辑配置

    cd /opt/terraria
    vim config/serverconfig.txt
    

    添加如下配置

    # 世界存取位置
    world=/opt/terraria/Worlds/myworld.wld
    # 世界规模,1小,2中,3大
    autocreate=2
    # 创造世界时使用的种子,可以不填
    # seed=AwesomeSeed
    # 世界名称
    worldname=myworld
    # 世界难度,0经典, 1困难, 2大师, 3旅行
    difficulty=0
    # 最大玩家数
    maxplayers=8
    # 端口
    port=7777
    # 密码
    password=abc12345
    

    保存并关闭文件

    :wq
    

    其他配置可以参考文件内的注释


三、启动

  1. 启动

    cd /opt/terraria/bin/1432/Linux
    chmod +x TerrariaServer.bin.x86_64
    ./TerrariaServer.bin.x86_64 -config /opt/terraria/config/serverconfig.txt
    

    等待进度达到100%就启动成功了,可以在游戏里通过ip连接。如果需要后台一直运行,继续向下看。

  2. 后台运行

    先输入exit退出,然后安装screen

    yum install screen
    

    在新窗口启动

    screen -s terraria -c '/opt/terraria/bin/1432/Linux/TerrariaServer.bin.x86_64  -config /opt/terraria/config/serverconfig.txt'
    

    按ctrl + A,然后按D,回到之前的窗口,服务会一直在后台运行。输入screen -r terraria可以重新打开运行服务的窗口,输入exit退出服务。建议使用下面的脚本完成启动和停止。

    创建脚本

    cd /opt/terraria
    vim terraria.sh
    

    将以下内容复制到脚本中

    #!/bin/bash
    
    USERNAME='root'
    SCNAME='terraria'
    TERA_VER='1432'
    BIN_PATH="/opt/terraria/bin/$TERA_VER/Linux/"
    SERVICE='TerrariaServer.bin.x86_64'
    CONFIG='/opt/terraria/config/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
    

    添加可执行权限

    chmod +x terraria.sh
    

    启动服务

    ./terraria.sh start
    

    查看服务状态

    ./terraria.sh status
    

    停止服务

    ./terraria.sh stop
    
Logo

更多推荐