Chinaunix首页 | 论坛 | 博客
  • 博客访问: 205900
  • 博文数量: 109
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 890
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-24 17:06
文章分类

全部博文(109)

文章存档

2015年(1)

2014年(108)

分类: 系统运维

2014-05-30 09:28:58

SVN作为新一代代码版本管理工具,有很多优点,管理方便,逻辑明确,安全性高,代码一致性高。SVN数据存储有两种方式,BDB(事务安全表类型)和FSFS(一种不需要数据库的存储系统),为了避免在服务器连接中断时锁住数据,FSFS是一种更安全也更多人使用的方式。SVN的运行方式也有两种,一种是独立服务器,另一种是借助apache服务,各有利弊,下面就介绍一下这两种方式各自的部署步骤。

   1、作为独立服务器运行:

   ①安装svn,使用本地yum源安装,操作系统镜像里自带的就有,yum install svn,具体步骤请参考http://ailurus.blog.51cto.com/4814469/1168336;

   ②创建版本库:

mkdir /svn/project        //创建版本库所在文件夹  

svnadmin create --fs-type fsfs /svn/project/first      

//创建版本库,如果需要使用bdb方式存储,则将fsfs改成bdb即可  

   ③初始化版本库,即导入文件到版本库中:

svn import /home/software file:///svn/project/first --message "初始化版本"  

//将home文件夹的文件导入版本库  

svn list --verbose file:///svn/project/first  //查看导入的文件

   ④启动svn服务,svn服务默认端口为3690,可以使用“netstat -ntlp”命令查看服务启动是否成功:

svnserve -d -r /svn/project

   ⑤修改策略控制文件,vi authz,如果以后要添加用户,就将用户名加在相应的用户组(admin或者user)后面即可:

### This file is an example authorization file for svnserve.

### Its format is identical to that of mod_authz_svn authorization

### files.

### As shown below each section defines authorizations for the path and

### (optional) repository specified by the section name.

### The authorizations follow. An authorization line can refer to:

###  - a single user,

###  - a group of users defined in a special [groups] section,

###  - an alias defined in a special [aliases] section,

###  - all authenticated users, using the '$authenticated' token,

###  - only anonymous users, using the '$anonymous' token,

###  - anyone, using the '*' wildcard.

###

### A match can be inverted by prefixing the rule with '~'. Rules can

### grant read ('r') access, read-write ('rw') access, or no access

### ('').


[aliases]

# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average


[groups]

# harry_and_sally = harry,sally

# harry_sally_and_joe = harry,sally,&joe

admin=first,second,third             //用户组admin包含的成员

user=anyone                          //用户组user包含的成员


# [/foo/bar]

# harry = rw

# &joe = r

# * =


# [repository:/baz/fuz]

# @harry_and_sally = rw

# * = r


[/]

@admin=rw                         //用户组admin内成员拥有读写权限

@user=r                           //用户组user内成员拥有读权限

⑥添加svn访问用户,vi passwd,为authz里分配的用户设置密码,等号左边为用户名,等号右边是密码;

### This file is an example password file for svnserve.

### Its format is similar to that of svnserve.conf. As shown in the

### example below it contains one section labelled [users].

### The name and password for each user follow, one account per line.


[users]

# harry = harryssecret

# sally = sallyssecret


first=first

second=second

third=third

anyone=anyone

   ⑦修改svn读取的权限策略文件,vi /svn/project/first/conf/svnserve.conf:

anon-access = none    //不允许匿名用户读写

auth-access = write

password-db = passwd  //svn读取的passwd文件

authz-db = authz      //svn读取的权限控制文件

   ⑧安装svn客户端,就可以使用客户端通过如下的url就可以访问了:

   svn://IP地址/svn/project/first  

   2、借助apache服务器,通过web端访问svn:

   ①给apache服务器安装两个svn插件,这两个插件同样可以使用yum安装:    

yum install mod_dav_svn     //使subversion与dav模块通信的功能

yum install mod_authz_svn   //实现权限控制功能

   ②使用命令“httpd -M”可以查看是否加载这两个模块,如加载,则有如下回应:

Loaded Modules:

core_module (static)

mpm_prefork_module (static)

http_module (static)

so_module (static)

auth_basic_module (shared)

auth_digest_module (shared)

authn_file_module (shared)

authn_alias_module (shared)

authn_anon_module (shared)

authn_dbm_module (shared)

authn_default_module (shared)

authz_host_module (shared)

authz_user_module (shared)

authz_owner_module (shared)

authz_groupfile_module (shared)

authz_dbm_module (shared)

authz_default_module (shared)

ldap_module (shared)

authnz_ldap_module (shared)

include_module (shared)

log_config_module (shared)

logio_module (shared)

env_module (shared)

ext_filter_module (shared)

mime_magic_module (shared)

expires_module (shared)

deflate_module (shared)

headers_module (shared)

usertrack_module (shared)

setenvif_module (shared)

mime_module (shared)

dav_module (shared)

status_module (shared)

autoindex_module (shared)

info_module (shared)

dav_fs_module (shared)

vhost_alias_module (shared)

negotiation_module (shared)

dir_module (shared)

actions_module (shared)

speling_module (shared)

userdir_module (shared)

alias_module (shared)

substitute_module (shared)

rewrite_module (shared)

proxy_module (shared)

proxy_balancer_module (shared)

proxy_ftp_module (shared)

proxy_http_module (shared)

proxy_ajp_module (shared)

proxy_connect_module (shared)

cache_module (shared)

suexec_module (shared)

disk_cache_module (shared)

cgi_module (shared)

version_module (shared)

authz_ldap_module (shared)

dav_svn_module (shared)

authz_svn_module (shared)

Syntax OK

