首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > CVS SVN >

[转] Apache2 + SVN 代码同步治理

2012-07-26 
[转] Apache2 + SVN代码同步管理【原文:http://www.linuxidc.com/Linux/2011-07/39577.htm】?-------- 一、安

[转] Apache2 + SVN 代码同步管理

【原文: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

???? 这是会出现一个系统配置的界面:

?[转] Apache2 + SVN  代码同步治理

?从中选择System services,就会出现系统所有的服务列表,www.linuxidc.com自动重启的服务前面是[*],表示选中。从列表中找到httpd,选中,然后OK保存即可。

? [转] Apache2 + SVN  代码同步治理?

????三、配置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的详细内容:

  1. #注释略去?? LoadModule?dav_svn_module?modules/mod_dav_svn.so??
  2. LoadModule?authz_svn_module?modules/mod_authz_svn.so?? ??
  3. #?? #?注释略去??
  4. <Location?/svn/repos>?? ??DAV?svn??
  5. ??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部分:

  1. <Location?/svn/repos>?? ??DAV?svn??
  2. ??SVNPath?/var/www/svn/repos?? ??AuthType?Basic??
  3. ??AuthName?"Subversion?repository"?? ??Require?valid-user??
  4. </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)查看,里面应该可以看到:

  1. LoadModule?dav_svn_module?????modules/mod_dav_svn.so?? LoadModule?authz_svn_module???modules/mod_authz_svn.so??

?????? 要想使用这个模块,需要在subversion.conf添加AuthzSAVNAccessFile指令:

  1. <Location?/svn>?? ????????DAV?svn??
  2. ????????SVNParentPath?/var/www/svn?? ????????AuthzSVNAccessFile?/etc/svn-access-file??
  3. ????????Require?valid-user?? ????????AuthType?Basic??
  4. ????????AuthName?"Subversion?repository"?? ????????AuthUserFile?/etc/svn-auth-file??
  5. </Location>??

???????? 其中/etc/svn-access-file用来指定详细的访问规则。加入现在svn下面两个repository:test1, test2,现在五个用户(在/etc/svn-auth-file):harry, sally, jack, david, alex。下面是配置文件svn-access-file的内容:

  1. #?以#引导的是注释 ? #?大家对所有目录都有读权限(r), ??
  2. [/]?? *?=?r ?
  3. #?只有harry和sally可以写test1,中括号中的内容表示进行访问控制的respository ?? [test1:/]??
  4. harry?=?rw?? sally?=?rw ?
  5. #?而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/userfile abcUser

添加新用户
htpasswd /usr/svn/userfile abcUser2

会要求输入密码,输两次

?

删除用户
htpasswd -D /usr/svn/userfile abcUser2

?

-------------------

更改用户访问权限

?

?

热点排行