分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

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

发布时间:2023-09-06 01:47责任编辑:熊小新关键词:httpSVN
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 ??‘s@# authz-db = authz@authz-db = /application/svnpasswd/authz@g‘ ??/application/svndata/sadoc/conf/svnserve.conf
sed ?-i ??‘s@# password-db = passwd@password-db = /application/svnpasswd/passwd@g‘ ??/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中建立一个虚拟主机
[root@mo1 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

原文地址:http://blog.51cto.com/nickfox/2093486

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved