svn配置



SVN搭建

 

服务器端环境

CentOS 6.0 + VMware 8.0.0build-471780

# svnserver --version

1.6.11 (r934486),编译于 Sep 21 2011, 14:59:40

 

 

 

 

 

 

客户端环境

Windows XP Professional版本2002 Service Pack 3 + TortoiseSVN-1.7.7.22907-win32-svn-1.7.5.msi

 

 

 

 

默认情况下,CentOS是已经安装了svn服务器的,接下去,直接配置svn服务器端即可

SVN配置

参考资料:http://johnshen0708.iteye.com/blog/1275506

              http://linuxguest.blog.51cto.com/195664/179617/

 

 

 

创建组和用户,修改用户密码:

#groupadd svn 

#useradd svnroot -g svn 

#paswd svnroot     (新密码:123456)

 

 

使用svnroot用户登录

#su - svnroot 

 

 

创建repository及版本库(例如work)

# mkdir /home/svnroot/repository 

# svnadmin create/home/svnroot/repository/work

 

 

修改repository目录权限

# chmod 700 /home/svnroot/repository

 

权限修改前

drwxr-xr-x 3 svnroot svn 4096  7月  3 22:12 repository

修改后

drwx------ 3 svnroot svn 4096  7月  3 22:12 repository

 

 

导入数据   参考 http://www.cnblogs.com/xuxm2007/archive/2011/09/17/2179419.html

使用svnroot用户登录

#su - svnroot 

# mkdir svntest

# vi ./svntest/test.txt   (内容为svntest)

$ svn import ./svntest file:///home/svnroot/repository/work-m "Initial repository test"

 

 

 

 

关联Apache和SVN

 

 

 

打开apache配置文件   (通过find命令查找文件httpd.conf位置)

# vi /etc/httpd/conf/httpd.conf    vi命令需要root用户操作,否则修改后不能保存)

 

httpd.conf中添加SVN关联  (本步骤无需要,在文件/etc/httpd/conf.d/subversion.conf中已有配置)

LoadModule dav_svn_modulemodules/mod_dav_svn.so

LoadModuleauthz_svn_module modules/mod_authz_svn.so

 

 

修改文件/etc/httpd/conf.d/subversion.conf

# vi /etc/httpd/conf.d/subversion.conf    (vi命令 需要root用户操作,否则修改后不能保存)

 

 

#<Location /repos>   未修改

#  DAV svn

#  SVNParentPath /var/www/svn

#

#   #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 /path/to/passwdfile

#     Require valid-user

#  </LimitExcept>

#</Location>

<Location /svn>   复制一份修改

  DAV svn

  SVNParentPath /home/svnroot/repository/

 

   #Limit write permission to list of valid users.

  <LimitExcept GET PROPFIND OPTIONS REPORT>

     # Require SSL connection for password protection.

     # SSLRequireSSL

 

     AuthType Basic

     AuthName "Welcome to SVN!"

     AuthUserFile /home/svnroot/repository/conf/passwd

     AuthzSVNAccessFile /home/svnroot/repository/conf/authz

 

     Require valid-user

  </LimitExcept>

</Location>

 

 

修改文件/etc/httpd/conf/httpd.conf

将下面两行

User apache

Group apache

改为

User svnroot

Group svn

 

 

2.5. 启动Apache:

#/usr/local/apache2/bin/apachectl start  

 

2.6. 启动时若端口被占用,则可修改apache端口:

#cd /usr/local/apache2/conf  

#vi httpd.conf  

Listen 88    //默认值是80,修改成任意一个不被占用的端口 

 

 

 

 

 

修改配置文件/home/svnroot/repository/work/conf/svnserve.conf

 

[general]
  #匿名访问的权限,可以是read,write,none,默认为read
  anon-access= none

  #认证用户的权限,可以是read,write,none,默认为write
  auth-access= write

  #密码数据库的路径,去掉前面的#
  password-db= /home/svnroot/repository/conf/passwd

  #用户操作权限#
  authz-db = /home/svnroot/repository/conf/authz

 

realm = /home/svnroot/repository/work

 

 

 

新建SVN用户及密码

# htpasswd -c/home/svnroot/repository/conf/passwd john   //admin组的用户为john

-c 表示创建文件 authz,以后加用户就不用带参数-c     (root用户操作)    (密码为123456,下同)

 

# htpasswd /home/svnroot/repository/conf/passwdjoe     //dev1组的用户为joe和kate

