在工作中总要实用SVN进行版本控制,每次完成后还需要手动打包传到服务器的web目录下是在麻烦,于是通过SVN的钩子配置实现SVN提交后自动同步到web目录省去打包复杂的麻烦。
一、基本环境
服务器系统: centos6.5
SVN subversion版本: 1.6.11版本 使用yum安装的 如果需要新版本请编译源码安装
WEB服务器:Apache
二、安装SVN subversion
1、查看是否安装过
rpm -ql subversion
2、通过yum安装
yum -y install subversion
3、查看版本
svn --version
svn, version 1.6.11 (r934486)
compiled Aug 17 2015, 08:37:43
三、配置SVN subversion
1、创建用户用以TortoiseSVN客户端连接
useradd -s /sbin/nologin sxfenglei
2、为用户设置密码
passwd sxfenglei
3、防火墙开启SVN默认端口3390如果使用别的端口请根据自身情况配置
特别声明在修改前先备份防火墙配置文件,因为有的时候是动态添加的规则,后期重启将丢失
vim /etc/sysconfig/iptables
添加一条规则
-A INPUT -p tcp -m tcp --dport 3690 -j ACCEPT
重启防火墙
service iptables restart
svnadmin create /svnData/testProject
cd /svnData/testProject
会发现SVN生成了项目目录
conf db format hooks locks README.txt
/
svnData
testProject
conf
authz
passwd
svnserve.conf
db
format
hooks
looks
README.txt
5、配置SVN
5.1配置用户权限:修改vim /svnData/testProject/conf/authz 在末尾添加 SVN项目目录和用户权限 r读 w写 rw读写
[/testProject]
sxfenglei = rw
5.2配置登录密码: 修改vim /svnData/testProject/conf/passwd 增加登录用户名和秘密 这个用户必须是已经在系统中创建的用户(可以是onlogin级别的用户)
[users]
# harry = harryssecret
# sally = sallyssecret
sxfenglei=123456
5.3配置SVN: 修改vim /svnData/testProject/conf/svnserve.conf 开启以下配置
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = 提示描述内容
//使用默认端口启动
svnserve -d -r /svnData/testProject/
//使用指定端口
svnserve --listen-port 3691 -d -r /svnData/testProject
//查看允许的程序ID
netstat -nultp
//停止运行
kill -9 xxx
7、通过客户端访问,在客户端TortoiseSVN访问 svn://192.168.1.100/testProject 输入账号密码 到此SVN配置完成。
三、SVN同步到web目录
主要就是配置SVN的 hooks文件
3.1修改 /svnData/testProject/hooks/post-commit 文件
cd /svnData/testProject/hooks/
cp post-commit.tmpl post-commit
vim post-commit
REPOS="$1"
REV="$2"
SVN=/usr/bin/svn #svn程序
WEB=/www/web/myProject/public_html/test
export LANG=en_US.UTF-8
$SVN update --username xiaolian --password xiaolian029 $WEB
chown -R www:www $WEB
chmod 0755 post-commit
3.3 重启SVN
netstat -nultp
kill -9 xxxx
svnserve -d -r /svnData/testProject
3.4抽出svn到服务器www目录
svn checkout svn://114.215.98.96 /www/web/myProject/public_html/