CentOS-6.3安装配置SVN
<p>CentOS-6.3安装配置SVN</p>
<p>zhoulf 2013-02-02 原创
安装说明
系统环境:CentOS-6.3
安装方式:yum install (源码安装容易产生版本兼容的问题)
安装软件:系统自动下载SVN软件</p>
<p> </p>
<p>检查已安装版本
''#检查是否安装了低版本的SVN
[root@localhost /]# rpm -qa subversion</p>
<p>''#卸载旧版本SVN
[root@localhost modules]# yum remove subversion</p>
<p>安装SVN
[root@localhost modules]# yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql</p>
<p>确认已安装了svn模块
[root@localhost /]# cd /etc/httpd/modules
[root@localhost modules]# ls | grep svn
mod_authz_svn.so
mod_dav_svn.so</p>
<p>验证安装
检验已经安装的SVN版本信息
[root@localhost modules]# svnserve --version</p>
<p>svnserve,版本 1.6.11 (r934486)
编译于 Jun 23 2012,00:44:03
版权所有 (C) 2000-2009 CollabNet。
Subversion 是开放源代码软件,请参阅 <a href="http://subversion.tigris.org/">http://subversion.tigris.org/</a> 站点。
此产品包含由 CollabNet(<a href="http://www.Collab.Net/">http://www.Collab.Net/</a>) 开发的软件。 </p>
<p>下列版本库后端(FS) 模块可用: </p>
<ul>
<li>fs_base : 模块只能操作BDB版本库。 </li>
<li>fs_fs : 模块与文本文件(FSFS)版本库一起工作。 </li>
</ul>
<p>Cyrus SASL 认证可用。 </p>
<p>代码库创建
SVN软件安装完成后还需要建立SVN库
[root@localhost modules]# mkdir -p /data/svn/repositories
[root@localhost modules]# svnadmin create /opt/svn/repositories
执行上面的命令后,自动建立repositories库,查看/opt/svn/repositories 文件夹发现包含了conf, db,format,hooks, locks, README.txt等文件,说明一个SVN库已经建立。 </p>
<p>配置代码库
进入上面生成的文件夹conf下,进行配置
[root@localhost modules]# cd /opt/svn/repositories/conf</p>
<p>用户密码passwd配置
[root@localhost password]# cd /opt/svn/repositories/conf
[root@admin conf]# vi + passwd
修改passwd为以下内容: </p>
<p>[users]</p>
<h1>harry = harryssecret</h1>
<h1>sally = sallyssecret</h1>
<p>zhoulf=123456
权限控制authz配置
[root@admin conf]# vi + authz
目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容: </p>
<p>''#设置[/]代表根目录下所有的资源
[/]
zhoulf=rw
服务svnserve.conf配置
[root@admin conf]# vi + svnserve.conf</p>
<p>追加以下内容: </p>
<p>[general]
''#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none
''#使授权用户有写权限
auth-access=write
''#密码数据库的路径
password-db=passwd
''#访问控制文件
authz-db=authz
''#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=/opt/svn/repositories
配置防火墙端口
[root@localhost conf]# vi /etc/sysconfig/iptables
添加以下内容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
保存后重启防火墙
[root@localhost conf]# service iptables restart</p>
<p>启动SVN
svnserve -d -r /opt/svn/upyuan</p>
<p>查看SVN进程
[root@localhost conf]# ps -ef|grep svn|grep -v grep
root 12538 1 0 14:40 ? 00:00:00 svnserve -d -r /opt/svn/repositories</p>
<p>检测SVN 端口
[root@localhost conf]# netstat -ln |grep 3690
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN</p>
<p>停止重启SVN
[root@localhost password]# killall svnserve //停止
[root@localhost password]# svnserve -d -r /opt/svn/repositories // 启动 </p>
<p>测试
SVN服务已经启动,使用客户端测试连接。
客户端连接地址:svn://192.168.15.231
用户名/密码: zhoulf/123456
测试创建文件夹等操作。</p>
<p>重新安装svn的方法(原有文件夹在/data/svn/9isoft目录下)</p>
<p>首先yum install mod_dav_svn</p>
<p>然后打开端口3690 </p>
<p>最后 svnserve -d -r /data/svn/9isoft </p>
<p>centos开机自动启动SVN服务的方法</p>
<p>1、编辑rc.local文件 </p>
<p>vi /etc/rc.d/rc.local</p>
<p>2、加入如下启动命令 </p>
<p>svnserve -d -r /data/svn/repositories </p>
<p>svnserve -d -r /data/svn/upyuan</p>
<p>客户端选择文件夹后 选择relocate</p>
<p>3 svn停止</p>
<p>killall svnserve</p>
<p>svn子目录权限控制
现在有四个小组分别对应四个子目录;
olddev 核心小组可以访问所有
doc 文档小组只能访问doc
upserver 服务器自动部署小组
app app开发小组 只能访问app
html 前端开发 只能访问html</p>
<p>[groups]
olddev=younger,chenpeng,namy,wangqr
doc=team1,team2,team3,gaoby,jdw,tongy
upserver=upyuan
app=app,star
html=html
''# harry_sally_and_joe = harry,sally,&joe</p>
<p>[/]
@olddev = rw
@doc = rw
@upserver = rw
@app=rw
@html=rw</p>
<p>[/php]
@olddev=rw
@upserver = rw
@doc=
@app=
@html=
[/doc]
@olddev=rw
@upserver =
@doc=rw
@app=
@html=</p>
<p>[/app]
@olddev=rw
@upserver =
@doc=
@app=rw
@html=</p>
<p>[/html]
@olddev=rw
@upserver =
@doc=
@app=
@html=rw</p>
<p>'' # [repository:/baz/fuz]
'' # @harry_and_sally = rw
'' # * = r</p>
<p>svn自动提交到web服务器
首先在服务器文件部署在 /var/www/html/v3.1/</p>
<p>'' # svn co svn://svn.9isoft.com --username upyuan --password update789</p>
<p>修改hooks目录下的文件;post-commit 并且赋予可执行权限</p>
<p>export LANG=en_US.UTF-8 </p>
<p>cd /var/www/html/v3.1/svn.9isoft.com</p>
<p>/usr/bin/svn update --username "upyuan" --password "update789" --no-auth-cache </p>
<p>cent OS 6.4下的SVN服务器构建 一搭建好SVN服务器只能管理一个工程,如何做到不同的项目,多个成员的权限管理分配呢?
一 需求
开发服务器搭建好SVN服务器,不可能只管理一个工程项目,如何做到不在一个项目中的开发人员不能访问其它项目中的代码,做好技术保密工作。
代码仓库有三个仓库:project1,project2,project3
假设人员有6个人:eg1,eg2,eg3,eg4,eg5,eg6
eg1,eg2,只能访问project1;
eg3,eg4,只能访问project2;
eg5,eg6,只能访问project3;
二 实现
在你的仓库路径下:假如是/home/sv
1
2
3
4
5
6
7
8
9
10
11
cd /data/svn
//创建三个代码仓库
svnadmin create project1
svnadmin create project2
svnadmin create project3
//把两个权限配置文件复制到SVN
//根路径下,统一管理所有代码仓库
cd/projcet1/conf
cp authz passwd /data/svn
//打开配置文件
vi svnserve.conf</p>
<p> 修改成如下:
1
2
3
4
5
anon-access = none //禁止匿名访问
auth-access = write
password-db = /data/svn/passwd //统一使用密码文件
authz-db = /data/svn/authz
realm = project1 //权限域名,很重要,写你的工程名
分别修改project2的svnserve.conf
和上面一样,最后一行分别写
1
2
3
4
5
anon-access = none //禁止匿名访问
auth-access = write
password-db = /data/svn/passwd //统一使用密码文件
authz-db = /data/svn/authz
realm = project2 //权限域名,很重要,写你的工程名</p>
<p>分别修改project3的svnserve.conf
和上面一样,最后一行分别写
1
2
3
4
5
anon-access = none //禁止匿名访问
auth-access = write
password-db = /data/svn/passwd //统一使用密码文件
authz-db = /data/svn/authz
realm = project3 //权限域名,很重要,写你的工程名</p>
<p>修改两个权限管理文件:
passwd
1
2
3
4
5
6
7
8
//用户名 = 密码
[users]
eg1 = 123
eg2 = 123
eg3 = 123
eg4 = 123
eg5 = 123
eg6 = 123
authz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[groups] //分组
admin = eg1,eg2
guest = eg3,eg4
guset1 = eg5,eg6
[/] //管理者拥有所有读写权限</p>
<ul>
<li>=
@admin = rw
[project1:/] //工程1的访问控制,guest1,2无法访问
@admin = rw
或
eg1 = rw
eg2 = rw
[project2:/]
@guest = rw
或
eg3 = rw
eg4 = rw
[project3:/]
@guest1 = rw
或
eg5 = rw
eg6 = rw</li>
</ul>
<p>三 重启
1
svnserve -d -r /data/svn
停止命令
1
killall svnserve
实际测试:
各个组成员只能访问自己的项目,无权限查看别人的项目
只有管理员才能查看所有项目工程</p>