Subversion(SVN)是一款优秀的集中式版本控制工具,目前国内中小型开发团队还是更偏向用SVN进行代码的管控,当然还有Git,两者之间的区别本文就不再做介绍,需要更多了解可以直接百度。而本文主要讲解如何在CentOS下快速搭建SVN服务器,创建版本仓库,并配置WebHook实现同步部署代码。

一.准备工作

Linux测试服务器环境:

服务器供应商:腾讯云
操作系统:CentOS 7.2 64位
硬件:标准型S2 1核 1GB 5Mbps

若没有条件仅需要学习测试,可以自己装虚拟机。

二.更新系统源(非强制)

QQ截图20171215011900.png

三.安装subversion

1.使用yum方式下载subversion进行安装。

yum install subversion

QQ截图20171215012532.png

2.安装完成后,会显示Complete!字样,说明已经安装成功,输入命令:

svnserve --version

QQ截图20171215012710.png

看到以上图即代表安装无误。

四.创建SVN版本库,并配置SVN账号、权限

1.创建版本目录

mkdir -p /var/svn/testsvn

2.创建版本库

svnadmin create /var/svn/testsvn

3.进入/var/svn/testsvn目录,查看创建好的版本库。

QQ截图20171215013420.png

4.进入 conf 文件夹,内有三个文件,分别为:

QQ截图20171215013825.png

5.编辑 passwd 文件[命令:vi passwd]。

末尾加入SVN版本库的账号和密码后保存。

格式:用户名 = 用户密码

QQ截图20171215014111.png

6.编辑 authz 权限控制文件[命令:vi authz]。

末尾写入:

[/]  wigiesen = rw

保存后,代表 wigiesen 用户对该版本库有读写权限。

7.编辑 svnserve.conf 版本库配置文件[命令:vi svnserve.conf]。

<span style="white-space: normal;">QQ截图20171215015042.png</span>

分别将图中5处前的#号取消,代表开启该配置。同时将:

realm = My First Repository改为realm = /var/svn/testsvn

注:

anon-access = read  #匿名用户可读
auth-access = write #授权用户可写
password-db = passwd #SVN账号文件
authz-db = authz  #SVN权限文件
realm = /var/svn  #SVN版本库目录

8.启动SVB版本库。

svnserve -d -r /var/svn/
# 若无法启动,说明svn服务已经被占用,
执行 killall svnserve 关掉当前正在执行的SVN进程后即可。

查看SVN版本库是否启动成功

ps aux | grep svn

QQ截图20171215020211.png

9.回到Windows下,使用TortoiseSVN检出SVN版本库。

QQ截图20171215020647.png

输入之前在 passwd 文件中设置的账号与密码

QQ截图20171215020715.png

现在已经可以使用SVN进行提交项目了!

QQ截图20171215021147.png

五.设置WebHook,实现提交代码同步部署到网站

这里为了方便展示,不再繁琐的配置web服务器,原理相同。

1.进入 /var/svn/testsvn/ 目录,找到 hooks 文件夹并进入

QQ截图20171215021920.png

2.该目录下为SVN预设置的一些钩子模板,无视他另行创建post-commit 文件。

vi post-commit

并写入:

#!/bin/sh
REPOS="$1"
REV="$2"
DIR="/var/www/html" #此处是你需要同步的web目录
export LANG=en_US.UTF-8
CURDATE='date'
echo "Code Deployed By at $CURDATE,$REPOS,$REV" >> /svn/code_deploy.log
#设置好你创建的svn账号和密码
svn update $DIR --username wigiesen --password wigiesen123

3.修改 post-commit 的权限

chmod +x post-commit

4.进入到你所需要同步的web目录 /var/www/html 执行svn检出

svn checkout svn://127.0.0.1/testsvn/

QQ截图20171215023503.png

按照提示输入相应的svn账号密码,即可完成检出。

测试同步,已经同步部署了:

QQ截图20171215024830.png

最后修改:2019 年 04 月 15 日 01 : 54 PM