微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Centos 6让SVN提交文件自动更新到nginx的WEB目录

最近我在centos 6的系统中安装了subversion 的 svn 服务器。同时也安装了 Nginx WEB服务器。现在我想让 svn 提交的文件自动更新到Nginx所指定的web目录中。这样一来,我就不需要提交之后,再通过FTP将文件上传Nginx的web目录,再通过浏览器去访问这个web目录里面的脚本。所以,就有了本篇文章纪实。

环境介绍:
1)系统centos 6.3 64位。
2)服务器端SVN版本 1.6.11。
3)WEB服务器Nginx版本 0.8.46。
4)Nginx的WEB目录:/data0/htdocs/wwwroot
5)svn仓库中心目录:/opt/svn/

配置步骤如下:
1、在svn仓库中心下创建一个创建wwwroot,shell命令如下:

svnadmincreate/opt/svn/wwwroot/

2、配置wwwroot创建,shell命令如下:

cd/opt/svn/wwwroot/conf/vimsvnserve.conf

找到以下的内容,并在行首注释符号#删掉。

[general]anon-access=none
auth-access=write
password-db=passwd
authz-db=authz

为 svntest 项目增加svn用户,并且赋予权限值:

viauthz

文件添加如下代码

[wwwroot:/]wwwroot=rw

代码的意思是:为 wwwroot 项目添加一个wwwroot 的用户,并且,这个用户对于 wwwroot 项目拥有读写权限。

用户分配密码,执行如下命令:

vipasswd

输入如下内容

wwwroot=123456

配置好SVN之后,请查看你的 svn 是否启动,如果没有启动,用以下命令启动:

svnserve-d-r/opt/svn/

3、配置项目仓库的钩子配置。
可以把钩子看成是WEB项目与SVN项目仓库之间的一个关联。通过向svn项目仓库提交脚本代码,利用钩子shell脚本可以自动向web项目中将脚本文件更新过去。

进入SVN项目仓库钩子所在目录,shell命令:

cd/opt/svn/wwwroot/hooks/

后执行如下复制命令:

cppost-commit.tmplpost-commit

然后编辑post-commitshell脚本,shell命令如下:

vipost-commit

将里面的所有代码注释掉,然后输入如下代码

cd/data0/htdocs/wwwroot
/usr/bin/svncleanup
/usr/bin/svnup/data0/htdocs/wwwroot/--username"wwwroot"--password"123456"

这个地方需要注意,我们先进入到wwwroot目录下进行SVN清理(cleanup),消除一些隐患。然后再执行将 svn wwwroot项目创建里面的代码同步更新到web项目目录/data0/htdocs/wwwroot/中去。这里的账号wwwroot和密码123456是我们创建SVN wwwroot项目仓库的时候指定的。

这个时候,我们去提交一个文件到svn,这时会发现在/data0/htdocs/wwwroot/目录下同步更新过来了。

如果没有反应,会有两个地方可能出错:1)配置文件与路径写得不对,可以直接通过手工方式去执行post-commit看看有没有报错。2)权限不对。即/data0/htdocs/wwwroot权限是否足以满足脚本的读写。

原文地址:https://www.jb51.cc/centos/381166.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。