码迷,mamicode.com
首页 > 其他好文 > 详细

svn相关配置及学习

时间:2015-03-17 12:36:32      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:svn

一:svn独立安装配置

svn服务器有2种运行方式

1.独立服务器 (例如:svn://xxx.com/xxx);
2.借助apache。(例如:http://svn.xxx.com/xxx);

1.svn安装

#最新版本svn需要sqlite的版本最低为3.7.15,yum自带sqlite版本为3.7.12,所以需要手动编译安装最新版本sqlite

wget http://www.sqlite.org/2013/sqlite-autoconf-3071700.tar.gz

tar xf sqlite-autoconf-3071700.tar.gz

cd sqlite-autoconf-3071700

./configure && make && make install && echo OK

编译安装subversion需要apr,apr-util这里apr apr-util安装略

wget http://mirrors.cnnic.cn/apache/subversion/subversion-1.8.1.tar.bz2

tar subversion-1.8.1.tar.bz2

cd subversion-1.8.1

./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

make && make install

为了方便下操作,把svn相关的命令添加到环境变量中:
echo “export PATH=$PATH:/usr/local/subversion/bin/” >> /etc/profile
source /etc/profile

/usr/local/subversion/bin/svnserve --version

如果显示如下,svn安装成功:

2.svn配置

1)创建svn库

   创建 svn专用户  # useradd pocsvn

   创建SVN版本库目录  #mkdir /home/pocsvn/project

   创建SVN仓库 # svnadmin create /home/pocsvn/project/poc

版本仓库创建成功后,会在/home/pocsvn/project/poc/conf目录下生成三个配置文件:

authz       #权限配置

passwd    # 用户和口令配置

svnserve.conf # SVN服务配置

   将目录 project 目录拥有者修改为 pocsvn 用户:

   #chown -R pocsvn:pocsvn /home/pocsvn/project

   #chmod 755 /home/pocsvn/project

2)配置passwd文件

   vim /home/pocsvn/project/poc/conf/passwd

   fuquanjun = fuquanjun    #配置允许访问svn库的帐户,前面是用户名,后面是密码

3)配置authz(详细配置参考svn+apache)

4)配置svnserve.conf

    vim /home/pocsvn/project/poc/conf/svnserve.conf

    anon-access = read        #匿名用户只读

   auth-access = write                                      #认证用户访问版本库的权限

   password-db = /home/pocsvn/project/poc/conf/passwd  #指定用户口令配置文件名
        authz-db = /home/pocsvn/project/poc/conf/authz            #指定权限配置文件名

5)启动svn

切换到pocsvn用户  

#/usr/local/subversion/bin/svnserve -d -r /home/pocsvn/project

#默认的启动端口号为3690

-d 表示以 daemon 方式(后台运行)运行

-r 指定根目录是/home/pocsvn/project

#/usr/local/subversion/bin/svnserve -d –listen-port 9999 -r /home/pocsvn/project

–listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限;

这里编写一个svn服务启动脚本

#!/bin/bash
# build this file in /etc/rc.d/init.d/svn
# chmod 755 /etc/rc.d/init.d/svn
# centos下可以用如下命令管理svn: service svn start(restart/stop)
SVN_HOME=/home/pocsvn/project
if [ ! -f "/usr/local/subversion/bin/svnserve" ]
then
    echo "svnserver startup: cannot start"
    exit
fi
case "$1" in
    start)
        echo "Starting svnserve..."
        /usr/local/subversion/bin/svnserve -d -r $SVN_HOME
        echo "Finished!"
        ;;
    stop)
        echo "Stoping svnserve..."
        killall svnserve
        echo "Finished!"
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: svn { start | stop | restart } "
        exit 1
esac

6)查看后台进程

$ ps -ef | grep svn

root      2983     1  0 09:19 ?        00:00:00 svnserve -d -r /home/pocsvn/project

jackie    4570  2496  0 10:51 pts/1    00:00:00 grep svn

其实也可以将svn加入到开机启动
编辑rc.local文件:vi /etc/rc.d/rc.local
加入如下启动命令:
/usr/local/svn/bin/svnserve -d –listen-port 9999 -r /home/pocsvn/project
11、如果想停止svn,则使用如下命令:
killall svnserve

客户端连接SVN

在windows下比较好用的客户端是 TortoiseSVN ,下载地址:http://tortoisesvn.net/downloads.html

安装TortoiseSVN 在Windows下新建一个文件夹svn,右键点击文件夹,选择SVN Checkout:

地址如下:
svn://{your-server-ip}:9999/poc 或者 svn://{your-server-ip}/poc



二:源码配置svn+apache

1. 安装apache

pcre apr apr-util安装略

wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.6.tar.bz2

tar zxf httpd-2.4.6.tar.bz2

cd /usr/local/httpd-2.4.6

./configure --prefix=/usr/local/apache --enable-dav --enable-so --enalbe-maintainer-mode --enable-rewrite --with-deflate --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre 

make && make install

2. 安装svn

#最新版本svn需要sqlite的版本最低为3.7.15,yum自带sqlite版本为3.7.12,所以需要手动编译安装最新版本sqlite

