首页 > 代码库 > linux安装svn服务端不使用apache

linux安装svn服务端不使用apache

一、安装

  1.查看是否安装cvs

  rpm -qa | grep subversion

  2.安装

  yum install subversion

  3.测试是否安装成功

  /usr/bin/svnserve --version

  如提示以下内容,说明已安装成功

  --------------------------------------

  svnserve,版本1.6.11 (r934486)

  编译于Apr 11 2013,17:28:04

  版权所有(C) 2000-2009 CollabNet。

  Subversion 是开放源代码软件,请参阅http://subversion.tigris.org/ 站点。

  此产品包含由CollabNet(http://www.Collab.Net/) 开发的软件。

  下列版本库后端(FS) 模块可用:

  * fs_base : 模块只能操作BDB版本库。

  * fs_fs : 模块与文本文件(FSFS)版本库一起工作。

  Cyrus SASL 认证可用。

--------------------------------------------------------------

二、配置

  1、新建一个版本仓库(使用svnadmin create 创建目录仓库路径)

  svnadmin create /web_data/svndata/project

  2、修改svn版本库的配置文件

  vi /web_data/svndata/project/conf/svnserve.conf

  按以下格式内容修改,其中realm的值为项目名称,本例中即为project。

  [general]

  anon-access = none

  auth-access = write

  password-db = /opt/svndata/project/conf/passwd

  authz-db = /opt/svndata/project/conf/authz

  realm = repos

  注意:对用户配置文件的修改立即生效,不必重启svn。

  3、添加用户

  vi /web_data/svndata/project/conf/passwd

  要添加SVN用户非常简单,只需在/web_data/svn/project/conf/passwd文件添加一个形如“username=password”的条目就可以了。

  为了测试,我添加了如下内容:

  [users]

  # harry = harryssecret

  # sally = sallyssecret

  pm = pm_pw

  server_group = server_pw

  client_group = client_pw

  test_group = test_pw

  4、修改用户访问策略

  vi /web_data/svndata/project/conf/authz

  记录用户的访问策略,以下是参考:

  [groups]

  project_p = pm

  project_s = server_group

  project_c = client_group

  project_t = test_group

  [project:/]

  @project_p = rw

  * =

  [project:/server]

  @project_p = rw

  @project_s = rw

  * =

  [project:/client]

  @project_p = rw

  @project_c = rw

  * =

  [project:/doc]

  @project_p = rw

  @project_s = rw

  @project_c = rw

  @project_t = rw

  * =

  以上信息表示,只有pm有根目录的读写权,server_group能访问server目录,client_group能访问client目录,所有人都可以访问doc目录。

  当然,以上是比较复杂的权限控制,如果只是测试,可以简单些。建立一个用户组,把所有的用户都放到一个用户组,如下:

  [groups]

  admin = pm,server_group,client_group,test_group

  [/]

  @admin = rw

三、启动svn

      先转到SVN的安装目录,比如,你安装在/home/svn 下面。
      然后转到bin目录下,在这里可以看见一个叫svnserve的文件,我们需要用这个来启动SVN服务。
      试一下svnserve --help,看看这个命令的帮组,其中有-d和-r,分别表示后台运行和数据仓库目录。
      数据仓库目录表示你保存数据的地方,如你将工程的信息保存在/home/svndata下面,这个svndata就是你的数据仓库目录。

      弄清楚了这些就可以来启动了:

      输入命令:
             svnserve -d -r /home/svndata
            后面那个要跟你自己的数据仓库目录。
            这样我们就启动了SVN了,SVN默认监听的是3690。

      有时候我们需要更改一下监听的端口,这时就需要设定一下监听端口了,按照如下命令来进行:
            svnserve --listen-port 9999 -d -r /opt/svndata
            这样我们就把监听端口改成了9999了,当然你也可以可以把9999改成你自己想监听的端口~

四、测试svn服务器

  进入网站根目录

  cd /www/web/repos/public_html

  svn co svn://127.0.0.1:3690/project  /www/web/repos/public_html --username pm --password pm_pw

  会出现以下认证的提示

      保存未加密的密码(yes/no)?

  输入“yes” 回车,因为版本仓库还没有添加任何文件,所以取出版本为0,如下:

  取出版本0。

五、配置post-commit,实现自动同步svn版本库文件到web目录

      把svn的bin目录加入到环境变量之中
      vi /etc/profile
      添加export PATH="$PATH:/usr/bin/svn"
      保存退出之后运行source /etc/profile
      然后执行svnserve --version 查看是否生效

      为了可以在修改完代码提交到SVN服务器后,WEB服务器直接同步.需要配置SVN的钩子,进入hooks目录,

  cd /web_data/svndata/project/hooks

  ls

  可以看到有一个post-commit.tmpl文件,这是一个模板文件,复制一份放在此目录下,命名为post-commit

      vi post-commit
 
      #!/bin/bash
      export LANG="zh_CN.UTF-8"
      svn update /web_data/ww/ --username zmk --password xxx
      最后 chmod 777 post-commit #别忘记了修改这个脚本的执行权限

linux安装svn服务端不使用apache