Ifdefineディレクティブを使ってみる
ApacheのIfdefineディレクティブを使うと、起動時のパラメータでディレクティブの設定を
変えることが出来たりします。今回はこれを使った例のメモ。
設定例
IfDefineディレクティブを使うと、起動時のパラメータ
たとえば、以下のように設定してみます。
<IfDefine MAINTENANCE> DocumentRoot "/var/www/maintenance" <Directory "/var/www/maintenance"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> </IfDefine> <IfDefine !MAINTENANCE> DocumentRoot "/var/www/html" <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> </IfDefine>
上の例の場合、Apache起動時のオプションによって、ドキュメントルートを
切り替えることが出来ます。
Apache起動時に設定を変える
- Dオプションを指定するかしないかでドキュメントルートを切り替えます。
以下のようにすると、「/var/www/maintenance」がドキュメントルートになります。
# /usr/sbin/httpd -DMAINTENANCE
起動スクリプトのオプションとして用意しておくと、モードを切り替えるような使い方も可能です。
(略) maintenance() { echo -n $"Starting $prog: " LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd -DMAINTENANCE RETVAL=$? echo [ $RETVAL = 0 ] && touch ${lockfile} return $RETVAL } (略) case "$1" in start) start ;; maintenance) maintenance ;; stop) stop ;; status) status -p ${pidfile} $httpd RETVAL=$? ;; restart) stop start ;; condrestart|try-restart) if status -p ${pidfile} $httpd >&/dev/null; then stop start fi ;; force-reload|reload) reload ;; graceful|help|configtest|fullstatus) $apachectl $@ RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}" RETVAL=2 esac
今日はこんなところで。