SVN搭建

如何搭建自己的SVN服务~

本次搭建的linux系统环境为centos

1.先下载svn

yum install -y subversion

2.创建版本库咯

//先建目录
mkdir /var/svn
cd /var/svn
//创建版本库
svnadmin create /var/svn/website
cd website

//会看到自动生成的版本库文件
conf  db  format  hooks  locks  README.txt

3.修改配置文件咯
进入版本库中的配置目录conf,此目录有三个文件: svn服务综合配置文件(svnserve.conf)、 用户名口令文件(passwd)、权限配置文件(authz)。
修改权限配置文件:vim authz
创建用户组usergroup,里面有rongren,test两个用户,usergroup用户组对website这个版本库有读和写的权限
操作截图

配置用户名命令文件:vim passwd
设置用户的帐号密码,帐号对应用户组里面的帐号
操作截图

配置SVN服务综合配置文件svnserve.conf
//找到以下配置项,将前面的#号去掉,然后做相应的配置
anon-access = none //匿名用户访问权限:无
auth-access = write //普通用户访问权限:读、写
password-db = passwd //密码文件
authz-db = authz //权限配置文件
realm = /var/svn/website//版本库所在
注意:所有以上的配置项都需要顶格,即前面不能预留空格,否则报错

操作截图

启动svn服务:svnserve -d -r /var/svn
如果提示:
svnserve: E000098: Can't bind server socket: Address already in use
证明现在svn已经被启动了,由于我们修改了配置文件,因此要重启svn服务

//查看svn服务详情
ps aux | grep svn
//将svn服务强制停止  其中790为svn服务的ID号,-9是kill的参数
kill -9 790

或者用

killall svnserve
再运行 svnserve -d -r /var/svn,进行启动服务
请注意开启服务器3690端口,或者关闭防火墙 然后随便测试下可能更新提交不,可以你就成功啦
如何测试更新:在客户端检出svn://ip/版本库名称 如果更新的时候提示主机积极拒绝,就是SVN服务没开

4.实现svn更新自动同步到web目录(搞一个钩子)
1.在web目录新建一个文件夹,假如web目录是/var/www,需要更新的文件夹为website

mkdir /var/www/website
svn co svn://xxx.xxx.xxx.xxx/website /var/www/website --username '用户名' --password '密码'

就可以更新成功了
2.然后进入版本库的钩子文件

cd /var/svn/website/hooks

复制一下原来的post-commit.tmpl的文件,新文件名为post-commit

cp post-commit.tmpl post-commit

3.修改post-commit钩子脚本

vim post-commit

把这句注释掉

mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
加上#
#mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf

末尾加上这两句

export LANG=zh_CN.UTF-8
svn update /var/www/website --username '用户名' --password '密码' autoweb --no-auth-cache

操作截图

4.给这个脚本755的权限

chmod 755 post-commit

至此, SVN搭建及自动更新钩子已部署完成

添加新评论