cenos 下svn安装

作者:stoat 发布时间:2015-09-06 分类:闲扯

1,安装不上apr-util,提示缺少 libapr-1.so.0,使用yum install -y httpd wget

2,
新建一个目录:ds160 可用于存储SVN所有文件

  mkdir -p /www/svn/ds160

注意,这里的目录(项目名称)路径可以更改,格式如下:

mkdir -p 目录路径(如:mkdir -p /www/svn/project)

2、新建一个版本仓库(使用svnadmin create 目录仓库路径与上面新建的目录要一致)

  svnadmin create /www/svn/ds160

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

  vi /www/svn/ds160/conf/svnserve.conf

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

 [general]
  anon-access = none
  auth-access = write
  password-db = /www/svn/ds160/conf/passwd
  authz-db = /www/svn/ds160/conf/authz
  realm = ds160

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

4、添加用户

  vi /www/svn/ds160/conf/passwd

要添加SVN用户非常简单,只需在/opt/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

5、修改用户访问策略

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

关于权限的控制,本文不详情叙述,大家可以去咨询度娘。

5、启动svn服务

  svnserve -d --listen-port 3690 -r /www/svn/ds160 (以root用户在运行)

假如有多个项目同时在开发的话,可以通过不同端口可以开启多个SVN服务,使用TortoiseSVN操作时记得加上端口号。

6、测试svn服务器

进入网站根目录

  cd /www/web/ds160/public_html

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

会出现以下认证的提示

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

注意! 你的密码,对于认证域:

ds160

只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让Subversion

可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,

来避免再次出现此警告。

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

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

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

取出版本0。

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

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

  cd /www/svn/ds160/hooks

  ls

可以看到有一个post-commit.tmpl文件,这是一个模板文件,复制一份放在此目录下,命名为post-commit,并将其用户组设为www,并设置为可执行:

  cp post-commit.tmpl post-commit

  chown www:www post-commit

  chmod +x post-commit

这样就有了访问www目录的权限。

里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件.

文件内容参考以下:

vi post-commit

  #!/bin/sh

  export LANG=zh_CN.UTF-8

  REPOS="$1"

  REV="$2"

  SVN_PATH=/usr/bin/svn

  WEB_PATH=/www/web/ds160/public_html

  LOG_PATH=/tmp/svn_update.log

  #/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache

  echo "nnn##########开始提交" `date "+%Y-%m-%d %H:%M:%S"` '##################' >> $LOG_PATH

  echo `whoami`,$REPOS,$REV >> $LOG_PATH

  $SVN_PATH update --username user --password password $WEB_PATH --no-auth-cache >> $LOG_PATH

  chown -R www:www $WEB_PATH

说明:

1、#!/bin/sh 说明是执行shell命令/*设定环境变量,如果没有设定可能会出现update报错*/

2、export LANG=zh_CN.UTF-8 是为了解决svn post commit 中文乱码。

如果你是GBK编码可能会提示:Error output could not be translated from the native locale to UTF-8

这是客户端和服务器编码的问题,默认是utf-8,可尝试设置export LANG=zh_CN.GBK或者export LANG=en_US.UTF-8

#执行更新操作

3、svn update –username 你版本库的用户名–password 用户名的密码svn://你的IP地址:端口/www/web/ds160/public_html

4、chown -R www:www $WEB_PATH 更改文件夹属主为适合Web Server的

3,随系统启动服务

chkconfig svnserve on 

原文地址:cenos 下svn安装 by 雪鼬博客

标签:none

评论已关闭