准备一台VPS:

首先需要准备一台VPS。

根据我目前搭建的情况来看,VPS的推荐配置如下:

CPU:2核以上

内存:2G以上

带宽:2M以上

当然以上配置全部是1也是能跑,就是可能会很慢或者游戏途中掉线。


设置一下SWAP防止因为内存不足导致游戏被强迫关闭

有些vps会默认给一些SWAP有些则不给,如果SWAP不够的话推荐增加一些以保证进程不被关闭。

确认下SWAP设置了多少

  1. free -m

如果足够1GB则跳过这一步直接开始搭建游戏!


删除SWAP分区

  1. swapoff -a

新增SWAP分区

  1. dd if=/dev/zero of=/root/swapfile bs=1M count=1024

格式化交换分区文件:

  1. mkswap /root/swapfile

启用swap分区文件

  1. swapon /root/swapfile

添加开机启动

  1. vi /etc/fstab

这里提一下vi编辑器的基本用法:
进入文本后按键盘上的insert按钮开始编辑,按esc退出编辑,输入:wq保存并退出。

添加或修改

  1. /root/swapfile swap swap defaults 0 0

重启下是否生效

  1. # reboot

重启后输入指令查看下SWAP是否增加

  1. free -m


开始搭建游戏:

这里我选用的是CentOS7的系统搭建。

在系统安装完毕后使用PuTTY登录VPS。(这里以自己的本地电脑是Windows为例)

PuTTY下载地址:https://www.putty.org/

PuTTY的具体使用方法这里省略,具体可以在网上搜索教程,不难的。

登录root账户后输入

  1. # yum install wget
  2. # yum install screen
  3. # yum install unzip

如果中途出现确认请输入 y 继续。


防火墙设置(如果有):

如果有防火墙的话则要开放端口

  1. # firewall-cmd --permanent --add-port=7777/tcp
  2. success
  3. # firewall-cmd --reload
  4. success

因为泰拉瑞亚默认使用7777端口这里就设置为7777,可以根据自己的需求修改。


给泰拉瑞亚服务器创建一个用户:

虽然不是一定要创建用户,但是还是创建一个比较方便管理!

  1. # useradd terraria
  2. # passwd 设置一个密码尽量复杂点
  3. Changing password for user terraria
  4. New password:
  5. Retype new password:
  6. passwd: all authentication tokens updated successfully

useradd为账号这里推荐terraria

passwd为密码尽量设置一个复杂的密码,其中密码输入的时候可能光标不会有任何反应,实际上已经在输入了!


从泰拉瑞亚官方下载服务器包:

创建好用户后我们先创建一个用来存放泰拉瑞亚服务器的文件夹

  1. # cd /opt/
  2. # mkdir terraria
  3. # mkdir terraria/{bin,downloads}
  4. # chown -R terraria:terraria terraria

这里前面的terraria:terraria terraria对应【账号名称:用户组名称 文件或目录】

如果前面完全是按照本教程就全部terraria吧!

下面开始下载。

目前最新的版本为1353所以对应的下载如下

  1. # su - terraria
  2. $ cd /opt/terraria/downloads
  3. $ wget http://terraria.org/server/terraria-server-1353.zip

这样就下载了1353版本的安装包

将包解包

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

制作一个设定文件,这里已经事先将模板文件传入到windows文件夹了,所以从这里将文件拷贝到泰拉瑞亚文件夹进行编辑。

  1. $ cp -p Windows/serverconfig.txt /opt/terraria/
  2. $ cd /opt/terraria/
  3. $ vi serverconfig.txt

这里再提一下vi编辑器的基本用法:

进入文本后按键盘上的insert按钮开始编辑,按esc退出编辑,输入:wq保存并退出。

在文件的末尾写上:

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

具体世界的名字和密码自定。

其中

autocreate 是没有发现世界自动生成世界的大小 1、2、3分别对应小、中、大

difficulty 对应的是0为普通,1为专家

maxplayers是最大人数


给运行文件设置权限

  1. $ cd /opt/terraria/bin/1353/Linux
  2. $ chmod 744 TerrariaServer.bin.x86_64

启动服务器

  1. $ ./TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt

初次运行因为要创建世界需要一定时间当看到

  1. Terraria Server v1.3.5.3
  2.  
  3. Listening on port 7777
  4. Type 'help' for a list of commands.
  5.  
  6. :

表示生成成功!

此时可以在游戏的多人模式通过IP进入游戏看看是否成功。


确认成功后退出服务器

  1. : exit

重新编辑配置文件防止重新生成世界

  1. $ cd /opt/terraria
  2. $ cp -p serverconfig.txt serverconfig.txt_yyyymmdd
  3. $ vi serverconfig.txt