wget http://www.sqlite.org/2013/sqlite-autoconf-3071700.tar.gz

tar xf sqlite-autoconf-3071700.tar.gz

cd sqlite-autoconf-3071700

./configure --prefix=/usr/local/sqlite

make && make install

wget http://mirrors.cnnic.cn/apache/subversion/subversion-1.8.1.tar.bz2

tar subversion-1.8.1.tar.bz2

cd subversion-1.8.1

./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-sqlite=/usr/local/sqlite 

make && make install

3. 在apache配置文件中加载svn模块

cp subversion-1.8.1/subversion/mod_authz_svn/.libs/mod_authz_svn.so /usr/local/apache/modules/

cp subversion-1.8.1/subversion/mod_dav_svn/.libs/mod_dav_svn.so /usr/local/apache/modules/

vim /usr/local/apache/conf/httpd.conf

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module    modules/mod_dav_svn.so
LoadModule authz_svn_module  modules/mod_authz_svn.so
注:必须要先加载mod_sav_svn再加载mod_authz_svn,否则报错
4.配置 svn+apache

1)创建svn库

   创建svn专用户  # useradd pocsvn

   创建SVN 版本库目录  #mkdir /home/pocsvn/project

   创建SVN仓库 # svnadmin create /home/pocsvn/project/poc

   将目录 project 目录拥有者修改为 pocsvn 用户:

   #chown -R pocsvn:pocsvn /home/pocsvn/project

   #chmod 755 /home/pocsvn/project

2)配置svn依赖apache

sed -i ‘s/User daemon/User pocsvn/‘ /usr/local/apache/conf/httpd.conf

sed -i ‘s/Group daemon/Group pocsvn/‘ /usr/local/apache/conf/httpd.conf

sed -i ‘s/#ServerName.*/ServerName localhost/‘ /usr/local/apache/conf/httpd.conf

sed -i ‘s/you@example.com/root@localhost/‘ /usr/local/apache/conf/httpd.conf

vim /usr/local/apache2/conf/httpd.conf

<Location /home/pocsvn/project>
DAV svn
SVNParentPath /home/pocsvn/project   #svn库的根目录,表示根目录下每个子目录都是一个版本库
AuthType Basic
AuthName "welcome to project"      #浏览器登陆时的提示信息。随便写
AuthUserFile /home/pocsvn/project/passwd    #用户的密码信息
AuthzSVNAccessFile /home/pocsvn/project/poc/conf/authz      #指向svn库的conf目录下authz
Require valid-user      #告诉apache在authfile中所有的用户都可以访问。如果没有它,则只能第一个用户可以访问新建库
</Location>

3)生成passwd文件

htpasswd -bc /home/pocsvn/project/passwd  hello  hello123

#在/home/pocsvn/project/下生成passwd文件,用户名为hello,密码为hello123

htpasswd -b /home/pocsvn/project/passwd  hello2  hello123

#在/home/pocsvn/project/passwd文件中添加用户名为hello,密码为hello123

4)编辑用户权限文件 authz

vi /home/pocsvn/project/poc/conf/authz

[groups]          #表示群组设置
admin = hello     #表示admin群组里的成员有hello,如果要配置多个,用逗号分隔
develop = hello2  #表示develop群组里的成员有hello2,如果要配置多个,用逗号分隔
[poc:/]           #表示仓库poc的根目录下的访问权限
hello = rw        #poc仓库hello用户具有读和写权限
hello2 = r        #poc仓库hello2用户具有只读权限
@admin = rw       #表示群admin的成员都具有读写权限
@develop = r      #表示群poc的成员都具有只读权限
[/]               #表示在所有仓库的根目录下
* = r             #表示对所有的用户都具有读权限

注:在编辑authz时,所有行都必须要顶头写,不能有缩进,否则报错。

5)修改权限

chmod 644 /home/pocsvn/project/passwd

chown -R pocsvn:pocsvn  /home/pocsvn/project/passwd

6)启动apache

service httpd start

7)通过http访问方式

http://ip地址/home/pocsvn/project/poc 会提示输入用户名密码,进去以后就可以看到相关文件了。

8)linux客户端访问方式  svn co svn://192.168.2.185/poc



三:svn多版本配置实例

既可以通过Windows客户端访问,也可以通过http访问

代码仓库有三个仓库:project1,project2,project3

假设人员有3个人:eg1,eg3,eg5,

eg1,只能访问project1;

eg3,只能访问project2;

eg5,只能访问project3;

二 实现

创建svn用户  useradd svn

创建版本库/home/svn

mkdir /home/svn

cd /home/svn

//创建三个代码仓库

svnadmin create project1

svnadmin create project2

svnadmin create project3

//把两个权限配置文件复制到SVN

//根路径下,统一管理所有代码仓库

cd/projcet1/conf

cp authz passwd /home/svn

//打开配置文件

vi svnserve.conf

 修改成如下:

anon-access = none               //禁止匿名访问

auth-access = write

password-db = /home/svn/passwd   //统一使用密码文件

