こんにちは。
VPSでWeb サーバーを運用していると、
たまに攻撃や障害でサーバーが落ちてしまうことがあります。
最初の頃は「いつから落ちてたんだ?」と気づかず、気づいたときにはサイトが長時間止まっていた…なんてこともありました。
とはいえ、四六時中サーバーを監視しているわけにもいきません。
そんなときに便利なのが、systemdの自動再起動設定です。
この仕組みを入れておくと、nginxやphp-fpmが落ちても数秒後には自動で再起動してくれます。
完全に無停止にはできませんが、数秒のダウンで済むので、精神的にかなり楽になりますし
無料で導入できるのは有り難いですよね。
お客様を抱えているなら尚更やっておくべき対策だと思います。
私は導入してからは「またサーバー落ちてないかな?」と不安になることがなくなり、ストレスフリーな運用ができるようになりました。
自動起動設定手順
私はAlma Linuxで設定しています。
他のOSの場合、動かない可能性がありますので、別途調べてください。
systemd設定ファイルの編集
以下のコマンドでファイルを開いてください。
sudo systemctl edit nginx
ファイルの一番下に以下内容をペーストしてください。
[Service]
Restart=always
RestartSec=10
Restart=always
alwaysはサービスが停止したときに必ず再起動する設定です。
Nginxが何らかの理由で落ちても、自動で立ち上がります。
他の指定もあります。
- no:再起動しない(デフォルト)
- on-failure:異常終了(0以外の終了コード)の場合のみ再起動
- on-abort:プロセスが異常終了した場合のみ再起動
ご自身にサーバーに合った指定をおこなってください。
RestartSec=10
サービスを再起動する前に待つ秒数を指定します。
この例だと10としているので、サーバーが落ちてから10秒後にNginxが再起動します。
数字を小さくしすぎるとすぐに再起動はしますが、何度も頻繁に落ちる場合は負荷がかかるので注意してください。
設定内容を、反映・再起動する
設定した内容は更新しないと反映されないので、以下のコマンドを実行しましょう。
sudo systemctl daemon-reload
Nginxの再起動も必ず忘れずにおこなってください。
sudo systemctl restart nginx
反映した内容が実行されるか確認をした方がいいので、以下のコマンドを実行してください。
ポイント
設定ミスがあると再起動時に落ちるので、手間ですが必ず事前に確認してください。
pkill -9 nginx
サイトに接続するとサーバーが落ちていると思います。
ですので、10秒後に画面を更新してサイトが表示されていたら反映されている事が確認できます。
ログで状態を確認
以下のコマンドで、ログを確認してください。
ちゃんとサービスが再起動しているか、、、エラーが出ていないか確認しましょう。
まとめ
- Restart=alwaysで常に自動再起動
- RestartSec=10で再起動までの間隔を設定
- 設定テストとログ確認は必須
この設定を行うだけで、Nginxが落ちてもすぐに復旧でき、サーバーの安定性がぐっと向上します。
サーバー運用者はぜひぜひ設定してください。
コメント