linux安装svn服务端不使用apache

一、安装

  1.查看是否安装cvs

  rpm -qa | grep subversion

  2.安装

  yum install subversion

  3.测试是否安装成功

  /usr/bin/svnserve --version

如果提示/usr/bin/svnserve: error while loading shared libraries: libaprutil-1.so.0: cannot open shared object file: No such file or directory

出现这个错误的原因就是svnserver在编译时是加了apache支持的,现在无法找到apr-util库,一般情况下我们将apache的lib目录加入到系统的lib路径中就可以了(查到方法 find / -name libaprutil-1.so.0)

然后我们打开/etc/ld.so.conf文件,并加入上面两个目录下的lib路径到文件中,如下:

# vi /etc/ld.so.conf

/www/wdlinux/httpd-2.2.22/lib/

在文件的最后加入上面的指定路径即可,然后更新下:

ldconfig -v

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

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

  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 /www/svndata/project

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

  vi /www/svndata/project/conf/svnserve.conf

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

  [general]

  anon-access = none(这里必须修改为none负责日志不会记录)

  auth-access = write

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

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

  realm = repos

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

  3、添加用户

  vi /www/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 /www/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

输入命令:

svnserve -d -r /www/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。

五、把svn的bin目录加入到环境变量之中

vi /etc/profile

添加export PATH="$PATH:/usr/bin/svn"

保存退出之后运行source /etc/profile

然后执行svnserve --version 查看是否生效

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

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

  cd /www/svndata/project/hooks

  ls

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

vi post-commit

#!/bin/bash

export

svn update /www/web/project/public_html --username zmk --password xxx

chown -R www:www /www/web/project

如果更新提示255错误需要给post-commit加上x权限(可执行权限)chmod +x post-commit

最后 chown -R www:www post-commit #别忘记了修改这个脚本的执行权限

七、设置SVN自启动

在/etc/rc.d/rc.local文件中增加这么一行

svnserve -d -r /www/svndata &

linux提交版本提示

svn: 提交失败(细节见下):

svn: 无法使用外部编辑器取得日志信息;请尝试设定 $SVN_EDITOR 环境变数,或是使用 --message (-m) 或 --file (-F) 选项

svn: 没有一个 SVN_EDITOR,VISUAL 或 EDITOR 环境变数被设定,执行时期的设定中也没有 'editor-cmd' 选项

解决方法: 设置vim为你的SVM_EDITOR

命令:

exportSVN_EDITOR=vi

如果希望该环境变量能永久生效,把以下这行添加到你的个人文档目录下的.bash_profile文件中即可。文件路径~/.bash_profile

exportSVN_EDITOR=vi