一、安装

yum install subversion测试是否安装成功

/usr/bin/svnserve --version如提示以下内容,说明已安装成功

svnserve,版本 1.6.11 (r934486)
编译于 May 14 2012,05:36:26

版权所有 (C) 2000-2009 CollabNet。
Subversion 是开放源代码软件,请参阅 http://subversion.tigris.org/ 站点。
此产品包含由 CollabNet(http://www.Collab.Net/) 开发的软件。

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

* fs_base : 模块只能操作BDB版本库。
* fs_fs : 模块与文本文件(FSFS)版本库一起工作。

Cyrus SASL 认证可用。
二、配置
1、新建一个目录:repos,可用于存储SVN所有文件

mkdir -p /opt/svn/repos

2、新建一个版本仓库

svnadmin create /opt/svn/repos

3、初始化版本仓库中的目录

mkdir project project/server project/client project/test(临时目录)
svn import project/ file:///opt/svn/repos/project -m '初始化svn目录'
rm -rf project (可选 如果project没用,可以删除)

4、修改svn版本库的配置文件
vim /opt/svn/repos/conf/svnserve.conf

修改为如下内容:

[general]
anon-access = none
auth-access = write
password-db = /opt/svn/project/conf/passwd
authz-db = /opt/svn/project/conf/authz
realm = LAMP100 repos

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

5、添加用户
要添加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

6、修改用户访问策略
/opt/svn/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目录.

7、启动svn服务

svnserve -d --listen-port 9999 -r /opt/svn (以root用户在运行)

8、测试svn服务器

cd /web/
svn co svn://192.168.10.10/repos/project
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for 'root':
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: server_group
Password for 'server_group':
svn: Authorization failed ( server_group没用根目录的访问权 )

# svn co svn://192.168.10.10/repos/project
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for 'root':
Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: pm
Password for 'pm':
A project/test
A project/server
A project/client
Checked out revision 1. ( 测试提取成功 )

# cd project/server
# vim index.PHP
# svn add index.php
# svn commit index.php -m "测试一下我的PHP程序"
Adding index.php
Transmitting file data .
Committed revision 2. ( 测试提交成功 )

三、配置post-commit,实现自动同步svn版本库文件到web目录
为了可以在修改完代码提交到SVN服务器后,WEB服务器直接同步.需要配置SVN的钩子,打开hooks目录,
可以看到有一个post-commit.tmpl文件,这是一个模板文件,
复制一份放在此目录下,命名为post-commit,并将其用户组设为www,并设置为可执行:

chown www:www post-commit
chmod +x post-commit这样就有了访问www目录的权限。
里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件.

我的文件内容为:

#!/bin/sh
#设定环境变量,如果没有设定可能会出现update报错
export LANG=zh_CN.UTF-8
REPOS="$1"
REV="$2"
SVN_PATH=/usr/bin/svn
WEB_PATH=/web/project
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命令
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地址:端口/repos/project /web/project
4、chown -R www:www $WEB_PATH 更改文件夹属主为适合Web Server的
里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件。

CentOS下安装配置SVN服务器并自动同步到web目录的更多相关文章

  1. 阿里云服务器centos下安装配置svn服务器

      阿里云服务器centos下安装配置svn服务器 1.安装svn服务器端yum install subversion      从镜像下载安装svn服务器端中间会提示是否ok,输入y,确认安装成功提 ...

  2. linux下安装配置svn服务器

    linux下安装配置svn服务器 1. svn服务器安装 将subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz传到服务器. tar xfvz su ...

  3. 在linux上搭建SVN服务器并自动更新至WEB目录

    1.仓库放在 /var/svn/ 目录下,并且仓库名为 project 2.创建用户组user,该组下添加两个成员user1.user2,密码直接用用户名,两用户可以checkout代码和提交代码 3 ...

  4. CentOS下安装配置Samba服务器

    0 环境介绍 VMWARE12下安装的CENTOS7虚拟机.宿主机为WIN7. 1 离线安装 费了九牛二虎之力,下载各种依赖,还是有问题,转向在线安装. 2 在线安装 虚拟机采用默认的配置: 其次,网 ...

  5. CentOS 7下搭建配置SVN服务器

    CentOS 7下搭建配置SVN服务器 1. 安装 CentOS通过yum安装subversion. $ sudo yum install subversion subversion安装在/bin目录 ...

  6. CentOS 创建SVN 服务器,并且自动同步到WEB 目录

    CentOS 创建SVN 服务器,并且自动同步到WEB 目录 标签: centossvnsubversion服务器 2013-12-06 10:09 5492人阅读 评论(0) 收藏 举报  分类: ...

  7. Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)

    Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)   关于LAMP的各种知识,还请大家自行百度谷歌,在这里就不详细的介绍了,今天主要是介绍一下在Centos下安装,搭建一 ...

  8. CentOS 7安装配置Samba服务器

    CentOS 7安装配置Samba服务器 CentOS 7下Samba服务器安装配置过程笔记. 假设我们有这样一个场景 共享名 路径 权限 SHAREDOC /smb/docs 所有人员包括来宾均可以 ...

  9. CentOS 7安装配置Samba服务器(挂载共享文件夹)

    CentOS 7安装配置Samba服务器 CentOS 7下Samba服务器安装配置过程笔记. 假设我们有这样一个场景 共享名 路径 权限 SHAREDOC /smb/docs 所有人员包括来宾均可以 ...

