【Debian Apache2】${APACHE_LOG_DIR}はどこで定義されているか 環境変数

こんにちは。今回はApache2の設定で見かける${APACHE_LOG_DIR}はどこで定義されているかを解説します。/etc/apache2/apache2.confの中で${APACHE_LOG_DIR}のような記述を見かけます。

ErrorLog ${APACHE_LOG_DIR}/error.log

他にも${APACHE_LOG_DIR}や${APACHE_PID_FILE}など、${}で括られた変数が散見されます。

結論から申し上げるとこれはLinuxの環境変数です。実際confファイルが読み込まれる際には、環境変数にセットされている値で置き換わることとなります。ではこの環境変数は一体どこで定義されているのでしょうか。

環境変数の定義

環境変数は/etc/apache2/envvarsファイルで定義されています。

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
# temporary state file location. This might be changed to /run in Wheezy+1
export APACHE_PID_FILE=/var/run/apache2$SUFFIX/apache2.pid
export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
# Only /var/log/apache2 is handled by /etc/logrotate.d/apache2.
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX

新たに環境変数を定義する場合や、既存の値を書き換える場合は、上記のファイルを編集します。編集後はApache再起動で反映されます。

$ sudo service apache2 restart

環境変数の効果的な使い方

何度も記述する必要がある値の場合に環境変数の使用を検討するとよいでしょう。例えば以下のような場合です。

  • ディレクトリ情報(ドキュメントルート、証明書の保存先など。)
  • ドメイン情報

皆さんも効果的に環境変数を使用してみてください。

Apache Http Server

Posted by kobainmac