# htpasswd /home/svnroot/repository/conf/passwdkate

# htpasswd /home/svnroot/repository/conf/passwdalan   //dev2组的用户为alan和geoff

# htpasswd /home/svnroot/repository/conf/passwdgeoff

# htpasswd /home/svnroot/repository/conf/passwdlindar   //docs组的用户为lindar和iain

# htpasswd /home/svnroot/repository/conf/passwdiain

 

 

编辑文件/home/svnroot/repository/conf/authz

# cp -af /home/svnroot/repository/work/conf/authz/home/svnroot/repository/conf/authz

# vi /home/svnroot/repository/conf/authz

 

 [groups]

admin = john

dev1 = joe, kate

dev2 = alan, geoff

docs = lindar, iain

 

[work:/]

@admin=rw

*=r

 

[work:/svntest]

@dev1=rw

@dev2=rw

 

[work:/doc]

@docs=rw

 

 

 

7.开放服务器端口

  SVN默认端口是3690,你需要在防火墙上开放这个端口。

# iptables -A INPUT -i eth0 -p tcp --dport 3690 -j ACCEPT   (root 用户操作)

# service iptables save

iptables:将防火墙规则保存到 /etc/sysconfig/iptables:     [确定]

#

 

可选]6、修改SELINUX权限

  # chcon -R-h -u system_u -t httpd_sys_content_t /home/svnroot/repository

 

7,启动服务器 http://www.chineselinuxuniversity.net/articles/51283.shtml

     # svnserve -d -r /home/svnroot/repository/work     (root 用户启动)

 

检查端口3690是否开启

# lsof -i:3690

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

svnserve 11127 root    3u IPv4  79864      0t0 TCP 192.168.0.4:svn (LISTEN)

#

 

如果 killallsvnserve ,则lsof -i 3690无信息返回

 

启动svn

 

http://linuxguest.blog.51cto.com/195664/179617/

启动命令 #svnserve -d -r /home/svnroot/repository/work --listen-host 192.168.0.4  (192.168.0.4 为centos eth0 IP)

 

 


  其中-d表示在后台运行,-r指定服务器的根目录,这样访问服务器时就可以直接用svn://服务器ip来访问了。如果服务器有多ip的话--listen-host来指定监听的ip地址。

  我们可以在svn客户端中通过svn://192.168.1.18来访问svn服务器。

  对于多个代码仓库,我们在启动时也可以用-r选项来指定服务器根目录,但访问时需要写上每个仓库相对于svn根目录的相对路径。

   比如,我们有两个代码仓库/home/svnroot/repository/test1 和/home/svnroot/repository/test2,我们用svnserve -d -r /home/svnroot/repository --listen-host 192.168.1.18来启动,那么在客户端访问时可以用svn://192.168.1.18/test1和svn://192.168.1.200 /test2来分别访问两个项目

  启动完成以后,我们可以用psaux|grep svnserv来查看是否存在svnserve进程。

 

 



  你也可以通过svnserve的--listen-port选项来指定一个已经开放的其他端口,不过这样的话客户端使用也必须加上端口,如svn://192.168.1.18:9999/。

 

测试svn连接

使用IE或SVN工具测试:http://hostname(or ip):88/svn/work

会提示输入用户名密码,输入验证,如果有问题需查apache的log。

 

 

 

 

 

 

 

 

 

 

 

 

http://blog.yipiantian.cn/archives/118

centos 6.0 安装配置SVN详细步骤

作者: 站长日期: 2011年九月19日 发表评论(0) 查看评论

在网上查了一天资料,终于配置成功了。

基本步骤:
1、安装必需的subversion
2、创建版本库
3、配置用户和权限
4、钩子和svn常用命令说明

一、安装subversion
在这里我们使用yum来安装subversion,使用以下命令即可完成。

  1. [root@localhost ~]# yum -y install subversion

二、创建版本库

  1. [root@localhost ~]# mkdir -p /home/svn/project01
  2. [root@localhost ~]# svnadmin create /home/svn/project01

三、版本库管理配置
进行刚才创建的版本库目录下的conf目录,可以看到有三个文件。

  1. [root@localhost ~]# cd /home/svn/project01/conf
  2. [root@localhost conf]# ls
  3. authz  passwd  svnserve.conf

