手把手从零开始搭建《泰拉瑞亚》(Terraria)服务器
作者:广树 | 时间:2018-4-28 13:10:50 | 分类 : 其他
准备一台VPS:
首先需要准备一台VPS。
根据我目前搭建的情况来看,VPS的推荐配置如下:
CPU:2核以上
内存:2G以上
带宽:2M以上
当然以上配置全部是1也是能跑,就是可能会很慢或者游戏途中掉线。
设置一下SWAP防止因为内存不足导致游戏被强迫关闭
有些vps会默认给一些SWAP有些则不给,如果SWAP不够的话推荐增加一些以保证进程不被关闭。
确认下SWAP设置了多少
- free -m
如果足够1GB则跳过这一步直接开始搭建游戏!
删除SWAP分区
- swapoff -a
新增SWAP分区
- dd if=/dev/zero of=/root/swapfile bs=1M count=1024
格式化交换分区文件:
- mkswap /root/swapfile
启用swap分区文件
- swapon /root/swapfile
添加开机启动
- vi /etc/fstab
这里提一下vi编辑器的基本用法:
进入文本后按键盘上的insert按钮开始编辑,按esc退出编辑,输入:wq保存并退出。
添加或修改
- /root/swapfile swap swap defaults 0 0
重启下是否生效
- # reboot
重启后输入指令查看下SWAP是否增加
- free -m
开始搭建游戏:
这里我选用的是CentOS7的系统搭建。
在系统安装完毕后使用PuTTY登录VPS。(这里以自己的本地电脑是Windows为例)
PuTTY下载地址:https://www.putty.org/
PuTTY的具体使用方法这里省略,具体可以在网上搜索教程,不难的。
登录root账户后输入
- # yum install wget
- # yum install screen
- # yum install unzip
如果中途出现确认请输入 y 继续。
防火墙设置(如果有):
如果有防火墙的话则要开放端口
- # firewall-cmd --permanent --add-port=7777/tcp
- success
- # firewall-cmd --reload
- success
因为泰拉瑞亚默认使用7777端口这里就设置为7777,可以根据自己的需求修改。
给泰拉瑞亚服务器创建一个用户:
虽然不是一定要创建用户,但是还是创建一个比较方便管理!
- # useradd terraria
- # passwd 设置一个密码尽量复杂点
- Changing password for user terraria
- New password:
- Retype new password:
- passwd: all authentication tokens updated successfully
useradd为账号这里推荐terraria
passwd为密码尽量设置一个复杂的密码,其中密码输入的时候可能光标不会有任何反应,实际上已经在输入了!
从泰拉瑞亚官方下载服务器包:
创建好用户后我们先创建一个用来存放泰拉瑞亚服务器的文件夹
- # cd /opt/
- # mkdir terraria
- # mkdir terraria/{bin,downloads}
- # chown -R terraria:terraria terraria
这里前面的terraria:terraria terraria对应【账号名称:用户组名称 文件或目录】
如果前面完全是按照本教程就全部terraria吧!
下面开始下载。
目前最新的版本为1353所以对应的下载如下
- # su - terraria
- $ cd /opt/terraria/downloads
- $ wget http://terraria.org/server/terraria-server-1353.zip
这样就下载了1353版本的安装包
将包解包
- $ unzip terraria-server-1353.zip -d /opt/terraria/bin
制作一个设定文件,这里已经事先将模板文件传入到windows文件夹了,所以从这里将文件拷贝到泰拉瑞亚文件夹进行编辑。
- $ cp -p Windows/serverconfig.txt /opt/terraria/
- $ cd /opt/terraria/
- $ vi serverconfig.txt
这里再提一下vi编辑器的基本用法:
进入文本后按键盘上的insert按钮开始编辑,按esc退出编辑,输入:wq保存并退出。
在文件的末尾写上:
- world=/opt/terraria/Worlds/世界的名字.wld
- autocreate=2
- worldname=世界的名字
- difficulty=0
- maxplayers=4
- password=设定一个密码
- worldpath=/opt/terraria/Worlds
具体世界的名字和密码自定。
其中
autocreate 是没有发现世界自动生成世界的大小 1、2、3分别对应小、中、大
difficulty 对应的是0为普通,1为专家
maxplayers是最大人数
给运行文件设置权限
- $ cd /opt/terraria/bin/1353/Linux
- $ chmod 744 TerrariaServer.bin.x86_64
启动服务器
- $ ./TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt
初次运行因为要创建世界需要一定时间当看到
- Terraria Server v1.3.5.3
- Listening on port 7777
- Type 'help' for a list of commands.
- :
表示生成成功!
此时可以在游戏的多人模式通过IP进入游戏看看是否成功。
确认成功后退出服务器
- : exit
重新编辑配置文件防止重新生成世界
- $ cd /opt/terraria
- $ cp -p serverconfig.txt serverconfig.txt_yyyymmdd
- $ vi serverconfig.txt
将三个配置失效掉
- autocreate=2
- worldname=世界的名字
- difficulty=1
改为
- # autocreate=2
- # worldname=Terraria
- # difficulty=1
再次运行一次看看是否成功将生成失效掉了
制作一个自动启动的脚本:
每次重启都要重新启动很麻烦,这里就直接做一个自动启动脚本。
- $ vi terra_script.sh
按insert输入
- #!/bin/bash
- USERNAME='terraria'
- SCNAME='terraria'
- 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
这里我第一次没有把#!/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
给文件提升权限
- $ chmod 744 terra_script.sh
确认下启动
- $ sh -x ./terra_script.sh start
通过「screen -ls」确认下是否开启了窗口
- $ screen -ls
- There is a screen on:
- 883.terraria (Detached)
- 1 Socket in /var/run/screen/S-terraria.
确认下关闭
- $ sh -x ./terra_script.sh stop
和上面一样
- $ screen -ls
- No Sockets found in /var/run/screen/S-terraria.
设定自动启动:
进入root账号开始设定
- # su - root
- # cd /etc/systemd/system
- # vi terraria.service
按Insert输入
- [Unit]
- Description=Terraria Server
- After=network.target local-fs.target
- [Service]
- Type=forking
- User=terraria
- ExecStart=/opt/terraria/terra_script.sh start
- ExecStop=/opt/terraria/terra_script.sh stop
- [Install]
- WantedBy=multi-user.target
保存并退出后
- # systemctl enable terraria
重启下是否生效
- # reboot
重启后服务依旧开启则大功告成啦!
设置一个定时保存:
首先安装启动服务
- yum install crontabs
- systemctl enable crond
- systemctl start crond
编辑定时任务
- vi /etc/crontab
可以看到
- # Example of job definition:
- # .---------------- minute (0 - 59)
- # | .------------- hour (0 - 23)
- # | | .---------- day of month (1 - 31)
- # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
- # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
- # | | | | |
- # * * * * * user-name command to be executed
末尾处插入
- */10 * * * * terraria /opt/terraria/terra_script.sh save
意思是每10分钟用terraria账户运行一次保存命令。
这里还可以设置比如每天定时重启拉什么的。
比如:
- 0 5 * * * terraria /opt/terraria/terra_script.sh save
- 1 5 * * * root reboot
在重启前记得加一条保存。意思是每天5点1分重启,5点0分保存。
至此教程就全部结束了!
如果想要加入我创建的服务器,可以点击上方加入Q群后索要地址。
评论:
2019-09-18 17:54
我查了一下,cp是复制指令,这边应该是没有找到serverconfig文件吧,想请教一下博主,这个文件是什么时候生成的呢(或者是系统自带的?),谢谢了Orz
2019-07-21 19:51
服务器没必要选2核,主要限制在内存而不是CPU。2G内存其实是不够用的,我的服务器经常内存不够崩溃。
启动的时候建议给screen 加上 -L 参数,这样会有日志可以看。
2019-10-09 11:11