- 安装SVN/apach2
sudo apt install subversion apache2 libapache2-svn
安装好后,执行以下命令
enable dav_svn module for apache: a2enmod dav_svn
enable authz_svn module for apache: a2enmod authz_svn
- 创建SVN的Repository
svnadmin create /home/test/svn/repo/test
- 将apach2的运行用户名称加入到当前创建SVN目录的群组.
apach2的运行用户名称可以在以下文件中设置:
/etc/apache2/
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
确定svnadmin create /home/test/svn/repo/test
所在目录的所有子目录和各层集父目录的群组都包括了www-data
用户。
设置test目录下的owe和群组都为www-data
chown -R www-data:www-data /home/test/svn/repo/test
这样保证apach2在访问svn目录是不会出现访问权限不够问题。
- 配置apach2中的svn配置
vi /etc/apache2/sites-available/000-default.conf
<Location /svn>
DAV svn
SVNParentPath /home/test/svn/repo
AuthType Basic
AuthName "subversion repository"
AuthUserFile /etc/subversion/passwd
AuthzSVNAccessFile /home/test/svn/repo/test/conf/authz
Require valid-user
</Location>
- 添加SVN用户账号和加密的密码
sudo htpasswd -c /etc/subversion/passwd user_name
- 启动apach2
/etc/init.d/apache2 restart
7.常见问题
debug调试
- 打开debug调试:
vi /etc/apache2/apache2.conf
LogLevel debug <= 设置log level 为debug
/etc/init.d/apache2 restart
cat /var/log/apach2/error.log
权限问题:
文件访问问题主要是因为apache运行的user、group和访问的user的权限没有设置对导致,可以通过下面几个步骤基本解决问题。
[authz_svn:debug] [pid 22535:tid 140716650968832] mod_authz_svn.c(450): [client 109.104.152.49:50098] Path to authz file is /mnt/raid/xxx/db-repo/conf/authz
[authz_svn:error] [pid 294947:tid 139948191442688] (13)Permission denied: [client 109.104.152.49:54433] Failed to load the mod_authz_svn config: Can't open file '/mnt/raid/xxx/repo/data/conf/authz': Permission denied
Could not open the requested SVN filesystem
403 forbidden (13: Permission denied)
-
检查/etc/apache2/sites-available/000-default.conf中配置的SVNParentPath 权限是否是www-data
-
检查/etc/apache2/envvars中配置的APACHE_RUN_USER、APACHE_RUN_GROUP是否正确
export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data
-
查看/ete/group里面是否把PC访问的user name添加到www-data群组,或者www-data是否在user name群组,不在就用usermod 添加
-
检查了以上问题后在重启/etc/init.d/apache2 restart
最终通过: http://ip/svn/xxx
忘记密码可通过htpasswd重置:
sudo htpasswd -c /etc/subversion/passwd user_name
参考文献:
https://help.ubuntu.com/lts/serverguide/subversion.html