2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FreeBSDのapacheの設定ファイルの変化

Posted at

pkg audit で subversionのバージョンを上げたら、mod_dav_svnがapacheに読み込まれなくなって、apacheが起動しなくなったので、原因と対策について。

環境

  • FreeBSD 9(10でも同じはず)
  • apache22 2.2.29_2
  • subversion 1.8.13

現象

apacheを起動しようとすると、以下のエラーが出る。

Performing sanity check on apache22 configuration:
Syntax error on line 309 of /usr/local/etc/apache22/ssl.conf:
Unknown DAV provider: svn

mod_dav_svnがloadされないせいだと思われるので、httpd.confにLoadModuleを追加したところ、以下のエラーに変化。

Performing sanity check on apache22 configuration:
Syntax error on line 312 of /usr/local/etc/apache22/ssl.conf:
Invalid command 'AuthzSVNAccessFile', perhaps misspelled or defined by a module not included in the server configuration

原因

/usr/local/etc/apache22/modules.d と言うディレクトリに、220_subversion.conf と 220_subversion.conf.sample と言うファイルができていた。
中身を見てみると、mod_dav_svn関連のLoadModuleと設定のサンプルが書いてある(が、全てコメントアウト)
しかし、httpd.confからはこのファイルを読み込んでいない。
別のホストでapache22ではなくapache24をインストールしているものがあったので、そこのhttpd.confを確認してみたところ、LoadModuleの並んだ後に以下の行を発見。

httpd.conf
# Third party modules
IncludeOptional etc/apache24/modules.d/[0-9][0-9][0-9]_*.conf

どうも、今までは/usr/local/etc/apacheXX/Includes にあるファイルを読むようにしていたのを、/usr/local/etc/apacheXX/modules.d も読むようにしたようだ。

この辺の話は、/usr/ports/UPDATINGに書かれるべきだと思うんだけど、関連しそうなのは以下くらいしか見つけられなかった。

20140713:
  AFFECTS: users of www/apache22
  AUTHOR: ohauer@FreeBSD.org

  The default version was changed from www/apache22 to www/apache24,
  pre-build apache modules and web applications will also reflect this!

  In case ports are build by yourself and apache22 is required
  use the following command to keep apache22 as default.

  # echo "DEFAULT_VERSIONS+=apache=2.2" >> /etc/make.conf

make.conf修正してないけど、それが原因?

対策

先ほどのapache24の設定をapache22のhttpd.confに追加すると、以下のエラーが出る。

Performing sanity check on apache22 configuration:
Syntax error on line 302 of /usr/local/etc/apache22/httpd.conf:
Invalid command 'IncludeOptional', perhaps misspelled or defined by a module not included in the server configuration

調べてみると、IncludeOptionalは apache 2.3.6 以降らしいので、Includeに修正する。

httpd.conf
# Third party modules
Include etc/apache22/modules.d/[0-9][0-9][0-9]_*.conf

ちなみに、IncludeとIncludeOptionalの違いは、ワイルドカードにマッチするファイルが一つも存在しなかった場合に、IncludeOptionalの方はエラーにしないそうだ。今回はファイルが存在していることがわかっているので、Includeで問題ない。

後は、modules.dのファイルのコメントを外して、LoadModuleを有効にする。

220_subversion.conf
LoadModule dav_svn_module     libexec/apache22/mod_dav_svn.so
LoadModule authz_svn_module   libexec/apache22/mod_authz_svn.so
LoadModule dontdothat_module  libexec/apache22/mod_dontdothat.so

いい加減apache24に上げないとなあ・・・。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?