1.环境
centos6.4php
2.安装svn
yum -y install subversionweb
3.配置apache
创建版本库目录
mkdir /www/svndatacentos
svnserve -d -r /www/svndata--开启服务缓存
4.创建版本库服务器
建立一个新的Subversion项目
svnadmin create /var/www/svndata/njlrxxtcp
配置容许用户jiqing访问
cd /var/www/svndata/njlrxx/confsvn
vi svnserve.conf
anon-access=none
auth-access=write
password-db=passwdpost
anon-access = read日志
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository
各参数定义以下:
anon-access :定义非受权用户的访问权限,有三种方式: none 、 read 、 write ,设置为 none 限制访问,read 为只读, write 为具备读写权限,默认为 read 。
auth-access :定义受权用户的访问权限,有三种方式: none 、 read 、 write ,设置为 none 限制访问, read为只读, write 为具备读写权限,默认为 write 。
password-db :定义保存用户名和密码的文件名称,这里为 passwd ,和该文件位于同一目录。
authz-db :定义保存受权信息的文件名称,这里为 authz ,和该文件位于同一目录。
realm :定义客户端链接是的“认证命名空间”, Subversion 会在认证提示里显示,而且做为凭证缓存的关键字。
最后操做是关闭服务然再打开服务:
svn服务的关闭:
killall svnserve
svn开启:
svnserve -d -r /var/www/svndata
检查防火墙,是否添加svn端口规则
查看: iptables -L -n
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
须要说明的是对于Linux下的其它服务均可以用以上命令执行开启和关闭操做。
在开启了防火墙时,作以下设置,开启相关端口,
修改/etc/sysconfig/iptables 文件,添加如下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
实现SVN与WEB同步,能够CO一个出来,也能够直接配在仓库中
1)设置WEB服务器根目录为/var/www/webroot
2)checkout一份SVN
svn co svn://localhost/njlrxx /var/www/webroot/njlrxx
修改权限为WEB用户
chown -R apache:apache /var/www/webroot/njlrxx
3)创建同步脚本
cd /var/www/svndata/njlrxx/hooks/
cp post-commit.tmpl post-commit
编辑post-commit,在文件最后添加如下内容
REPOS="$1" REV="$2" BASEPATH=/var/www/webroot/njlrxx WEBPATH="$BASEPATH/" export LANG=zh_CN.UTF-8 svn update $WEBPATH --username jiqing --password 123456 --no-auth-cache
增长脚本执行权限
chmod +x post-commit
===============================================================
SVN自动同步程序执行流程:一、用户提交文件到SVN服务器,提交操做成功后触发post-commit脚本二、在post-commit版本文件中使用php_script.php执行PHP脚本三、在PHP脚本中经过exec系统调用更新服务器上的版本库工做副本四、根据更新操做结果日志,对另外一个SVN版本库进行对应的操做处理