③编辑apache服务配置文件vi /etc/httpd/conf/httpd.conf,加入下面几行:

DAV svn

SVNPath /svn/project/zbw

AuthzSVNAccessFile /etc/httpd/conf.d/authz

//apache服务器读取的权限策略文件  

AuthType Basic

AuthName "Project"

AuthUserFile /etc/httpd/conf.d/passwd

//apache服务器读取的密码存储文件

Require valid-user

   ④编辑文件authz放在文件夹/etc/httpd/conf.d中,文件格式同文章上面的那个authz文件,编辑文件passwd放在文件夹/etc/httpd/conf.d中,使用如下命令生成用户名和密码:

htpasswd -c /svn/project/first admin

//命令为htpasswd,-c为参数,/svn/project/first为访问的版本库,admin为用户名

然后重复输入你想设置的密码就可以自动存储在文件passwd中,默认为md5存储。

   ⑤重启apache服务,就可以在网页端使用刚才设置的用户名密码访问了,网址为



centos svn 建版本库

1.首先讲一下svn的命令

主要有三个命令需要知道,一个是svnadmin,它主要是负责建立repository(就是你需要控制版本的项目的根文件夹),在它下面可以建立各个文件夹存储相关文件,像/doc 、/source等,如果你有多个项目需要管理,建议你建立一个总的目录,这样便于管理

 

svnadmin create /srv/svn/repos

 

然后,可以通过svn命令添加各个不同的项目(下面会说到)

还有一个命令是svn,它负责跟你的版本库打交道,包括check in和check out文件,创建文件夹等。

svn command [options] svn://host/repository

创建一个文件夹

svn mkdir -m "document for project" svn://host/project/doc

这样,便在你的project下创建了doc文件夹,你可以向它里面上传文件了

 

还有一个命令svnserve,负责启动svn,一般用法

svnserve -d -r /srv/svn/repos

注意:后面的路径必须是一个svnadmin创建的仓库路径,否则会报错:Not a repository

2.配置

如果你想通过http能够访问到你的repository,你需要将svn和你的apache集成,这个做起来很简单

首先向apache添加相关模块

a2enmod dav
a2enmod dav_svn

然后在apache配置文件/etc/apache2/conf.d/subversion.conf中添加


Alias /repos    "/srv/svn/html"


        Options         +Indexes +Multiviews -FollowSymLinks
        IndexOptions    FancyIndexing \
                        ScanHTMLTitles \
                        NameWidth=* \
                        DescriptionWidth=* \
                        SuppressLastModified \
                        SuppressSize

        order allow,deny
        allow from all


# project repository files for project2

        DAV svn
        SVNPath /srv/svn/repos/project2

        # Limit write permission to list of valid users.
       
                # Require SSL connection for password protection.
                # SSLRequireSSL

                AuthType Basic
                AuthName "Authorization for project2 required"
                AuthUserFile /srv/svn/user_access/project2_passwdfile
                Require valid-user
       

 

需要注意一下路径,SVNPath /srv/svn/repos/project2 改成自己的,还有AuthUserFile /srv/svn/user_access/project2_passwdfile密码文件。这样就完成了svn和apache的集成。

 

接下来配置访问方式

按照下面的假设配置,读权限可以设置为所有人可读,写权限需要验证。

修改/srv/svn/repos该仓库下的conf下的svnserve.conf文件,

修改为:

anon=read

auth=write

password-db=passwd

 

**注意每一行的前面都不能留空格,否则在执行svn命令的时候会出问题:svn:svn://host/ svnserve.conf

Option expeted

接下来修改passwd文件,username=password的形式

 

3.启动服务

使用命令svnserve启动服务

svnserve -d  -r /srv/svn/repos

也可以加端口号 svnserve -d --listen-port 9999 -r /srv/svn/repos

注意:后面的路径必须是一个svnadmin创建的仓库路径,否则会报错:Not a repository

4.客户端访问

svn list svn://host/

返回为空,因为你还没有上传任何东西啊

svn mkdir -m "document" svn://host/doc

这样便创建了doc文件夹,这个过程可能需要输入密码

svn 端口和常用命令

有效选项:
  -d [--daemon]            : 后台模式
  --listen-port 参数     : 监听端口(后台模式)
  --listen-host 参数     : 监听主机名或IP地址(后台模式)
  --foreground             : 在前台运行(调试时有用)
  -h [--help]              : 显示这个帮助
  --version                : 显示程序版本信息
  -i [--inetd]             : inetd 模式
  -r [--root] 参数       : 服务根目录
  -R [--read-only]         : 强制只读成;优先于仓库配置文件
  -t [--tunnel]            : 隧道模式
  --tunnel-user 参数     : 隧道用户名(模式是当前用户UID的名字)
  -X [--listen-once]       : 监听一次(调试时有用)
  --pid-file 参数        : 将服务进程ID写入文件ARG中
  --service                : 作为windows服务运行(仅SCM)[/quote]

你可以用--listen-port 指定端口

在httpd.conf中,查找Listen 80,将80修改为你想要的端口,svn默认端口是3690

为svnserve 加上--listen-port参数,比如svnserve -d -r d:\svn --listen-port 81

你可以采用svn+apache组合搭建,既可以设置你想要的端口,还可以以WEB形式访问代码库

通过以上三步,可以快速的搭建起svn

SVN数据库迁移方法

版本库数据的移植:svnadmin dump、svnadmin load

导出:

$svnadmin dump repos > dumpfile //将指定的版本库导出成文件dumpfile

新建:

$svnadmin create newrepos

导入:

$svnadmin load newrepos < dumpfile


阅读(1127) | 评论(0) | 转发(0) |
0

上一篇:centos svn

下一篇:linux_svn多版本库

给主人留下些什么吧!~~