我正在尝试配置 Apache 以与 SVN 一起运行。除了身份验证之外,这运行得很好。
# /etc/init.d/apache2 restart
* Restarting web server apache2
apache2: Syntax error on line 185 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/authz_svn.load: Cannot load /usr/lib/apache2/modules/mod_authz_svn.so into server: /usr/lib/apache2/modules/mod_authz_svn.so: undefined symbol: dav_svn_split_uri
[fail]
好吧,我检查了他抱怨的配置文件:
root@uxserver:/etc/apache2# cat mods-enabled/authz_svn.load
LoadModule authz_svn /usr/lib/apache2/modules/mod_authz_svn.so
我需要自己构建该文件,因为安装软件包后该文件不可用libapache2-svn
。机器运行的是 Ubuntu,SVN 本身可以工作。这是我的...
root@uxserver:/etc/apache2# ls mods-enabled/
alias.conf authz_groupfile.load autoindex.load dav.load deflate.load mime.conf proxy_http.load ssl.conf
alias.load authz_host.load cgid.conf dav_lock.load dir.conf mime.load proxy.load ssl.load
auth_basic.load authz_svn.load cgid.load dav_svn.conf dir.load negotiation.conf rewrite.load status.conf
authn_file.load authz_user.load dav_fs.conf dav_svn.load env.load negotiation.load setenvif.conf status.load
authz_default.load autoindex.conf dav_fs.load deflate.conf headers.load proxy.conf setenvif.load
在谷歌搜索后,我发现模块加载的顺序可能不对。但我无法真正影响这一点。我甚至尝试将文件重命名authz_svn.load
为zauthz_svn.load
以便最后加载它,但这也没有用。
有什么想法吗?或者有没有其他方法可以让 apache 使用相同的身份验证svnserve
,因为我已经有一个正确运行的 svnserve。我想将 apache 附加到这个相同的存储库。
小提示:repos 只能通过 SSL 访问,强制
<Location /svn>
DAV svn
SVNPath /media/data/svn/
AuthzSVNAccessFile /media/data/svn/conf/authz
</Location>
在 vhosts 文件中。
提前致谢并致以最诚挚的问候
答案1
如果您正在运行 Ubuntu,它应该可以工作。我很久以前安装了 libapache2-svn,它将 mod_authz_svn.so 安装到我的系统中。
这是我的 dav_svn.load
root@rhea:~# cat /etc/apache2/mods-enabled/dav_svn.load
# 依赖: dav
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so
想要我以某种方式附加我的 mod_authz_svn.so,以便您查看它是否适合您?
也许您只需要启用 mod_dav_svn.so?
答案2
将来使用a2enmod modulename
Ubuntu 上的命令来启用 apache 模块。它将处理所有事情,包括 *.load 文件。根本不需要手动编辑它们。