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 命令如下:

svnadmin create /opt/svn/wwwroot/ 

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

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

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

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

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

vi authz 

在文件中添加如下代码:

[wwwroot:/] wwwroot = rw  

代码的意思是:为 wwwroot 项目添加一个 wwwroot 的用户,并且,这个用户对于 wwwroot 项目拥有读写权限。 给用户分配密码,执行如下命令:

vi passwd

输入如下内容:

wwwroot = 123456  

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

svnserve -d -r /opt/svn/  

3、配置项目仓库的钩子配置。

可以把钩子看成是 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 权限是否足以满足脚本的读写。

这种方式在如今的项目开发中非常的常见,在过去的几年中我在开发中遇到的也基本上是这种方式。所以,非常有必要掌握它,以备不时之需。

博主 2011 年创建了一个《PHP 初学者官方群》,目前群成员 500 人左右。群号:168159147。为了防止广告,设置为付费入群。欢迎大家加入讨论技术!

标签: 无

发表评论: