[转] Apache2 + SVN 代码同步管理
推荐用git
----2012 -11-29
-----------------------------------------
【原文:http://www.linuxidc.com/Linux/2011-07/39577.htm】
--------
一、安装Apache和SVN 相关
1. yum install httpd
2. yum install mod_dav_svn subversion
二、配置Apache
首先使用service命令启动apache,
>service apache start
有时候会提示找不到service命令,可以使用/sbin/service 代替service。
然后,要将httpd配置可以随系统启动而启动的服务,
>setup
这是会出现一个系统配置的界面:
从中选择System services,就会出现系统所有的服务列表,www.linuxidc.com自动重启的服务前面是[*],表示选中。从列表中找到httpd,选中,然后OK保存即可。
三、配置SVN
在配置完了Apache后,就要将二者结合起来了。如下操作:
1. 新建一个仓库目录:
> cd /var/www
如果没有svn目录,新建一个
> mkdir svn
使用svnadmin创建一个代码库:
> svnadmin create repos
修改apache对repos的访问权限
> chown apache.apache -R repos
2. 修改subversion.conf配置文件
> cd /etc/httpd/conf.d
> vim subversion.conf
subversion.conf的详细内容:
- #注释略去
- LoadModule dav_svn_module modules/mod_dav_svn.so
- LoadModule authz_svn_module modules/mod_authz_svn.so
- #
- # 注释略去
- <Location /svn/repos>
- DAV svn
- SVNPath /var/www/svn/repos
- </Location>
重新启动httpd服务
>service httpd restart
这个配置的内容是最基本,没有指定认证方式,所以是可以匿名访问的,在访问时使用的路径是:http://host:port/svn/repos
四、完善SVN配置,增加用户控制
在实际使用过程中,我们并不希望代码库可以匿名任意访问,因此要增加用户访问控制。
1. 添加用户
>htpasswd -cm /etc/svn-auth-file tester
提示输入密码,确保两次输入一次,然后会提示添加用户密码成功。
2. 修改subversion.conf增加访问控制
>vim subversion.conf
修改后的Location部分:
- <Location /svn/repos>
- DAV svn
- SVNPath /var/www/svn/repos
- AuthType Basic
- AuthName "Subversion repository"
- Require valid-user
- </Location>
重新启动httpd,这时再访问http://host:port/svn/repos,就会提示输入用户名和密码。
五、更多信息
1. 在上面的配置中通过SVNPath指定了一个代码仓库。但是在实际应用,往往是有多个仓库存放不同的项目代码,这时可以将SVNPath改为:
SVNParentPath /var/www/svn
2. 使用htpasswd添加用户时,认证文件svn-auth-file不存在时,使用:
htpasswd -cm /etc/svn-auth-file tester01
会创建一个的文件,并且添加tester01用户。而此后再增加用户,使用:
htpasswd /etc/svn-auth-file tester02
3. 新增加代码库后,一定修改文件夹权限,否者客户端会得到Permission Denied的提示。
4. 每次修改过配置文件以后,都要重新启动httpd服务。
对某些目录进行比较精确的访问控制,Apache httpd的mod_authz_svn模块可以帮助实现。
mod_authz_svn应该会在安装SVN是自动安装。可以打开/etc/httpd/conf.d/subversion.conf(也可能是httpd.conf)查看,里面应该可以看到:
- LoadModule dav_svn_module modules/mod_dav_svn.so
- LoadModule authz_svn_module modules/mod_authz_svn.so
要想使用这个模块,需要在subversion.conf添加AuthzSAVNAccessFile指令:
- <Location /svn>
- DAV svn
- SVNParentPath /var/www/svn
- AuthzSVNAccessFile /etc/svn-access-file
- Require valid-user
- AuthType Basic
- AuthName "Subversion repository"
- AuthUserFile /etc/svn-auth-file
- </Location>
其中/etc/svn-access-file用来指定详细的访问规则。加入现在svn下面两个repository:test1, test2,现在五个用户(在/etc/svn-auth-file):harry, sally, jack, david, alex。下面是配置文件svn-access-file的内容:
- # 以#引导的是注释
- # 大家对所有目录都有读权限(r),
- [/]
- * = r
- # 只有harry和sally可以写test1,中括号中的内容表示进行访问控制的respository
- [test1:/]
- harry = rw
- sally = rw
- # 而jack只可以写test1中的project/test/目录
------------------------------------------------------------------------------
htpasswd -cmb /usr/svn/userfile abcUser 123456
c:create
m:md5
b:在命令行上输入密码
解释:创建userfile文件,增加用户名为abc的用户,密码为md5加密的123456
userfile里存着索引的svn用户账户
更新密码
htpasswd/usr/svn/userfileabcUser
添加新用户
htpasswd /usr/svn/userfile abcUser2会要求输入密码,输两次
删除用户htpasswd -D /usr/svn/userfile abcUser2
-------------------
更改用户访问权限
相关推荐
pub_svnserve.conf的 pub_authz.conf的配置文件有非法字符的原因引起,需要查找pub_authz.conf提的非法内容比如多余的空格删除或直接将pub_authz.conf