前回の回では構築方法を書いてみた。
今回はシャットダウンしてしまうと手動で起動しないといけないので自動で立ち上がるスクリプトを導入してみようと思う。以前の記事はこちら
自動起動の設定
手動起動ではなく、自動起動の解説
スクリプトを作成する
Terrariaサーバの起動と停止を行うためのスクリプトを作成していきます。
パラメータは各種あり、それぞれを追加していくことでいろんな機能が追加できますね。
1 |
$ vi terra_script.sh |
スクリプト内で使われている変数について説明します。
変数 | 設定内容 |
---|---|
USERNAME | terrariaサーバ動作用ユーザ |
SCNAME | screenの仮想端末名 |
TERA_VER | ダウンロードしたterrariaサーバをデータを解凍した際のディレクトリ名 |
BIN_PATH | terrariaサーバの実行ファイルがあるディレクトリ |
SERVICE | terrariaサーバの実行ファイル名 |
CONFIG | 設定ファイル |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
#!/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サーバの「起動」「停止」「再起動」および「状態確認」と「ワールドデータの保存」を行うことが出来きます。
それぞれの実行方法は下記の通りとなっています。
スクリプトの実行は、terraria実行用ユーザからのみ出来るようになっていますので注意してください。
前回作成したユーザー、terrariaで実行した場合に限ります。
パーミッションの設定
設定したファイルにスクリプト実行の権限をつける。
1 |
$ chmod 744 terra_script.sh |
スクリプトが完成したら、実際に起動してみて動くかテストしてみます。
「terra_script.sh」を実行してTerrariaサーバが正常に起動するかの確認を行っていきます。
1 |
$ sh -x ./terra_script.sh start |
目次
今回、Terrariaサーバーは仮想スクリーン上で動作させてます。
よって仮想端末上で確認する必要があります。
1 |
$ screen -ls |
There is a screen on:
883.terraria (Detached)
1 Socket in /var/run/screen/S-terraria.
screen上の仮想端末には「screen -r 仮想端末名」コマンドをで接続(Attache)できるので、仮想端末に接続してTerrariaサーバが起動しているか確認してください。
1 |
$ 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)ことができるので、いったん仮想端末から抜けておきます。
1 |
$ sh -x ./terra_script.sh stop |
1 2 3 |
# su - # cd /etc/systemd/system # vi terraria.service |
設定ファイル内の「User」の部分にはTerrariaサーバを動作用のユーザを設定してください。
1 2 3 4 5 6 7 8 9 10 11 12 |
[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 |
1 |
# systemctl enable terraria |
スクリプトが自動で起動してるかどうか、再起動してみてください。
1 |
# reboot |
サーバの再起動後に無事Terrariaサーバの起動が確認できましたら作業完了です。
おつかれさまでした!!
あとは、Terrariaを存分に楽しんでください。
閲覧数 1,101 件
What do you think?
You must be logged in to post a comment.