首页 » SEO优化 » centossvnphp同步技巧_详解centos7Apache的SVN设备同步更新做事器

centossvnphp同步技巧_详解centos7Apache的SVN设备同步更新做事器

访客 2024-12-18 0

扫一扫用手机浏览

文章目录 [+]

SVN是Subversion的简称,是一个开放源代码的版本掌握系统,相较于CVS,它采取了分支管理系统,它的设计目标便是取代CVS。
互联网上很多版本掌握做事已从CVS迁移到Subversion。
也是便是CVS的接班人!

CVS是一个C/S系统,是一个常用的代码版本掌握软件。
紧张在开源软件管理中利用。
与它相类似的代码版本掌握软件有subversion。
多个开拓职员通过一个中央版本掌握系统来记录文件版本,从而达到担保文件同步的目的。
CVS版本掌握系统是一种GNU软件包,紧张用于在多人开拓环境下的源码的掩护。
但是由于之前CVS编码的问题,现在大多数软件开拓公司都利用SVN替代了CVS。

centossvnphp同步技巧_详解centos7Apache的SVN设备同步更新做事器

官方网站:http://subversion.apache.org/

centossvnphp同步技巧_详解centos7Apache的SVN设备同步更新做事器
(图片来自网络侵删)

Windows客户端 TortoiseSVN:http://tortoisesvn.net/

常见的版本掌握软件

CVS,逐渐被SVN取代,是CVX重写版和改写版

SVN,Subversion

Git,Git是一个开源的分布式版本掌握系统,用以有效、高速的处理从很小到非常大的项目版本管理。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开拓而开拓的一个开放源码的版本掌握软件

SVN存储数据的办法

BDB,Berkeley DB,一种事务安全型表类型

FSFS,\"大众FSFS\公众 采取文件系统的办法, 替代原来的基于Berkeley DB的实现.

由于BDB办法在做事器中断时,有可能锁住数据,以是还是FSFS办法更安全一点。

SVN的运行办法及端口

独立做事器 3690端口 访问办法SVN:// C/S模式

借助apache运行 80端口 访问办法 http://

事情流程

集中式代码管理的核心是做事器,所有开拓者在开始新一天的事情之前必须从做事器获取代码,然后开拓,末了办理冲突,提交。
所有的版本信息都放在做事器上。
如果分开了做事器,开拓者基本上可以说是无法事情的。
下面举例解释:开始新一天的事情:

1、从做事器下载项目组最新代码。

2、进入自己的分支,进行事情,每隔一个小时向做事器自己的分支提交一次代码

(很多人都有这个习气。
由于有时候自己对代码改来改去,末了又想还原到前一个小时的版本,或者看看前一个小时自己修正了哪些代码,就须要这样做了)。

3、放工韶光快到了,把自己的分支合并到做事器主分支上,一天的事情完成,并反响给做事器。

这便是经典的svn事情流程,从流程上看,有不少缺陷,但也有优点。

SVN+Apache运行事理

SVN搭配Apache的时候,Apache须要利用mod_dav_svn这个模块,他的运行机制如下:

在一台做事器上建立一个源代码库,库里可以存放许多不同项目的源程序。
有源代码库管理员统一管理这些源程序。

每个用户在利用源代码库之前,首先要把源代码库里德项目文件下载到本地,然后开拓职员可以在本地修正,左后用svn命令进行提交,由源代码库统一管理修正。

mod_dav_svn 可以让版本库通过http协议实现网站展现

构建SVN版本掌握做事器

SVN+HTTP Server (XueGod63)========== Client Server(XueGod64)

检讨是否已安装

rpm -qa subversion

如果要卸载旧版本

yum remove subversion

软件安装

#包括HTTP所需模块一起装(httpd mod_auth_mysql 是安装合营Apache的模块,你可以只装subversion,多装了也无所谓) [root@XueGod63 ~]# yum install -y subversion httpd mod_dav_svn #查看已注册 [root@XueGod63 ~]# cat /etc/services | grep --color svn

svn 3690/tcp # Subversion

svn 3690/udp # Subversion

