安装http 服务
yum install -y httpd
检查http是否安装
httpd -version
安装httpd支持SVN的模块 mod_dav_svn
yum install mod_dav_svn -y
安装成功后,会有mod_dav_svn.so和mod_authz_svn.so两个文件。
find / -name mod_dav_svn.so
/usr/lib64/httpd/modules/mod_dav_svn.so
find / -name mod_authz_svn.so
/usr/lib64/httpd/modules/mod_authz_svn.so
安装httpd 验证模块 mod_auth_basic
yum install mod_auth_basic -y
安装httpd支持openLDAP 的模块
yum install mod_auth_ldap -y
安装SVM服务
- 第一步:通过yum命令安装svnserve,命令如下:
yum -y install subversion
- 第二步:创建版本库目录(此仅为目录,为后面创建版本库提供存放位置)
mkdir /svnrepos
- 第三步:创建svn版本库
在第二步建立的路径基础上,创建版本库
svnadmin create /svnrepos/dev
(dev为你预期的版本库名称,可自定义) - 第四步:配置修改
进入已经创建好的版本库目录下,也就是前文说创建的xxxx
进入conf
cd /svnrepos/dev/conf
conf db format hooks locks README.txt
conf目录下,一共存放三份重要的配置文件,如下:
ls
authz passwd svnserve.conf
authz:负责账号权限的管理,控制账号是否读写权限
passwd:负责账号和密码的用户名单管理
svnserve.conf:svn服务器配置文件
http+svn 的配置
如果不使用ldap认证,而使用密码文件认证则配置文件可以改为:
<Location /repos>
DAV svn
SVNPath /svnrepos/dev
AuthType Basic
AuthName "SVN Authorization Realm"
#使用htpasswd产生的密码文件
AuthUserFile /svnrepos/dev/conf/passwd
#目录分组权限
AuthzSVNAccessFile /svnrepos/dev/conf/authz
#允许匿名读取
Satisfy Any
Require valid-user
</Location>
ldap+svn 的配置
<Location /repos>
DAV svn
#svn 路径,如果有多个子项目使用 SVNParentPath
SVNPath /svnrepos/dev
SVNListParentPath On
#svn目录分组权限
AuthzSVNAccessFile /svnrepos/dev/conf/authz
AuthBasicProvider ldap
AuthType Basic
AuthName "Subversion repository"
#搭建的openldap url地址
AuthLDAPURL "ldap://192.168.85.129:389/dc=dev,dc=com?uid?sub?(objectClass=*)"
# 配置 openldap的cn、dc
AuthLDAPBindDN "cn=admin,dc=dev,dc=com"
# 配置openldap的管理员密码
AuthLDAPBindPassword "abc123"
Require valid-user
</Location>
其他
1、svn服务器有2种运行方式:独立服务器 和 借助apache。2种方式各有利弊。这里是以apache整合的;
独立服务的方式为svnserve -d -r /data1/svnroot 方式启动进程,监听端口为3690 。
2、svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。默认使用的存储方式也是FSFS方式。
vim /etc/httpd/conf/svnauthz.conf
[groups]
admin=robin,svnadmin,ybk
[/]
@admin = rw
[test:/]
ybk= rw
zzy = rw
注:
1、上面的test对应的是svnadmin下create的目录。
2、@admin对应的是管理员组,可以再建其他组,如:java_team 、oam、market等。robin、svnadmin、ybk、zzy这些都是用户名 。如果要和ldap进行整合的话,确保这些用户在ldap中存在。
3、使用if-svnadmin 这类web程序做svn的用户权限管理时,需要确保svnauthz.conf文件对apache用户可写,不然在if-svnadmin修改时不生效。
4、确保/data1/svnroot目录apache用户可读写或直接属主改过apache,不然在使用TortoiseSVN等程序上传或删除时会提示权限拒绝。
权限配置总结
用户组格式:
[groups]
用户组名 = 用户1,用户2
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。
版本库目录格式:
[版本库:/项目目录]
@用户组名 = 权限
用户名 = 权限
其中,方框号内部分可以有多种写法:
/,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/home/svnroot/repository。这样,/就是表示对全部版本库设置权限。
test:/,表示对版本库test设置权限
权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。
SVN其相关组件及用途如下:
svn
命令行客户端程序。
svnversion
此工具用来显示工作拷贝的状态(用术语来说,就是当前项目的修订版本)。
svnlook
直接查看Subversion版本库的工具。
svnadmin
建立、调整和修复Subversion版本库的工具。
svndumpfilter
过滤Subversion版本库转储数据流的工具。
mod_dav_svn
ApacheHTTP服务器的一个插件,使版本库可以通过网络访问。
svnserve
一个单独运行的服务器程序,可以作为守护进程或由SSH调用。这是另一种使版本库可以通过网络访问的方式。
svnsync
一个通过网络增量镜像版本库的程序
apache和svnserver两种方式的访问方法
http://192.168.1.222/repos,采用了Apache作为服务器的话就可以以这种形式访问,权限由Apache设置。
svn://192.168.1.222/repos,采用了svnserve作为服务器的话那么就可以采用这种形式访问,它是一种基于TCP/IP的访问方式。权限由仓库的配置文件设置。