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

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

环境介绍:
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/web

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

svnadmin create /opt/svn/wwwroot/

二、配置wwwroot建立,shell命令以下:vim

cd /opt/svn/wwwroot/conf/
vim svnserve.conf

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

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

为 svntest 项目增长svn用户,而且赋予权限值:浏览器

vi authz

在文件中添加以下代码:服务器

[wwwroot:/]
wwwroot = rw

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

给用户分配密码,执行以下命令:post

vi passwd

输入以下内容:spa

wwwroot =123456

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

svnserve -d -r /opt/svn/

三、配置项目仓库的钩子配置。
能够把钩子当作是WEB项目与SVN项目仓库之间的一个关联。经过向svn项目仓库提交脚本代码,利用钩子shell脚本能够自动向web项目中将脚本文件更新过去。

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

cd /opt/svn/wwwroot/hooks/

而后执行以下复制命令:

cp post-commit.tmpl post-commit

而后编辑post-commitshell脚本,shell命令以下:

vi post-commit

将里面的全部代码注释掉,而后输入以下代码:

cd /data0/htdocs/wwwroot
/usr/bin/svn cleanup
/usr/bin/svn up /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权限是否足以知足脚本的读写。

相关文章
相关标签/搜索