将三个配置失效掉

  1. autocreate=2
  2. worldname=世界的名字
  3. difficulty=1

改为

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

再次运行一次看看是否成功将生成失效掉了


制作一个自动启动的脚本:

每次重启都要重新启动很麻烦,这里就直接做一个自动启动脚本。

  1. $ vi terra_script.sh

按insert输入

  1. #!/bin/bash
  2.  
  3. USERNAME='terraria'
  4. SCNAME='terraria'
  5. TERA_VER='1353'
  6. BIN_PATH="/opt/terraria/bin/$TERA_VER/Linux/"
  7. SERVICE='TerrariaServer.bin.x86_64'
  8. CONFIG='/opt/terraria/serverconfig.txt'
  9.  
  10.  
  11. ME=`whoami`
  12.  
  13. if [ $ME != $USERNAME ] ; then
  14. echo "Please run the $USERNAME user."
  15. exit
  16. fi
  17.  
  18. start() {
  19. if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
  20. echo "$SERVICE is already running!"
  21. exit
  22. fi
  23.  
  24. echo "Starting $SERVICE..."
  25. screen -AmdS $SCNAME $BIN_PATH$SERVICE -config $CONFIG
  26. exit
  27. }
  28.  
  29. stop() {
  30. if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
  31. echo "Stopping $SERVICE "
  32. else
  33. echo "$SERVICE is not running!"
  34. exit
  35. fi
  36.  
  37. screen -p 0 -S $SCNAME -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. "\015'
  38. sleep 10
  39. screen -p 0 -S $SCNAME -X eval 'stuff "exit"\015'
  40. exit
  41. }
  42.  
  43. save() {
  44. echo 'World data saving...'
  45. screen -p 0 -S $SCNAME -X eval 'stuff "say World saveing..."\015'
  46. screen -p 0 -S $SCNAME -X eval 'stuff "save"\015'
  47. exit
  48. }
  49.  
  50. status() {
  51. if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
  52. echo "$SERVICE is already running!"
  53. exit
  54. else
  55. echo "$SERVICE is not running!"
  56. exit
  57. fi
  58. }
  59.  
  60. case "$1" in
  61. start)
  62. start
  63. ;;
  64. stop)
  65. stop
  66. ;;
  67. save)
  68. save
  69. ;;
  70. status)
  71. status
  72. ;;
  73. *)
  74. echo $"Usage: $0 {start|stop|status|save}"
  75. esac

这里我第一次没有把#!/bin/bash输入进去结果导致一直启动失败。

其中

USERNAME='terraria'

要对应自己的用户名

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

分别对应:

  • 服务器启动 /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

给文件提升权限

  1. $ chmod 744 terra_script.sh

确认下启动

  1. $ sh -x ./terra_script.sh start

通过「screen -ls」确认下是否开启了窗口

  1. $ screen -ls
  2. There is a screen on:
  3. 883.terraria (Detached)
  4. 1 Socket in /var/run/screen/S-terraria.

确认下关闭

  1. $ sh -x ./terra_script.sh stop

和上面一样

  1. $ screen -ls
  2. No Sockets found in /var/run/screen/S-terraria.


设定自动启动:

进入root账号开始设定

  1. # su - root
  2. # cd /etc/systemd/system
  3. # vi terraria.service

按Insert输入

  1. [Unit]
  2. Description=Terraria Server
  3. After=network.target local-fs.target
  4.  
  5. [Service]
  6. Type=forking
  7. User=terraria
  8. ExecStart=/opt/terraria/terra_script.sh start
  9. ExecStop=/opt/terraria/terra_script.sh stop
  10.  
  11. [Install]
  12. WantedBy=multi-user.target

保存并退出后

  1. # systemctl enable terraria

重启下是否生效

  1. # reboot

重启后服务依旧开启则大功告成啦!


设置一个定时保存:

首先安装启动服务

  1. yum install crontabs
  2. systemctl enable crond
  3. systemctl start crond

编辑定时任务

  1. vi /etc/crontab

可以看到

  1. # Example of job definition:
  2. # .---------------- minute (0 - 59)
  3. # | .------------- hour (0 - 23)
  4. # | | .---------- day of month (1 - 31)
  5. # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  6. # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  7. # | | | | |
  8. # * * * * * user-name command to be executed

末尾处插入

  1. */10 * * * * terraria /opt/terraria/terra_script.sh save

意思是每10分钟用terraria账户运行一次保存命令。

这里还可以设置比如每天定时重启拉什么的。

比如:

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

在重启前记得加一条保存。意思是每天5点1分重启,5点0分保存。

至此教程就全部结束了!

如果想要加入我创建的服务器,可以点击上方加入Q群后索要地址。