在Ubuntu上的Apache:模块dav_module已经加载

13

我刚将我的Subversion仓库从一个老的FreeBSD服务器迁移到了一个新的Ubuntu 16服务器,并配合使用了Apache 2.4。我在“sites-available”中配置了一个新站点并重启了Apache,但是出现了以下错误:

[so:warn] [pid 15619] AH01574: module dav_module已经被加载,跳过

看起来所有与dav相关的模块都不同。我没有看到dav_module被加载两次:

# cd /etc/apache2
# grep -rI "LoadModule" * | grep dav
mods-available/dav_fs.load:LoadModule dav_fs_module /usr/lib/apache2/modules/mod_dav_fs.so
mods-available/dav_svn.load:LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
mods-available/dav.load:LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so
mods-available/dav_lock.load:LoadModule dav_lock_module /usr/lib/apache2/modules/mod_dav_lock.so

除了Subversion和Apache之外,我还安装了以下软件包:

# apt-get install subversion-tools libapache2-svn

我注意到安装过程中已经加载了模块(a2enmod),所以我在这方面没有做任何事情。
这是我的虚拟主机配置:
<VirtualHost *:443>
  DocumentRoot /var/www/subversion
  ServerName svn.domain.com
  ErrorLog "|/usr/bin/rotatelogs -l /var/log/subversion/svn-error.%Y.%m.%d 86400"
  CustomLog /var/log/subversion/svn-access_log "%t %u %{SVN-ACTION}e" env=SVN-ACTION

  <Location "/">
     DAV svn 
     SVNPath /var/www/subversion

     #Authenticated users only
     Require valid-user
     # authenticating them valid ones
     AuthType Basic
     AuthName "Subversion Repository"
     AuthUserFile /var/www/passwd/.htpasswd-svn
       order deny,allow
       deny from all 
       satisfy any 
  </Location>

  SSLEngine on
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  SSLCACertificateFile /etc/ssl/local_certs/2018-domain.com/intermediate.crt
  SSLCertificateFile /etc/ssl/local_certs/2018-domain.com/public.crt
  SSLCertificateKeyFile /etc/ssl/local_certs/2018-domain.com/private.key

  <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
  </FilesMatch>

  BrowserMatch ".*MSIE.*" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0

  <Directory /var/www/subversion>
    Options -Indexes
  </Directory>
</VirtualHost>

尽管出现了这个警告,但一切都很正常,不过消除它仍然是件好事。

1个回答

31

您的虚拟主机配置很好,与警告无关。问题是由两个包含的配置文件创建的,它们都加载了mod_dav.so

  • mods-enabled/dav_svn.load:作为依赖项加载DAV模块
  • mods-enabled/dav.load:(显然)

dav_svn.load很小心,并且仅在模块尚未加载时才包括dav.load,但是dav.load没有这样的检查。如果dav.loaddav_svn.load之前包含,则可以正常工作,但显然在您的情况下并未发生这种情况(顺便说一下,这里也是相同的)。

通过更改dav.load的内容,我能够消除警告:

LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so

<IfModule !mod_dav.c>
    LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so
</IfModule>

这个问题应该作为功能或错误请求发布在Apache2上,是否已经完成了? - Pipo
@Pipo:这可能是针对Ubuntu的Apache打包的特定问题。该错误应该在Launchpad上进行报告,但我目前没有活跃的帐户,所以我还没有这样做。 - Zilk
在 Debian 9 更新后出现了相同的问题,通过 Zilk 的答案解决了。谢谢!! - Peter
3
在Debian 10中有相同的问题。我认为它没有被修复('18,'19,'20)。 - Rickyx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接