目的
前回はApacheでWebサーバーを構築しました。今回はApacheの公式ドキュメントをよんで、ディレクティブについて触れてみたいと思います。
実施した環境
- Ubuntu 24.04.1 LTS
- Apach/2.4.62
目次
注意事項:ファイルのバックアップ
- Apacheの設定ファイルはどこ?
- ディレクティブの使い方
- エラーログの場所
- エラーログの場所を変えてみる
- 総括
- 参考
注意事項:ファイルのバックアップ
設定ファイルを変更していく上で、間違って削除してしまったり、元に戻したくなったりする場合があります。cpコマンドで、ファイル名の拡張子に .old をつけて、保存しておくことをお勧めします。
例:text.txtのバックアップをとる
$ cp text.txt text.txt.old
# text.txtと同じ階層にtext.txt.oldが作成される
1.Apacheの設定ファイルはどこ?
公式ドキュメントによると設定ディレクトリは、 /usr/local/apache2/ 以下にあるとされています。しかし手元のPCで確認しても、 /usr/local/ 以下にapache2ディレクトリが存在しません。
これはApacheをインストールする際に、ubuntuのaptコマンドを使ったことが原因です。手元のPCで、/etc/以下を見ると、apache2ディレクトリが確認できました。
加えて、公式ドキュメントには「デフォルトの設定ファイルは、httpd.conf」と書いてありますが、/etc/apache2/apache2.conf のことです。
参考:「Ubuntu入門 – パッケージ管理コマンド apt とは?」(https://weblabo.oscasierra.net/ubuntu-apt/)
2.ディレクティブの使い方
ディレクティブとは、Apacheの設定を変える際に必要なものです。構成ファイルに構成ディレクティブを配置します。膨大な数のディレクティブがありますが、公式ドキュメントには、それぞれの説明が書いてあります。
3.エラーログの場所
サーバーを管理するにあたって欠かせないものがエラーログです。エラーログは、ErrorLogディレクティブで定義されると書いてあります。実際にapache2.confのErrorLogディレクティブを確認してみます。
$ less apache2.conf
# ErrorLog ${APACHE_LOG_DIR}/error.log と定義されているのが確認できる
# (/ErrorLog と入力すると、その文字が目立って見える)
# (戻るときは、qを押す)
{APACHE_LOG_DIR}とはApacheによって定義された変数のことです。apache2.confと同じ階層にある、envvarsファイルに定義されています。
先ほどのapache2.confと同じような方法でenvvarsを確認すると、{APACHE_LOG_DIR}とは、/var/log/apache2/ のことだとわかります。
よって、ErrorLogディレクティブは次のように考えられます。
ErrorLog ${APACHE_LOG_DIR}/error.log
= ErrorLog $/var/log/apache2//error.log
確認すると、error.logがありました。
$ cd /var/log/apache2/
$ ls
# error.logファイルがあることが確認できる
4.エラーログの場所を変えてみる
最後にディレクティブを使って、エラーログの場所を変えてみます。エラーログは、/etc/apache2/log/に作ることにします。バックアップをとっておけば、失敗しても戻すだけなので安心です。
まずapache2.confのErrorLogディレクティブのパスを変更します。ErrorLogディレクティブの説明を読むと、パスが絶対パスではない場合、ServerRootディレクティブからの相対パスになるようです。3と同じような方法で、apache2.confファイルのServerRootディレクティブを見てみます。
$ less apache2.conf
# #ServerRoot "/etc/apache2"と書いてある
ServerRootのパスが /etc/apache2/ だと分かったので、次のようにして、ErrorLogディレクティブの場所を再定義します。
$ sudo vi apache2.conf
# ErrorLog ${APACHE_LOG_DIR}/error.log を
# ErrorLog log/error.log に変更する
ErrorLogディレクティブは絶対パスで書かれていないため、ServerRootからの相対パスとなります。よってエラーログは、/etc/apache2/log/error.logに作られます。
最後にエラーログファイルをおく /etc/apache2/log/ ディレクトリを作成します。
$ pwd
# /etc/apache2/ 現在地の確認
$ sudo mkdir log
# 現在地に、logディレクトリが作成される
これで準備が完了しました。apacheを再起動すると、/etc/apache2/log/ディレクトリに、error.logファイルが作成されています。
$ sudo systemctl restart apache2
# apacheの再起動
5.総括
今回はディレクティブを使って、設定ファイルを変更させました。1つ設定を変えるだけでも、確認する場所が複数あるため大変です。
変更を取り消したいときは、変更後のファイルを消して、バックアップファイルの .old の拡張子だけを取り除けば、元のファイルに戻ります。
次回も引き続き公式ドキュメントを読んで、Apacheの理解を深めたいと思います。
6.参考
この記事は以下の情報を参考に書きました。
- Apache HTTP サーバ バージョン 2.4 ドキュメント(https://httpd.apache.org/docs/2.4/ja/)
- Apache HTTP サーバ バージョン 2.4 ドキュメント ErrorLogディレクティブ(https://httpd.apache.org/docs/2.4/mod/core.html#errorlog)