Linux 安装配置 SVN 并设置钩子实现自动同步到web目录

安装说明

安装方式:

yum install (源码安装容易产生版本兼容的问题)

安装软件:

系统自动下载SVN软件

检查已安装版本

检查是否安装了低版本的SVN

rpm -qa subversion

卸载旧版本SVN

yum remove subversion

一.安装SVN

yum -y install subversion

验证安装

检验已经安装的SVN版本信息
svnserve --version

代码库创建

SVN软件安装完成后还需要建立SVN库

mkdir -p /www/svndata
svnadmin create /www/svndata/test

执行上面的命令后,自动建立svndata库,查看/www/svndata/test 文件夹发现包含了confdbformathookslocksREADME.txt等文件,说明一个SVN库已经建立。

配置代码库

进入上面生成的文件夹conf下,进行配置
cd /www/svndata/test/conf

用户密码passwd配置

cd /www/svndata/test/conf
vim passwd

修改passwd为以下内容:

[users]
# harry = harryssecret
# sally = sallyssecret
ce=123456

权限控制authz配置

vim authz

目的是设置哪些用户可以访问哪些目录,向authz文件追加以下内容:

设置[/]代表根目录下所有的资源
[/]
cqh=rw

服务svnserve.conf配置
vim svnserve.conf

追加以下内容:

[general]
#匿名访问的权限,可以是read,write,none,默认为read
anon-access=none

#使授权用户有写权限
auth-access=write

#密码数据库的路径
password-db=passwd

#访问控制文件
authz-db=authz

#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm = My First Repository

启动SVN

svnserve -d -r /www/svndata
或者指定端口(3700)启动 svnserve -d -r /www/svndata --listen-port 3700

查看SVN进程

[root@localhost conf]# ps -ef|grep svn|grep -v grep
root     12538     1  0 14:40 ?        00:00:00 svnserve -d -r /www/svndata

检测SVN 端口

[root@localhost conf]# netstat -ln |grep 3690
tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN

停止重启SVN

[root@localhost password]# killall svnserve    //停止
[root@localhost password]# svnserve -d -r /www/svndata // 启动

测试

SVN服务已经启动,使用客户端测试连接。 客户端连接地址:svn://xxx.xxx.xxx.xxx/test 用户名/密码: cqh/123456 测试创建文件夹等操作。

二.设置钩子自动更新

实现SVN与WEB同步,可以CO一个出来,也可以直接用自动更新 web 目录的方法,我们要在 svn 版本库中配置钩子来实现,就是创建一个post-commit的配置文件,对其进行简单的配置,简简单单的四步就可以实现 Linux 下 SVN 自动更新 web 目录配置。第一步:建立你的web程序目录

mkdir /var/www/html/test

进入你建立的 web 程序目录(svn checkout可以简写为co)

svn checkout svn://localhost/svntest //不重命名文件夹,直接在当前目录下检出

svn checkout svn://localhost/svntest test //检出文件并且重命名文件夹

在项目库的 hooks/ 目录下新建 post-commit 文件 【钩子脚本】添加脚本内容如下

export.UTF-8
SVN=/usr/bin/svn            #这里配置的是svn安装bin目录下的svn文件
WEB=/var/www/html/test      #要更新的目录
$SVN update $WEB --username cqh --password 123456
chown -R www:www  $WEB

其中 SVN= 右边改成 svn 命令位置 WEB= 右边改成你实际的web目录第三步:让post-commit有执行的权限
chmod a+x post-commit

最后一步就是测试了。说明: export.UTF-8是为了解决svn post commit 中文乱码,设置本地化编码,因为我的系统为UTF8编码,其实SVN默认就是UTF-8编码,如果编码是GBK的话不设置将会出现错误,而执行不成功,错误标识为

svn: Can't convert string from native encoding to 'GBK'
/usr/bin/svn update --username cqh --password 123456 /var/www/html/test 执行更新操作 如果提示:
post-commit hook failed (exit code 255) with no output

赋予post-commit文件可执行权限 如果您的默认编码就是UTF-8的,要上传中文文件,先将文件另存为UTF-8格式在提交

非特殊说明,本博所有文章均为博主原创。

备注:相关侵权、举报、投诉及建议等,请联系站长

添加新评论

昵称
邮箱
网站