随机推荐

  1. Oracle data guard 10g 搭建

    Oracle data guard 10g 搭建 1系统常规参数检查 硬盘 [root@localhost ~]# df -h 内核 [root@localhost ~]# uname -a [roo ...

  2. python中的 ' ' 和 " "

    #!/usr/bin/python import MySQLdb try: conn = MySQLdb.connect(host = 'localhost', user = 'root', pass ...

  3. 2015.3.4 VS2005调用MFC dll时报错及解决

    今天在用VS2005调用MFCdll时报错: 正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码... 原因是我在dll的CSpaceApp::CSp ...

  4. IIS安装与部署,站点的部署与配置

    第一章:IIS安装与部署 一,服务器概念的理解: 将设计好的软件只要部署到一台机器(服务器--->IIS)上,其它的员工通过浏览器(网址.)来进行访问. 做好的网站必须部署到这台机器上的IIS中 ...

  5. 问题:iis配置json;结果:如何配置iis支持.json格式的文件

    如何配置iis支持.json格式的文件 | 浏览:1357 | 更新:2015-04-05 11:00 | 标签:软件 1 2 3 4 5 6 7 分步阅读 现在大家在制作HTM5的一些小场景,小游戏 ...

  6. HADOOP HDFS BALANCER介绍及经验总结(转)

    1.集群执行balancer命令,依旧不平衡的原因是什么?该如何解决? 2.尽量不在NameNode上执行start-balancer.sh的原因是什么? 集群平衡介绍 Hadoop的HDFS集群非常 ...

  7. java之类的封装

    类和对象成员变量,成员函数特殊的成员变量和成员函数 函数重载 构造函数 静态变量 静态函数面向对象:封装 继承 多态封装 Encapsulation为什么需要封装?外界无法直接操作对象的具体的属性(安 ...

  8. C程序设计语言(K&R) 笔记2

    (1) #include <stdio.h> main(){ int c; while((c = getchar()) != EOF){ putchar(c); } } 注意,因为 != ...

  9. OSI七层网络模型与TCP/IP四层网络模型

    1.OSI网络7层模型 网络协议设计者不应当设计一个单一.巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议.这样做使得每个协议的设计.分 ...

  10. Lucene打分公式的数学推导

    原文出自:http://www.cnblogs.com/forfuture1978/archive/2010/03/07/1680007.html 在进行Lucene的搜索过程解析之前,有必要单独的一 ...