svn环境快速搭建(svn|http|ldap)+ifSVNAdmin

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了svn环境快速搭建(svn|http|ldap)+ifSVNAdmin相关的知识,希望对你有一定的参考价值。

SVN服务快速部署:
下面讲述了3种认证方式:svn、http、ldap

1、svn认证

#查看系统版本信息
cat /etc/redhat-release
uname -rm
#安装软件并启动
yum install subversion -y
mkdir -p /application/{svndata,svnpasswd}
/usr/bin/svnserve -d -r /application/svndata --pid-file=/application/svndata/svn.pid
ps -ef|grep svn
netstat -tulpn|grep 3690
lsof -i tcp:3690

svnadmin create /application/svndata/sadoc
ls /application/svndata/sadoc/conf
cd /application/svndata/sadoc/conf
cp -a svnserve.conf svnserver.conf.$(date +%F)

sed -i ‘s/# anon-access = read/anon-access = none/g‘ /application/svndata/sadoc/conf/svnserve.conf
sed -i ‘s/# auth-access = write/auth-access = write/g‘ /application/svndata/sadoc/conf/svnserve.conf
sed -i ‘[email protected]# authz-db = [email protected] = /application/svnpasswd/[email protected]‘ /application/svndata/sadoc/conf/svnserve.conf
sed -i ‘[email protected]# password-db = [email protected] = /application/svnpasswd/[email protected]‘ /application/svndata/sadoc/conf/svnserve.conf

cp authz passwd /application/svnpasswd/
cd /application/svnpasswd/

#配置密码文件:
vim /application/svnpasswd/passwd
nick = china123
adamon = america123
等号前是SVN账号,等号后是SVN密码(明文未加密)
更改svnserve.conf时,需要重启svn,更改passwd和authz不需要重启

快速设置:
echo "nick = china123" >> /application/svnpasswd/passwd
tail -1 /application/svnpasswd/passwd

#配置授权文件:
vim /application/authz
授权主体:
1、单一SVN用户
2、SVN用户组(在[gruops]下定义用户组)
3、别名用户(在[aliases]下定义别名)
4、$authenticated变量(该变量代表所有通过验证的用户)
5、$anonymous变量(该变量代表匿名用户)
6、 * 表示任何人
权限:
w、r、rw、空(‘‘)

[aliases]

[groups]
组名 = 用户1,用户2,用户3......

格式:
[<版本库>:/项目/目录]
[/] 根目录是svnserve启动时指定的,前面指定为/application/svndata, [/] 表示对全部版本库设置权限
[repos:/sadoc] 表示对版本库repos中的sadoc项目设置权限
[repos:/sadoc/test] 表示对版本库repos中的sadoc项目的test目录设置权限
@<用户组名> = <权限>
<用户名> = <权限>

[sadoc:/] #表示对版本库sadoc的根目录授权
用户名 = r #为该用户赋予对sadoc库根目录的只读权限
@组名 = rw #为该组中的所有户赋予对sadoc库根目录的读写权限

chmod 700 -R /application/svnpasswd
pkill svnserve
/usr/bin/svnserve -d -r /application/svndata
netstat -tunlp|grep 3690

上述配置是通过svn协议访问(密码是明文) svn://
在TortoiseSVN客户端上使用svn://协议进行访问
第一次checkout时,会弹出一个Checkout窗口
URL of repository: 输入svn://10.0.0.20/sadoc #10.0.0.20时svn服务器所在地址,sadoc时使用svnadmin create创建的版本库名称
Checkout directory: 输入winddows本地端的本库库

2、http认证
下面是通过http(s)访问
yum install httpd mod_dav_svn php php-devel -y
/etc/init.d/httpd start
netstat -tunlp|grep httpd
#安装后会在/etc/httpd/conf.d/目录下生成一个subversion.conf的配置文件
cd /etc/httpd/conf.d/
cp subversion.conf{,.date +%F}

vim subversion.conf #修结果如下
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /repos> #这里的/repos可随意指定,指定成什么访问时就要用什么,访问http://localhost/repos/sadoc (必须使用这种格式访问,sadoc是使用svnadmin创建的版本库名称)
DAV svn
SVNParentPath /application/svndata #svn的根目录,使用svnserve启动时使用-r参数指定的目录
#

Limit write permission to list of valid users.

<LimitExcept GET PROPFIND OPTIONS REPORT>

Require SSL connection for password protection.

SSLRequireSSL

#
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /etc/httpd/conf.d/.svnuser
AuthzSVNAccessFile /etc/httpd/conf.d/authz
Require valid-user

</LimitExcept>

</Location>

htpasswd -cb /etc/httpd/conf.d/.svnuser nick china123
chown apache:apache /etc/httpd/conf.d/.svnuser
chmod 600 /etc/httpd/conf.d/.svnuser #这里使用600,而不使用400,主要是因为后文要配置ifSVNAmin来管理SVN,这个软件管理SVN会使用apache用户读写这个文件,如果不适用ifSVNAdmin可使用400权限

cp /application/svnpasswd/authz /etc/httpd/conf.d/authz #授权文件最好和用户认证文件.svnuser放在一个目录下,如apache的配置文件目录中
chown apache:apache /etc/httpd/conf.d/authz
chmod 600 /etc/httpd/conf.d/authz #这里使用600,而不使用400,主要是因为后文要配置ifSVNAmin来管理SVN,这个软件管理SVN会使用apache用户读写这个文件,如果不适用ifSVNAdmin可使用400权限

chown -R apache:apache /application/svndata
apachectl graceful

pkill svnserve
/usr/bin/svnserve -d -r /application/svndata
netstat -tunlp|grep 3690

