從零開始搭建terraria(泰拉瑞亞)服務器

準備一臺VPS:

首先需要準備一臺VPS。

根據我目前搭建的情況來看,VPS的推薦配置如下:

CPU:2核以上

內存:2G以上

帶寬:2M以上

設置一下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

製作一個設定文件

$ 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分保存。

至此教程就全部結束了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章