svnserve.conf 这个是版本库的配置文件
passwd 这个是记录用户帐号密码的文件
authz 这个则是记录组、权限和身份验证的文件
1、配置svnserve.conf文件
这里需要设置以下几处
anon-access = none 指定匿名权限,默认为可读,现设置匿名无权限
auth-access = write 用户有写权限
password-db = passwd 账号密码文件的路径,psswd文件也可复制一份,命名为 passwd.conf 这样可以知道是配置文件,也可以放到其它目录下
authz-db = authz 同上
注意去掉#注释以后配置一定要顶格写,下同。

[root@localhost conf]# vi svnserve.conf

  1. anon-access = none
  2. auth-access = write
  3. password-db = passwd
  4. authz-db = authz

2、配置passwd
该文件中记录svn用户名密码,以 (帐号 = 密码)或(帐号 : 密码)的形式进行储存。
多用户之前用换行区分。这里配置了一个用户名为test1密码为123456的svn 账户。

[root@localhost conf]# vi passwd

  1. ### This file is an example password file for svnserve.
  2. ### Its format is similar to that of svnserve.conf. As shown in the
  3. ### example below it contains one section labelled [users].
  4. ### The name and password for each user follow, one account per line.
  5.  
  6. [users]
  7. # harry = harryssecret
  8. # sally = sallyssecret
  9. test1 = 123456

3、authz文件的配置
[groups]表用于用户组的配置例如
“developers = test1,test2”这样就将这2个用户方在了developers组织之中。
建立组是为了方便给一组相同权限的用户分配权限。
[/] 指定是svn的根版本库
版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>

[root@localhost conf]# vi authz

  1.  
  2. [groups]
  3. # harry_and_sally = harry,sally
  4. # developers = test1, test2
  5.  
  6. # [/foo/bar]
  7. # harry = rw
  8. # * =
  9.  
  10. # [repository:/baz/fuz]
  11. # @harry_and_sally = rw
  12. # * = r
  13. [/]
  14. test1 = rw
  15. * =

这样svn版本库就算配置完成了。

运行 svn, (停止SVN服务器命令为:killall svnserve )

[root@localhost ~]# svnserve -d -r/home/svn/

  1. 我们继续说下其他常用的一些配置
  2. 1、开机自动运行
  3. 在/etc/rc.d/rc.local 添加 “/usr/bin/svnserve -d -r svn版本库目录” 即可
  4. <pre lang="php">[root@localhost ~]# vi /etc/rc.d/rc.local
  5.  
  6. #
  7. # This script will be executed *after* all the other init scripts.
  8. # You can put your own initialization stuff in here if you don't
  9. # want to do the full Sys V style init stuff.
  10.  
  11. touch /var/lock/subsys/local
  12. /usr/bin/svnserve -d -r /home/svn/

2、钩子自动更新
说明,在开发时经常需要提交代码,如果使用钩子自动更新的话,只要有人提交后就能自动更新到服务器上,非常方便哦。
首先必须对代码目录checkout

[root@localhost ~]# cd /var/www

  1. [root@localhost www]# svn checkout svn://192.168.1.100/project01
  2. Authentication realm:  21d46c22-96a8-465b-9d0b-58a1e04abdfd
  3. Password for 'root':
  4. Authentication realm:  21d46c22-96a8-465b-9d0b-58a1e04abdfd
  5. Username: test1
  6. Password for 'test1':
  7. Checked out revision 0.

这样在 /var/www/ 中会生成一个目录 project01,我们可以把这个目录设置成站点来访问。

进入版本库hooks目录
将post-commit.tmpl 模板复制一份 取名post-commit
在末尾加上
svn up /home/svn/project01/ –username test1 –password 123456
并赋予执行权限。

[root@localhost ~]# cd/home/svn/project01/hooks/

  1. [root@localhost hooks]# ls
  2. post-commit.tmpl  post-revprop-change.tmpl  pre-commit.tmpl  pre-revprop-change.tmpl  start-commit.tmpl
  3. post-lock.tmpl    post-unlock.tmpl          pre-lock.tmpl    pre-unlock.tmpl
  4. [root@localhost hooks]# cp post-commit.tmpl  post-commit
  5. [root@localhost hooks]# vim post-commit
  6.  
  7. REPOS="$1"
  8. REV="$2"
  9.  
  10. svn up /home/svn/project01/ --username test1 --password 123456
  11.  
  12. [root@localhost hooks]# chmod +x post-commit

这样当用户提交文件的第时候,svn将会自动执行更新,使代码同步。

 

 

 

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值