创建版本库目录

#存放版本库的主目录 [root@XueGod63 ~]# mkdir /www/svn/ #创建项目 #svnadmin命令是由subversion这个软件包供应的 [root@XueGod63 ~]# svnadmin create /www/svn/test_project #随便查看一个版本库 [root@XueGod63 ~]# ls /www/svn/test_project

conf db format hooks locks README.txt

dav目录:是供应apache与mod_dav_svn利用的目录,让他们存储内部数据,刚开始新建时此目录没有

db目录:便是所有版本掌握的数据存放文件

hooks目录:放置hook脚本文件的目录

locks目录:用来放置subversion监控锁天命据的目录,用来追踪存取文件库的客户端

format文件:是一个文本文件,里面只放了一个整数。
表示当前文件库配置的版本号

conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等),也是我们要关注的配置文件

[root@XueGod63 ~]# ls /www/svn/test_project/conf/

authz passwd svnserve.conf

authz #认证权限干系

passwd #用户名和密码

svnserve.conf #做事器配置文件

针对不同版本库修正配置文件

接下来的一段用于配置利用哪种授权登录办法;

#修正xuegod.cn的配置文件 [root@XueGod63 ~]# vim /www/svn/test_project/conf/svnserve.conf

[general]

anon-access = none #对付匿名用户,无访问权限,这里必须为none,由于只有设为none,在客户端才能看到每次提交的备注信息

auth-access = write #对付授权用户,有写权限,可以是read,write,none

#password-db = passwd #用户名和密码都是明文存放在同级目录下的passwd文件中;优点是高效配置大略,缺陷是安全性弱,明文总不是那么让人觉得可靠

authz-db = authz #认证权限文件,取消注释即可

realm = test_project #指定授权所属的域,PHP的同道可将其理解为名字空间;

#接下来是[sasl]段,用于标识是否进行SASL加密处理;

use-sasl = true

min-encryption = 128

max-encryption = 256

#变量 min-encryption 和 max-encryption 掌握做事器所须要的加密强度。

把稳:此配置文件的所有内容必须顶格,否则会报错

配置用户和密码及认证权限

#设置用户名和密码 [root@XueGod63 ~]# vim /www/svn/test_project/conf/passwd

[users]

Find = 123456

HA = 123456

user = 123456

#末端添加上面三行

#对付部分版本,前面的[users]是有#号的,如果有#号,一定要取消,否则只能利用匿名用户登录,客户端登录不会

涌现登录窗口或密码提示,除非在配置文件将anon设置为none,否则将返回一个缺点

#这里的密码都是明文,没有加密

#设置用户和组的权限 [root@XueGod63 ~]# vim /www/svn/test_project/conf/authz

[groups] #此行默认存在了

test_group = Find,HA #定义组,在[groups]下面添加

#用户组格式 用户组名 = 用户1,用户2

#一个组可以包含多个用户,英文逗号间隔,用户名必须是在passwd中存在的

[test_project:/] #/表示我当前所在版本库目录,这里代表test_project

@test_group = rw #@test_group表示这个组的权限,便是上面定义的组的成员

= #除了上面的有授予权限成员之外,其他的成员都没有权限

SVN目录格式:

[/目录名]

@用户组名 = 权限

用户名 = 权限

=

SVN利用SASL加密

1.配置svnserve.conf,注释掉password-db = passwd

并启用sqsl:use-sasl = true

2.新建一个svn.conf文件,一样平常放在/usr/lib/sasl2或者/etc/sasl2,内容为:

pwcheck_method: auxprop

auxprop_plugin: sasldb

sasldb_path: /home/svnadmin/config/sasldb

mech_list: DIGEST-MD5

个中sasldb_path 指定你打算将sasl加密的数据库放置的位置;

注释:pwcheck_method指明检讨的方法,这里是“auxprop ”,这个pwcheck_method还对应了如启动一个代理作为认证做事等办法,而现在的意思便是利用本文件说的办法去检讨。
然后我们指明auxprop_plugin为sasldb,也便是利用一个文件存放用户名密码,也便是/www/svn/test_project/sasldb,其它的认证信息存放plugin还有sql和ldapdb。
而mech_list指明了认证信息通报机制。

