※一部コマンドに誤記がありましたので修正いたしました。(2024/1/28)
今回は、Linux でマルチサーバーを構築した際に、自動再起動や自動バックアップをさせる方法に関して解説いたします。
サーバーの構築に関してはVPSでLinuxGSM Ubuntuを利用した方法となります。
今回は、サーバーの再起動→バックアップ→再起動通知の一連の内容をシステムで組んでしまう方法となります。
再起動通知をLINEに送る方法
サーバーの再起動がされると自動でLINEに通知がくる方法を構築します。(不要な方は省略)
「自動で再起動をかけたい時間に再起動がされているか」
「エラーでサーバーが落ちた際に再起動されているか」
通知がくることでPCを起動してなくても再起動されているかどうかがわかるので少し安心できますのでおすすめです。
LINEに通知がくるようにトークンの発行をする
LINE Notify
https://notify-bot.line.me/ja/
LINE Notifyは連携させることで通知を受信できるようになるLINE公式のサービスとなります。
トークンの発行方法に関しては下記の解説ページがわかりやすいのでご参考ください。
スマートフォンでのLINE Notifyの使用方法( LINEアクセストークンの取得方法 ) | くりのまるまるせいかつ (ameblo.jp)
シェルスクリプト(.sh 拡張子のついたファイル)を作成
Windows標準のメモ帳を開いて、下記の実行コマンドをコピペして貼り付けてください。
「line-notify」という名前でシェルスクリプトの(.sh 拡張子のついたファイル)を作成します。
LINE_ACCESS_TOKEN=”〇〇〇〇〇〇〇“
“ ”の間には先ほど自身で発行したLINE トークンを入力します。
line_notify “IPアドレス: serverを再起動しました”
IPアドレスの部分にはご自身のサーバーIPアドレスを入力してください。
メモ帳で保存する時は名前をつけて保存するで.shをつけて保存します。
作成したシェルスクリプトをサーバーに保存する
「line-notify」のファイルをパルワールドのサーバーファイルに保存します。
WinSCPで/home/pwserver の直下にファイルを保存します。
※サーバー構築方法が異なる場合は保存先が違うかもしれませんのでご注意ください。
※注意
ファイルをWinSCP側に保存した際に所有者が「root」になっているとファイルが実行されません。
右クリックでプロパティを開き「グループ」「所有者」をpwserverに変更する必要があります。
また、プロパティで所有者の変更を行ったら、同時に「所有者」に対して実行権限を与える必要もあります。
Xの部分に✓を追加します。
R = 読み込み
W = 書き込み
X = 実行権限
となります。
この実行権限がないと、スクリプトファイルの実行がされないです。
テストでLINEに通知が届くか確認
保存したシェアスクリプトをTera Termでファイル実行させます。
※画像では[7dtd]となってますが気にしないでください。
7days to dieで以前に作成した際の設定のままで再起動をしたのでこのようになってます。
※IPアドレスは過去借りていたレンタルサーバーのアドレスです。
再起動時に自動バックアップを実行させる方法
バックアップファイルを作成
Win SCPで/home/pwserverの直下に「back up」ディレクトリーが完成します。
定期的にサーバーが起動しているか起動チェックをいれる→エラーで落ちている場合は自動でバックアップを取る
「line-notify」を作成した時同様に「sdtd-chk」のシェルスクリプトを作成して/home/pwdserverの直下に保存します。※所有者と実行権限を与えることは忘れずに作業します。
このスクリプトは「サーバーがスタート状態でない場合に、自動で再起動をしてバックアップを自動で取る」という実行ファイルです。
バックアップは3世代分まで保存をして、4世代以降は削除するような仕組みとなっています。
自動で4世代以降のデータを削除するのはデータ保存しているデータドライブの負荷を減らすためです。
バックアップがされた後は先ほど作成した「/line-notify.sh 」の実行ファイルが起動してLINEに通知がいくようになっています。
下記をコピーして、「pal-chk.sh」という名前でシェルスクリプトの(.sh 拡張子のついたファイル)を作成します。
このシェルスクリプトを起動させることで、パルワールドのSavesゲームに保存されているデータを、先程作成したバックアップフォルダーに保存されます。
ゲームが落ちたりした際に自動でバックアップがされるようになってます。
テストでデータバックアップが取れるか確認
下記コマンドを入力します。
※テストする際はサーバーがSTOPしているか確認してから実行してください。
サーバーがスタート状態でない場合に、再起動するプログラムとなっているのでSTOP状態にする必要があります。
コマンド実行をします。
コマンドの実行後は、実際にWinSCPでbackupファイルにデータがあるか確認します。
図のように「ERR_pal_recent」という直近でバックアップされたファイルが保存されました。
定期的にサーバーが起動しているか(エラー落ちしてないか)確認の設定をする
これまでの工程に対して、定期的に組んだプログラムを走らせないと意味がないので、時間指定をします。
今回は5分ごとにサーバーが落ちていないかチェックを入れます。
Chooseではenterで進めればOKです。
すると下記のような画面が開きます。
# m h dom dow commandの下に下記のコマンドを入力します
5分ごとに pal-chk.sh のシェルスクリプトを起動させるというコマンドとなります。
入力後は 「Ctrl+X 」を押してセーブいたします。
これによってcheakファイルが5分ごとにサーバーで起動してくれるのでサーバーがエラー落ちしてる場合、自動再起動とサーバーが落ちた際のバックアップが取られます。
サーバーをSTOPさせて、5分放置してみせください。
自動でpal-chk.shが5分ごと✓がはいる為、サーバーが自動で再起動されます。
指定した時間に自動再起動+バックアップを取る方法
前述では定期的にチェックをいれて、エラー落ちの際に自動再起動+バックアップでした。
次はサーバーを任意の時間に再起動させてバックアップをする方法となります。
下記をコピーして、「pal-bkup.sh」という名前でシェルスクリプトの(.sh 拡張子のついたファイル)を作成します。
host1=”〇〇〇〇〇〇〇“
→自身のサーバーのIPアドレスを入力します。
pass=”〇〇〇〇〇〇〇“
→自身のVPSのパスワードのパスワードを入力します。
作成したバックアップフォルダーに自動再起動時のファイルデータが保存されます。
このスクリプトは「指定した時間のサーバーをストップして、60秒後にバックアップを取り、サーバーを再起動して、LINE通知をする」という実行ファイルです。
指定した時間に再起動をする設定
再度crontabを利用して時間設定をします。
毎朝朝5時に pal-bkup.sh のシェルスクリプトを起動させるというコマンドとなります。
入力後は 「Ctrl+X 」を押してセーブいたします。
朝5時にサーバーが自動で再起動と同時にバックアップがされます。
仮に1日で数回自動再起動させたい場合は、時間を追加します。
上記の例ですと6時 / 12時/ 18時で1日3回の自動再起動とバックアップが取れるコマンドとなっています。
まとめ
今回は
①サーバーの再起動時は自身のLINEに通知を送る
②エラー時にサーバーが落ちた際は自動で再起動する
③任意の時間でサーバーを再起動させる
の3点をまとめてご紹介いたしました。
3つのシェルスクリプトを作ってしまって、IPアドレスとパスワードを書き換えるだけなので、一度ファイルを作ってしまえば次回が楽です。
作ったファイルを指定した時間で起動させるだけなので、内容だけ理解してしまえば設定は5分程度で終わります。
ぜひご参考いただき、サーバー管理が楽になればと思います。