泰拉瑞亞Linux主機打造指南
阿新 • • 發佈:2020-03-02
![image.png](http://antzuhl.cn/upload/2020/3/image-0559d061f86a4b018043e8463b3c0b66.png)
最近玩了泰拉瑞亞,一個2D版的`我的世界`,但苦於steam的聯機太過不靠譜,經常會出現和朋友之間聯機失敗的問題,所以我把伺服器放到了部署我部落格的伺服器,這樣就可以通過IP直接讓好友加入遊戲了!
首先是購買伺服器,因為我們需要一個大家都能訪問的公網IP,所以...
Vultr最近伺服器在做活動,衝10美元送50美元,而且伺服器你除了用來放泰拉瑞亞的服務,還可以給自己搭建Vxx。
新使用者註冊才有的福利,隨便搞一個郵箱註冊就可以了。
[http://bwg.yiqimaila.com/vt/](http://bwg.yiqimaila.com/vt/)
## 前置準備
首先要解決的一個問題是伺服器記憶體問題,為了支援數百人加入,需要較高的記憶體配置,但是伺服器記憶體太貴了,啟用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
```
在最後一行新增
```
/root/swapfile swap swap defaults 0 0
```
重啟下是否生效
```
reboot
```
重啟後輸入指令檢視下SWAP是否增加
```
free -m
```
## 搭建服務
首先下載需要用到的工具庫。
```
# yum install wget
# yum install screen
# yum install unzip
```
因為泰拉瑞亞需要用到7777埠,所以我們要讓防火牆允許。
```
# firewall-cmd --permanent --add-port=7777/tcp
success
# firewall-cmd --reload
success
```
建立一個用來存放泰拉瑞亞伺服器的資料夾
```
# cd /opt/
# mkdir terraria
# mkdir terraria/{bin,downloads}
# chown -R root:root terraria
```
下載泰拉瑞亞官方提供的伺服器包。
```
$ cd /opt/terraria/downloads
$ wget http://terraria.org/server/terraria-server-1353.zip
```
解壓軟體包。
```
$ unzip terraria-server-1353.zip -d /opt/terraria/bin
```
然後需要一個配置檔案。
```
$ vi serverconfig.txt
```
檔案內容如下:
```
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
```
內容如下:
```
#!/bin/bash
USERNAME='root'
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 > /opt/terraria/logs/start.txt ; 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 > /opt/terraria/logs/stop.txt ; 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 -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.
```
這樣就算是完成了,世界的存檔就在Worlds目錄中,如果你用了MobaXterm這種支援檔案傳輸的工具連線伺服器,可以直接把遊戲存檔拉出來儲存到你自己電腦上,還可以上傳你自己單機玩的存檔。
![image.png](http://antzuhl.cn/upload/2020/3/image-691b7f9db4a34d82b32182b4f8b27