Terrariaのサーバーを自動起動してみよう

By deruz3, 2022年7月21日

前回の回では構築方法を書いてみた。
今回はシャットダウンしてしまうと手動で起動しないといけないので自動で立ち上がるスクリプトを導入してみようと思う。以前の記事はこちら

created by Rinker
スパイク・チュンソフト

自動起動の設定
手動起動ではなく、自動起動の解説

スクリプトを作成する
Terrariaサーバの起動と停止を行うためのスクリプトを作成していきます。
パラメータは各種あり、それぞれを追加していくことでいろんな機能が追加できますね。

$ vi terra_script.sh

スクリプト内で使われている変数について説明します。

変数 設定内容
USERNAME terrariaサーバ動作用ユーザ
SCNAME screenの仮想端末名
TERA_VER ダウンロードしたterrariaサーバをデータを解凍した際のディレクトリ名
BIN_PATH terrariaサーバの実行ファイルがあるディレクトリ
SERVICE terrariaサーバの実行ファイル名
CONFIG 設定ファイル
#!/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

このスクリプトはTerrariaサーバの「起動」「停止」「再起動」および「状態確認」と「ワールドデータの保存」を行うことが出来きます。

それぞれの実行方法は下記の通りとなっています。

  • サーバの起動 /opt/terraria/terra_script.sh start
  • サーバの停止 /opt/terraria/terra_script.sh stop
  • 状態確認 /opt/terraria/terra_script.sh status
  • ワールドデータ保存 /opt/terraria/terra_script.sh save

スクリプトの実行は、terraria実行用ユーザからのみ出来るようになっていますので注意してください。
前回作成したユーザー、terrariaで実行した場合に限ります。

パーミッションの設定
設定したファイルにスクリプト実行の権限をつける。

$ chmod 744 terra_script.sh

スクリプトが完成したら、実際に起動してみて動くかテストしてみます。
「terra_script.sh」を実行してTerrariaサーバが正常に起動するかの確認を行っていきます。

$ sh -x ./terra_script.sh start
仮想端末状況確認

今回、Terrariaサーバーは仮想スクリーン上で動作させてます。
よって仮想端末上で確認する必要があります。

$ screen -ls

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

 

仮想端末に接続

screen上の仮想端末には「screen -r 仮想端末名」コマンドをで接続(Attache)できるので、仮想端末に接続してTerrariaサーバが起動しているか確認してください。

$ screen -r terraria

Terraria Server v1.3.5.3

Listening on port 17777
Type ‘help’ for a list of commands.

起動が確認できましたら、念のためにクライアントからも実際にログインして遊べるか試してみてください。

この場合はサーバーのアドレスを入力します。(LAN IP)

仮想端末から抜ける

Terrariaサーバの動作確認が完了しましたら、「Ctrl」+「a」を押下した後に「d」キーを押下することでscreen上の仮想端末から抜ける(Detache)ことができるので、いったん仮想端末から抜けておきます。

 

停止確認
起動の確認が出来ましたら、次に停止の動作確認を行っていきます。

$ sh -x ./terra_script.sh stop

systemd用ファイル作成
起動・停止用のスクリプトが完成しましたら、「systemd」に登録するための設定ファイルを作成して行きます。

# su -
# cd /etc/systemd/system
# vi terraria.service

設定ファイル内の「User」の部分にはTerrariaサーバを動作用のユーザを設定してください。

[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

 

systemdへ登録

# systemctl enable terraria

 

自動動作確認

スクリプトが自動で起動してるかどうか、再起動してみてください。

# reboot

サーバの再起動後に無事Terrariaサーバの起動が確認できましたら作業完了です。
おつかれさまでした!!

あとは、Terrariaを存分に楽しんでください。

created by Rinker
スパイク・チュンソフト

What do you think?

You must be logged in to post a comment.

閲覧数 1,274 件