svnserve 已经在运行,你须要重启做事,并确保它读取了更新后的配置参数

killall svnserve //停滞svnserve做事

svnserve –d –r /www/svn //启动svnserve做事

3.创建用户和密码

利用saslpasswd2 程序

语法:saslpasswd2 –c –f /www/svn/test_project/sasldb –u [svnserve.conf里面配置的realm名字] [username]

eg:saslpasswd2 -c -f /home/svnadmin/config/sasldb -u examPro colin

会涌现交互界面,提示输入两次密码;

附:

saslpasswd2 -d -f home/svnadmin/config/sasldb -u 用户名//删除用户

sasldblistusers2 -f /home/svnadmin/config/sasldb // 查询用户

PS:如果访问库的时候涌现以下提示 \公众Could not obtain the list of SASL mechanisms\"大众,缘故原由是Linux默认没有安装DIGEST-MD5,此时,可用以下命令安装更新:yum install cyrus-sasl-md5 , cyrus-sasl-md5首页:http://asg.web.cmu.edu/sasl/, 安装包下载地址:ftp://ftp.andrew.cmu.edu/pub/cyrus/

配置完成。

做事SVN启动及创建测试代码

#启动了所有版本库,如果只须要某一个版本库, #在-r后面添加/www/svn/test_project/的版本库即可 -d=daemon -r=root of directory of save指定根目录 [root@XueGod63 ~]# svnserve -d -r /www/svn/ #查询到下面这行内容就可以了 [root@XueGod63 ~]# ps -aux | grep svn

root 17107 0.0 0.0 199020 1028 ? Ss 23:30 0:00 svnserve -d -r /www/svn/

root 17446 0.0 0.0 110228 892 pts/0 S+ 23:32 0:00 grep --color=auto svn

[root@XueGod63 ~]# netstat -antup | grep svn

做事正常

tcp 0 0 0.0.0.0:3690 0.0.0.0: LISTEN 17107/svnserve

利用svn导入测试代码

导入测试代码格式: svn [选项] 源码 svn://server ip/项目名

常见的选项:

import:将未版本化的文件纳入版本掌握并提交 checkout:从版本库中检出一个修订版 update:更新事情拷贝 add,delete,copy,move:增、删、复制、移动文件或目录

status:检讨状态差异 diff:检讨文件行级详细差异

revert:规复 resolve:办理冲突

switch:切换事情拷贝对应的版本库分支 log:查看历史记录

list:显示文件目录 cat:查看某个文件内容

开放svn端口

默认是3690端口,你也可以用别的。
已开启的跳过这一步

vi /etc/sysconfig/iptables #修正 iptables -I INPUT -p tcp --dport 3690 -j ACCEPT #保存 service iptables save #重启 service iptables restart #查看 /etc/init.d/iptables status

在网站根目录建立SVN版本库

为了避免每次都重新输入SVN账号密码,可修正以下配置

[root@localhost public_html]# vim /root/.subversion/servers

# store-plaintext-passwords = no

改为

store-plaintext-passwords = yes

建立版本库

#打开网站根目录,我的根目录是/www/web/test_com/public_html [root@XueGod63 ~]# cd /www/web/test_com/public_html #在网站根目录建立版本库,由于当前已经在网站根目录,以是用 . 表示建立版本库的目录 #也可以利用绝对路径 /www/web/test_com/public_html [root@XueGod63 ~]# svn checkout svn://192.168.1.2/test_project . #提示输入SVN帐号和密码,输入以上设置的SVN帐号密码即可

提交网站根目录的源码到SVN做事器

把网站的所有文件提交到SVN做事器

#把项目加入到SVN库,并提交 [root@XueGod63 ~]# svn add app/ [root@XueGod63 ~]# svn add include/ [root@XueGod63 ~]# svn add template/ [root@XueGod63 ~]# svn add runtime/ [root@XueGod63 ~]# svn add index.php [root@XueGod63 ~]# svn commit -m \"大众初次提交\"大众

