Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【Ask_AI】Apacheが5回失敗(ダウン)した際に自動で再起動させる設定手順

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

【AIによる回答】

Webminの「システム・サーバ・ステータス」モジュールを使用して、Apacheが5回失敗(ダウン)した際に自動で再起動させる設定手順は以下の通りです。
前提条件
  • Webminがインストールされ、root権限でログインできること。
  • Apacheが systemd (systemctl) で管理されていること。 [1]
設定手順
  1. Webminにログインし、左メニューから 「その他」 > 「システム・サーバ・ステータス」 を選択します。
  2. 「監視対象の追加」 (Add monitor) をクリックします。
  3. 「モニタータイプ」「Apache Webserver」 (または「プロセスの監視」) を選択します。
  4. モニターの設定:
    • 説明: Apache監視(任意)
    • 監視するApacheのURL: http://localhost/
    • ステータスがダウンの時の動作: 「コマンドの実行」 を選択し、テキストボックスに以下のコマンドを入力します。
      bash
      systemctl restart httpd
      # (Debian/Ubuntuの場合は systemctl restart apache2)
      コードは注意してご使用ください。
    • コマンド実行のタイミング: 「ダウン時」 を選択します。
    • 失敗回数の設定: 「ダウンしたときのみ実行」ではなく、5回連続の失敗後に再起動したい場合は、通知設定やスケジュールの設定画面にて、「ダウンが \(N\) 回連続した後に実行」というオプションがあれば設定します。
      • 注意: Webminの標準機能では「ダウン時」の再起動が基本です。5回連続の失敗を厳密に検知したい場合は、シェルスクリプトを別途作成し、それをWebminから呼び出す方が確実です。
  5. 「監視の追加」 をクリックして設定を保存します。
確実な方法:シェルスクリプト+cron
Webminの監視機能が意図通りに動作しない場合は、以下のスクリプトを作成し、cronで5分おきに実行する方が堅牢です。 [1, 2]
bash
#!/bin/bash
# Apacheのステータスを確認
systemctl is-active --quiet httpd
if [ $? -ne 0 ]; then
    # 失敗した場合は再起動
    systemctl restart httpd
fi
コードは注意してご使用ください。
トラブルシューティング
  • 再起動しない場合: Apacheが完全に停止していない状態で再起動しようとしている可能性があります。stop をしてから start するか、systemctl restart を使用してください。
  • 設定ファイルエラー: 設定ファイル(httpd.conf)にミスがある場合、自動再起動しても再び停止します。systemctl status httpd でログを確認してください。 [1, 2, 3]
※本設定は自己責任のもと実施してください。設定ミスのループに注意してください。
シェルスクリプトの方を5回失敗したら再起動するように修正してください。再起動したらカウントはリセットしてください。
5回連続で失敗したときのみ再起動し、成功(または再起動完了)したらカウントをリセットするスクリプトは以下の通りです。
一時ファイル(/tmp/apache_fail_count)を使用して失敗回数を記録します。
bash
#!/bin/bash

# 設定
SERVICE="httpd" # Ubuntu/Debianの場合は "apache2" に変更
COUNT_FILE="/tmp/apache_fail_count"
MAX_RETRIES=5

# 失敗カウントファイルの初期化(存在しない場合)
if [ ! -f "$COUNT_FILE" ]; then
    echo 0 > "$COUNT_FILE"
fi

# 現在の失敗回数を読み込み
CURRENT_COUNT=$(cat "$COUNT_FILE")

# Apacheのステータスチェック
systemctl is-active --quiet "$SERVICE"

if [ $? -eq 0 ]; then
    # 【成功】稼働中ならカウントをリセット
    echo 0 > "$COUNT_FILE"
else
    # 【失敗】カウントをインクリメント
    CURRENT_COUNT=$((CURRENT_COUNT + 1))
    echo "$CURRENT_COUNT" > "$COUNT_FILE"

    # 5回連続失敗したか確認
    if [ "$CURRENT_COUNT" -ge "$MAX_RETRIES" ]; then
        # 再起動実行
        systemctl restart "$SERVICE"
        
        # 再起動したのでカウントをリセット
        echo 0 > "$COUNT_FILE"
        
        # ログ出力(必要であれば)
        logger "Apache has failed $MAX_RETRIES times. Restarted automatically."

    echo "Apacheの再起動が完了しました。" | mail -s "Apache Restart Notice" [受信者メールアドレス]
    fi
fi
コードは注意してご使用ください。

設定のポイント
  1. カウントの保存: スクリプトが終了しても回数を覚えておく必要があるため、/tmp 内のファイルに数字を書き込んでいます。
  2. リセット条件:
    • Apacheが正常に動いていることが確認できれば 0 に戻ります。
    • 5回目に達して再起動コマンドを送った直後も 0 に戻ります。

  3. 実行方法: crontab -e で、1分ごと(または任意の頻度)に実行するように設定してください。
    cron
    * * * * * /path/to/your/script.sh
    
    コードは注意してご使用ください。

このスクリプトを保存した後、chmod +x script.sh で実行権限を与えるのを忘れないようにしてください。
タイトルとURLをコピーしました