通过上述设置即可通过http(s)协议来访问svn
同样适用TortoiseSVN客户端,在第一次CheckOut时,
URL of repository: 输入http://10.0.0.20/repos/sadoc/ #注意这里与svn协议不同的是访问地址多了repos,这是配置mod_dav_svn模块时指定的网络路径,sadoc是网络路径下实体存在的版本库(svnadmin创建的)
#10.0.0.20时svn服务器所在地址,repos是配置apache指定的网络路径,sadoc时使用svnadmin create创建的版本库名称
Checkout directory: 输入winddows本地端的本库库

注意:
1、虽然这样已经可以通过apache的用户认证文件(.svnuser)作为svn的认证用户,但是为认证文件中的用户授权时,仍然要在authz文件中进行,授权的具体细节见上文
2、使用http形式访问svn,务必将用户认证配置文件(.svnuser)和授权文件与apache的配置文件放在一起(放在其他目录中可能会导致apache无法读取这两个文件,导致访问失败)
3、虽然在通过svn访问的基础上配置http访问,但是之前使用svn访问的配置仍然生效,因此可同时使用svn和http访问(只不过二者使用的认证文件不同),但是授权文件需要使用同一个,否则管理起来麻烦(尽量不要同时使用,要么只使用svn,要么只使用http,要么只使用ldap,避免管理混乱)
4、使用http访问时,尽可能将svn的根目录放在apache的站点目录(/var/www)下,当然也可以不这样,如我们上面的操作就没有这样做,但是用户认证文件(.svnuser)和授权文件authz要和apache配置文件放在同一目录便于管理
5、注意使用tortoiseSVN客户端时,使用svn协议和http协议路径的不同,http协议输入路径IP地址后需要先接mod_dav_svn模块配置文件中配置的网络路径,然后再接使用svndamin创建的代码库名称

3、使用ldap认证
见ldap部分

4、使用ifSVNAdmin管理SVN配置
注意:这里的配置和上面的通过http访问svn没有关系,这里配置用于管理SVN(添加用户,授权等);上文的配置是让svn支持httpd协议访问
首选在apache中建立一个虚拟主机
[[email protected] conf.d]# vim vhost.conf
Listen 8080
<Virtualhost 10.0.0.20:8080>
Servername 10.0.0.20:8080
DocumentRoot /var/www/html/svnadmin
ErrorLog logs/svnhost-err.log
CustomLog logs/svnhost-access.log common
</Virtualhost>

mkdir -p /var/www/html/svnadmin
cd /var/www/html/svnadmin
wget http://sourceforge.net/projects/ifsvnadmin/files/svnadmin-1.6.2.zip
unzip svnadmin-1.6.2.zip
mv iF.SVNAdmin-stable-1.6.2/* ./
chmod -R 777 data/

apachectl -t
apachectl graceful
在浏览器中输入 10.0.0.20:8080
将会进入ifsvnAdmin的管理配置界面
进入后分别填入在/etc/httpd/conf.d/subversion.conf文件中指定的:
授权文件的路径 :/etc/httpd/conf.d/authz
认证文件的路径:/etc/httpd/conf.d/.svnuser
SVNParentPath指令指定的代码库父目录的路径:/application/svndata
Linux系统中svn指令的绝对路径:/usr/bin/svn
Linux系统中svnadmin指令的绝对路径:/usr/bin/svnadmin

然后单击“Save Configuration”
弹出提示“并无权限!请配置用户的admin权限”
在用户下拉列表中选择一个SVN用户作为,ifSVNAdmin网页程序的超级管理员
单击“保存”,进入HOME欢迎界面
代码仓库——列表:可查看svn上已经建立的所有的代码仓库
代码仓库——添加:输入代码库的名称(相当于使用avnadmin create 在代码库根目录下创建一个代码库);选择数据库类型(默认FSFS或BDB)
选择要创建的库的结构:
1、无预定义结构:仅仅创建一个代码库,库中无任何内容
2、但项目结构:创建一个代码库,同时在库中创建3个目录“trunk”,“branches”,“tags”
3、多项目结构:需要输入项目名称,会在代码库中以这个项目名称创建子目录,再在这个子目录中创建3个目录“trunk”,“branches”,“tags”
用户——列表:列出svn中所有的用户,有个“选择角色”分配选项,主要用用来为某个用户分配在这个ifSVNAdmin界面中能够进行哪些操作的权限
用户——添加:输入用户名及密码,即可创建一个svn用户
访问路径——权限:选择用户、选择权限、选择代码库,即可为该用户分配相应的权限(用户访问代码库的权限)

组——列表:列出所有的组
组——添加:创建一个组
组——关系:可以批量选择用户添加到某个组中

访问路径——列表:列出“svn配置信息的访问路径的列表”,可设置某个用户(项目经理)能够访问某个代码库的根路径
访问列表——添加:使用<RepoName>:/<path>格式添加代码库中的一个路径(该路径代码中必须存在,否则即使添加了且分配了权限,因不存在也无法访问),若用 "/" 作为路径,会包含该代码仓库的所有权限 .
访问路径——权限:为用户或组分配访问某个路径(代码库)的权限
设置——后端:设置认证授权文件以及指令的,前文中第一步进入界面时已经做过
Session——修改密码:修改超级管理员的登录密码

以上是关于svn环境快速搭建(svn|http|ldap)+ifSVNAdmin的主要内容,如果未能解决你的问题,请参考以下文章

apache+svn+ldap集成

Jenkins+Maven+SVN快速搭建持续集成环境

Jenkins+Maven+SVN快速搭建持续集成环境

Jenkins+Maven+SVN快速搭建持续集成环境(转)

Jenkins+Maven+SVN快速搭建持续集成环境(转)

线上svn快速服务器搭建