在开拓环境(本地)检出项目

在本地项目检出SVN,SVN地址:svn://192.168.1.2/test_project

d:守护进程

-r:svn根目录

假设做事端IP为192.168.1.2,那么如下设置后test_project的访问目录就为:

svn://192.168.1.2/test_project

比如 帐号密码为上面设置的Find = 123456,检出。

SVN上传时同步到做事器其它目录

同步程序思路:用户提交程序到SVN,SVN触发hooks,按不同的hooks进行处理,这里用到的是post-commit,利用post-commit到代码检出到SVN做事器确当地硬盘目录,再通过rsync同步到远程的WEB做事器上。

知识点:

1、SVN的hooks

# start-commit 提交前触发事务

# pre-commit 提交完成前触发事务

# post-commit 提交完成时触发事务

# pre-revprop-change 版本属性修正前触发事务

# post-revprop-change 版本属性修正后触发事务

通过上面这些名称编写的脚本就就可以实现多种功能了,相称强大。

2、同步命令rsync的详细参数利用

3、具有基个措辞的编程能力bash python perl都可以实现

post-commit详细实现细节

post-commit脚本

能看到一堆模版钩子文件,我们须要的是post-commit.tmpl,

copy一份,命名为post-commit。
然后修正;

编辑文件:

sudo vim /www/svn/test_project/hooks/post-commit

把稳:编辑完成post-commit后,给予可实行权限:

sudo chmod -R 755 /www/svn/test_project/hooks/post-commit

内容:

#!/bin/sh #设置措辞环境 ##这行比较主要,须要根据你的做事器环境选择精确的措辞环境,否则,这个update不会事情 export.UTF-8 #设置SVN更新时须要同步更新的目录,这里创造不加username和password也是可以的 #svn update /www/web/test_com/public_html --username yoursname --password yourpwd sudo svn update /www/web/test_com/public_html

这样在本地SVN提交代码后,做事器的代码也会自动从SVN更新。

把稳:svn仓库文件夹的other必须要有实行权限不然脚本无法实行。
SVN update 之前一定要先手动checkout一份出来,还有这里一定要添加用户和密码如果只是手动一样会更新,但自动一样的弗成。

启动和停滞SVN做事

启动SVN做事

svnserve -d -r /www/svn/

描述解释:

-d 表示svnserver以“守护”进程模式运行

-r 指定文件系统的根位置(版本库的根目录),这样客户端不用输入全路径,就可以访问版本库。

如果想监听其他端口,利用

svnserve -d -r /www/svn/ --listen-port 88

停滞SVN做事

killall svnserve

设置开机自启动

安装好的svn做事端,默认是不会开机自启动的,每次开机自己启动会很麻烦,我们可以把它设成开机启动。

首先:编写一个启动脚本svn_startup.sh,我放在/www/svn/svn_startup.sh

#!/bin/bash /usr/bin/svnserve -d -r /www/svn/ --listen-port 88

如果是支配为外网,这里自定义了88端口,须要把稳检出地址须要加上自定义的端口号。
(貌似自定义端口号后不能利用post-commit自动提交了,会提示谢绝连接,还没有找到利用自定义端口连接的方法)

这里的svnserve路径保险起见,最好写绝对路径,由于启动的时候,环境变量大概没加载。

绝对路径怎么查?

which svnserve

这里还有可能碰到一个问题,如果你在windows下建立和编写的脚步,拿到linux下,用vi或者vim修正后可能会无法实行,这是文件格式的问题:

vi svn_startup.sh #输入:set ff 回车 #如果显示的结果不是fileformat=unix #再次输入 set ff=unix #就OK了

然后修正该脚本的实行权限:

chmod ug+x svn_startup.sh #或者万能的 chmod 777 svn_startup.sh

末了,加入自动运行:

vi /etc/rc.d/rc.local #在末端添加脚本的路径,如: /www/svn/svn_startup.sh

现在,你可以重启一下试试了。

ps -ef|grep svnserve

标签:

相关文章