centos 创建svn多仓库,并用hooks同步更新

来源:互联网 发布:ubuntu 232 编辑:程序博客网 时间:2024/05/18 17:04

通过参考其他同行们的教程,自己测试并整理了一下svn 在centos的基本配置过程,希望能同了解该软件的同行分享交流一下。
1:通过 yum 安装svn软件
yum -y install subversion

2:通过rpm -qa |grep 查看系统是否安装 apr 和apr-util 软件
如果未安装可以下列源码安装步骤安装这两个软件
如果有安装直接进入到第5步。
下载地址:http://apr.apache.org/download.cgi
这里写图片描述

2-1):安装 apr文件
// 解压压缩文件,并进入解压缩后的文件夹
tar -zxvf apr-1.6.2.tar.gz
//参数配置(位置、支持功能参数)、软件依赖检查
./configure –prefix=/usr/local/apr
//执行编译动作(源码—-》二进制码)
make
//copy 复制二进制码文件到系统目录
make install

2-2):安装 apr-util
// 解压压缩文件,并进入解压缩后的文件夹
tar -zxvf apr-util-1.6.0.tar.gz
//参数配置(位置、支持功能参数)、软件依赖检查
./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr
//执行编译动作(源码—-》二进制码)
make
//copy 复制二进制码文件到系统目录
make install

3:编辑 ld.so.conf 文件
vi /etc/ld.so.conf
添加如下两行:
/usr/local/apr/lib
/usr/local/apr-util/lib
:wq //保存退出。

4:加载
ldconfig -v

5:创建svn 仓库
// 创建svn仓库路径
mkdir -p /data/svn
//创建两个项目仓库 project1, project2
svnadmin create /data/svn/project1
svnadmin create /data/svn/project2
这里写图片描述

这里写图片描述

6:操作第一个项目 –project1
这里写图片描述
//进入配置文件conf目录
cd /data/svn/project1/conf
//编辑 主配置文件 svnserve.conf
vi svnserve.conf
//在 general 栏目下配置如下数据
[general]
anon-access = none // 匿名访问权限 (read,write,none)
auth-access = write // 授权访问权限
password-db = passwd // 引入对应的用户名密码配置文件
authz-db = authz // 引入对应的授权配置文件
:wq // 保存并退出
这里写图片描述
//编辑 用户名密码 配置文件
vi passwd
//在 users 栏目下配置三个账户 格式为:(用户名 = 密码)
[users]
zhangsan = zhangsan
project1 = project1
project2 = project2
:wq //保存并退出。
这里写图片描述
// 编辑 授权 配置文件
vi authz //认证文件
[groups]
#管理员组,project1组,project2组
admin = zhangsan
project1 = project1
project2 = project2
#根目录 admin组有可读可写权限
[/]
@admin = rw
[project1:/]
@admin = rw
@project1 =rw
:wq

这里写图片描述

7:配置防火墙 允许授权
vi /etc/sysconfig/iptables
//svn 默认端口号 3690 ,给端口号授权
//复制:8080端口号的,修改为3690即可
这里写图片描述
//重启防火墙的规则,否则不生效。
service iptables restart

8:启动svn服务
//将各个版本库的上级目录 svn 作为svn启动服务目录
//svnserve -d(独立端口运行) -r(仓库地址) 仓库地址
svnserve -d -r /data/svn

9:添加开机自启动
vi /etc/rc.d/rc.local
//在 rc.local文件最后追加如下行
svnserve -d -r /data/svn

10:客户端链接测试
//安装客户端软件

这里写图片描述
创建文件夹 project1 并做 checkout 操作。
这里写图片描述

这里写图片描述

11:利用hooks做同步网站更新操作
测试网站项目
www.ec.com —> /var/www/html
www.ec1.com —> /var/www/php
测试 svn 仓库
/data/svn/project1
/data/svn/project2
目标实现:
/var/www/html 绑定到 project1 仓库
/var/www/php 绑定到 project2 仓库

12:配置 /data/svn/project1 —>/var/www/html
cd /var/www/html
// 清空 html 目录里面内容
rm -f *
// 在当前目录(html)里面checkout一下建立版本
svn checkout file:///data/svn/project1 ./
// 查看当前目录 ( html ) 里面是否有隐藏文件 .svn
这里写图片描述
// 创建钩子 进行网站和svn进行同步
cd /data/svn/project1/hooks
这里写图片描述
// 复制post-commit.tmpl 文件 更名为 post-commit
cp post-commit.tmpl post-commit
// 把 post-commit变颜色(加权限)
chmod 777 post-commit
这里写图片描述
//编辑 post-commit文件
vi post-commit
//在文件最后行追加 命令代码
(注意:username 和 password前面是两个 横杠”–”)
cd /var/www/html/ && /usr/bin/svn update –username zhangsan –password zhangsan
:wq //保存退出

在project1目录创建一个index.php –>add –>commit –>网站。
创建文件:
这里写图片描述

测试:
这里写图片描述

13:配置第二个项目 – project2(同project1)
cd /data/svn/project2/conf
// 编辑 主配置文件
同 project1
//编辑 用户名密码配置文件
同 project1
// 编辑 授权文件
vi authz
[groups]
#管理员组,project1组,project2组
admin = zhangsan
project1 = project1
project2 = project2
#根目录 admin组有可读可写权限
[/]
@admin = rw
[project2:/]
@admin = rw
@project2 = rw
:wq //保存并退出

14:配置 /data/svn/project2 —> /var/www/php
cd /var/www/php
// 清空 php 文件夹里面的内容
rm -f *
// 在 php 目录 里检出 project2 到 当前目录
svn checkout file:///data/svn/project2 ./
// 创建同步更新的钩子
cd /data/svn/project2/hooks
//创建 post-commit 文件
cp post-commit.tmpl post-commit
chmod 777 post-commit
vi post-commit
cd /var/www/php && /usr/bin/svn update –username zhangsan –password zhangsan
创建post-commit并且修改权限如下图:
这里写图片描述
编辑 post-commit 如下图:
这里写图片描述

在project2目录里创建 index.php –>add –>commit –>访问(www.ec1.com)
创建文件:
这里写图片描述
测试:
这里写图片描述

到此处 svn 的基本配置就完成了,如果有什么错误的地方和不全的地方还望大神指点。