Ubuntu 24.04/Apache環境で
- 再起動前に稼働しているサイトを確認
- 構文チェック
- 再起動
- 再起動後のサービス状況
を一括で行うスクリプトです。
スクリプト
- apache_check_restart.sh
#!/bin/bash
# サイト設定ディレクトリ
SITES_DIR="/etc/apache2/sites-enabled"
# スクリプトを root ユーザーで実行しているかチェック
if [ "$EUID" -ne 0 ]; then
echo "このスクリプトは root 権限で実行する必要があります。"
exit 1
fi
# 1. /etc/apache2/sites-enabled 配下のファイルとURL表示
echo "==== 有効なサイト設定ファイル ===="
if [ -z "$(ls -A $SITES_DIR)" ]; then
echo "サイト設定が存在しません。"
else
for site in "$SITES_DIR"/*; do
echo "設定ファイル: $(basename "$site")"
# URL部分を含むServerNameやServerAliasをgrepして表示 (重複行を削除)
grep -Ei "ServerName|ServerAlias" "$site" | sed 's/^[ \t]*//' | sort | uniq
done
fi
echo "=================================="
# 2. Apache構文チェック
echo "構文チェック中..."
apachectl configtest
if [ $? -ne 0 ]; then
echo "構文エラーが検出されました。Apacheを再起動できません。"
exit 1
fi
echo "構文チェック完了: 問題ありません。"
# 3. Apache再起動の確認
read -p "Apacheを再起動しますか? (y/n): " CONFIRM
if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
echo "Apacheを再起動します..."
systemctl restart apache2
if [ $? -ne 0 ]; then
echo "Apacheの再起動に失敗しました。"
exit 1
fi
echo "Apacheが正常に再起動されました。"
# 4. Apacheステータス確認
echo "==== Apacheステータス ===="
systemctl status apache2 --no-pager
else
echo "Apacheの再起動はキャンセルされました。"
fi
root権限で作成し、
sudo chmod +x apache_check_restart.sh
で実行権限を付与します。
動作例
sudo bash apache_check_restart.sh
==== 有効なサイト設定ファイル ====
設定ファイル: atelier.conf
ServerName atelier.reisalin.com
servername atelier.reisalin.com
設定ファイル: bookstack.conf
ServerName barrel.reisalin.com
servername barrel.reisalin.com
構文チェック中...
Syntax OK
構文チェック完了: 問題ありません。
Apacheを再起動しますか? (y/n):
Apacheが正常に再起動されました。
==== Apacheステータス ====
● apache2.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
Active: active (running) since Wed 2024-12-18 08:23:29 JST; 12ms ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 335542 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Tasks: 11 (limit: 4690)
Memory: 535.1M (peak: 2.2G swap: 0B swap peak: 67.9M)
CPU: 510ms
CGroup: /system.slice/apache2.service
├─335551 "Passenger core"
├─335577 "PassengerWatchdog (cleaning up...)"
└─335580 /usr/sbin/apache2 -k start
と表示されます。上記、一連の流れを一括で行うので便利です。