authz-db = /home/svn/authz

realm =   project1               //权限域名,很重要,写你的工程名

分别修改project2的svnserve.conf和上面一样,最后一行分别写

anon-access = none               //禁止匿名访问

auth-access = write

password-db = /home/svn/passwd   //统一使用密码文件

authz-db = /home/svn/authz

realm =   project2              //权限域名,很重要,写你的工程名


分别修改project3的svnserve.conf和上面一样,最后一行分别写

anon-access = none               //禁止匿名访问

auth-access = write

password-db = /home/svn/passwd   //统一使用密码文件

authz-db = /home/svn/authz

realm =   project3              //权限域名,很重要,写你的工程名


修改两个权限管理文件:

passwd文件

//用户名 = 密码

[users]

eg1 = 123

eg3 = 123

eg5 = 123


authz文件

[groups]                  //分组

admin = eg1

guest = eg3

guset1 = eg5


[/]                 //管理者拥有所有读写权限

* =

@admin = rw


[project1:/]                 //工程1的访问控制,guest1,2无法访问

@admin = rw

eg1 = rw


[project2:/]          

@guest = rw

eg3 = rw


[project3:/]

@guest1 = rw

eg5 = rw


三 重启

svnserve -d -r /home/svn

停止命令  killall svnserve

实际测试:各组成员只能访问自己的项目,无权限查看别人的项目,只有管理员能查看所有项目工程。


四:http访问方式配置

vim /usr/local/httpd/conf/httpd.conf

<Location /home/svn>
DAV svn
SVNParentPath /home/svn 
AuthType Basic
AuthName "welcome to project"      
AuthUserFile /home/svn/passwd_web    
AuthzSVNAccessFile /home/svn/authz     
Require valid-user     
</Location>

因为http方式访问需要的密码文件需要加密,所以这里重新创建了一份用户名和密码的文件

htpasswd -bc /home/svn/passwd_web eg1 123

htpasswd -b /home/svn/passwd_web eg3 123

htpasswd -b /home/svn/passwd_web eg5 123

将目录 project 目录拥有者修改为 pocsvn 用户:

#chown -R svn:svn /home/svn

#chmod 755 /home/svn

#chmod 644 /home/svn/passwd_web  ###加强文件安全

采用http访问 http://ip地址/home/svn/project1 或者 http://ip地址/home/svn/project2 

linux客户端访问 svn co svn://192.168.2.185/project1 


假设在/home/svn/share下面还有二个项目game,mobile

方法如下:

mkdir /home/svn/share

svnadmin create /home/svn/share/game

svnadmin create /home/svn/share/mobile

修改相关文件

vim /home/svn/share/game/conf/svnserve.conf

anon-access = none               //禁止匿名访问

auth-access = write

password-db = /home/svn/passwd   //统一使用密码文件

authz-db = /home/svn/authz

realm =   game             //权限域名,很重要,写你的工程名

vim /home/svn/authz

[/]                 //管理者拥有所有读写权限

* =

eg1 = rw

[share/game:/]

eg5 = rw

[share/mobile:/]

eg1 = rw

vim /usr/local/httpd/conf/httpd.conf

<Location /home/svn>
DAV svn
SVNParentPath /home/svn 
AuthType Basic
AuthName "welcome to project"      
AuthUserFile /home/svn/passwd_web    
AuthzSVNAccessFile /home/svn/authz     
Require valid-user     
</Location>

<Location /home/svn/share>
DAV svn
SVNParentPath /home/svn/share
AuthType Basic
AuthName "welcome to project"      
AuthUserFile /home/svn/passwd_web    
AuthzSVNAccessFile /home/svn/authz     
Require valid-user     
</Location>

重新启动httpd服务

访问方式:http://ip/home/svn/share/game   http://ip/home/svn/share/mobile输入用户密码就可

以看到相关内容。

Linux客户端访问 svn co svn://192.168.2.185/share/game 

           svn co svn://192.168.2.185/share/mobile



四:svn迁移

svnadmin 命令用法:

   create :创建版本库

   dump :数据备份

   verify :版本校验

1,进入原始svn库所在路径

cd /data/svn

2,使用svnadmin将需要迁移的项目dump出来

svnadmin dump test > test.bak

3,在新服务器上安装服务端和客户端程序

yum install -y subversion

4,确定svn版本库存放路径,并使用svnadmin创建版本库

mkdir -p /data/svn

cd /data/svn

svnadmin create test

5,将备份出来的数据,导入到新的数据库

svnadmin load test < test.bak

6,数据导完后,确定conf下的几个文件:authz,passwd,svnserve.conf

7,配置svn启动脚本,并开启服务。

vim /etc/init.d/svnserve

args="--daemon --root /data/svn --pid-file=${pidfile} $OPTIONS"


参考:http://songxj.blog.51cto.com/620981/396113 

本文出自 “从心开始” 博客,请务必保留此出处http://hao360.blog.51cto.com/5820068/1621362

svn相关配置及学习

标签:svn

原文地址:http://hao360.blog.51cto.com/5820068/1621362

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!