バーチャルホストの削除
バーチャルホストの削除は、以下の順序で処理を行います。
①バーチャルホストの設定の無効化②ユーザーの削除③ログディレクトリの削除
①バーチャルホストの設定の無効化
バーチャルホスト作成時には、バーチャルホストのconfigを処理の最後に生成しました。バーチャルホスト削除時には反対に、最初にconfigファイルを無効化します。また、バーチャルホスト作成時には、バーチャルホストを即時公開するとは限らないため、手動でApacheを再読み込みするようにしていますが、バーチャルホスト削除時は、削除対象のバーチャルホストを見せないという要件が決まっているので、設定ファイルをバックアップディレクトリ(/etc/httpd/conf.d/BACKUP)に退避後、運用ツールがすぐにApacheを再読み込みするようにしています。
## VirtualHost Config Disable
[ ! -d /etc/httpd/conf.d/BACKUP ] && mkdir -p /etc/httpd/conf.d/BACKUP
for D in $(cat ${VHLIST} | grep -i ^delete | awk '{print $2}' | sort | uniq)
do
if [ -f /etc/httpd/conf.d/${D}.conf ];
then
mv /etc/httpd/conf.d/${D}.conf /etc/httpd/conf.d/BACKUP
service httpd reload
fi
done
②ユーザーの削除
ユーザーの削除は、ユーザーのホームディレクトリをtar.gz形式で圧縮し、それを/home/vhosts/BACKUPディレクトリにバックアップした上で行います。
## User Delete
[ ! -d /home/vhosts/BACKUP ] && mkdir -p /home/vhosts/BACKUP
for E in $(cat ${VHLIST} | grep ^delete | awk '{print $2}')
do
if [ -d /home/vhosts/${E} ];
then
(cd /home/vhosts/${E} ; tar czf /home/vhosts/BACKUP/${DATE}_${E}.tar.gz .)
userdel -r $(cat ${VHLIST} | grep ${E} | grep -i ^delete | awk '{print $3}' | sort | uniq)
else
userdel -r $(cat ${VHLIST} | grep ${E} | grep -i ^delete | awk '{print $3}' | sort | uniq)
fi
done
③ログディレクトリの削除
ログディレクトリも、/home/logs/BACKUPディレクトリにtar.gz形式で圧縮し、バックアップした上で削除します。
## Log Directory Delete
[ ! -d /home/logs/BACKUP ] && mkdir -p /home/logs/BACKUP
for F in $(cat ${VHLIST} | grep -i ^delete | awk '{print $2}')
do
if [ -d /home/logs/${F} ];
then
(cd /home/logs/${F} ; tar czf /home/logs/BACKUP/LOGS_${F}_${DATE}.tar.gz *)
rm -fr /home/logs/${F}
fi
done
4. 後処理とOSの再起動
生成した運用ツール(VHMAINTE)には実行権が必要なので付与します。そして最後に、一撃シェルスクリプトは自分自身を削除し、OSをを再起動します。
chmod 700 ${HOME}/bin/VHMAINTE
rm -f $0
reboot
以上で今回の一撃シェルスクリプトを見終えました。バーチャルホストを作成してApacheを再読み込みし、hostsまたはDNSで名前解決を行った後に、ブラウザでサイトを開いてみてください。
おわりに
今回は、Apacheのホスティング環境を構築する一撃シェルスクリプトを紹介しましたが、いかがでしたでしょうか? このようにサーバー構築を一撃シェルスクリプトで自動化することで品質の均一化、作業工数の削除を行うことができます。
次回は、Nginx+PerlのCGI環境にMovable Typeをインストールする一撃シェルスクリプトを紹介します。お楽しみに。
