02月07, 2017

整理centos6.5服务器上web环境部署svn的问题

centos6.5+ 服务器上搭建SVN服务器并实现自动同步至web目录:

预期

1.仓库目录 /home/svn/ 下,并且仓库名为 project;

2.创建用户组test,该组下添加两个成员test01、test02,密码同用户名,两用户可以checkout代码和提交代码;

3.利用Hooks实现svn代码更新的时候自动同步至web目录(web目录在 /home/www/ 下)。

一、搭建svn环境并创建仓库:

1、yum安装Subversion:

yum install -y subversion

2、检测是否安装成功(查看svn版本号)

 svnserve --version

3、创建版本库

 //先建目录
 cd /home/svn

 //创建版本库
 svnadmin create /home/svn/project

 cd project
 //会看到自动生成的版本库文件
 conf  db  format  hooks  locks  README.txt

至此,svn环境搭建成功。

二、创建用户组及用户:

1、 进入版本库中的配置目录conf,此目录有三个文件: svn服务综合配置文件(svnserve.conf)、 用户名口令文件(passwd)、权限配置文件(authz)。

2、修改权限配置文件:vim authz

3、配置用户名命令文件:vim passwd

4、配置SVN服务综合配置文件:svnserve.conf

 //找到以下配置项,将前面的#号去掉,然后做相应的配置
 anon-access = none  //匿名用户访问权限:无
 auth-access = write     //普通用户访问权限:读、写
 password-db = passwd        //密码文件
 authz-db = authz        //权限配置文件
 realm = /home/svn/project    //版本库所在

注意:所有以上的配置项都需要顶格,即前面不能预留空格,否则报错

5、启动svn服务:

svnserve -d -r /home/svn

如果提示:

svnserve: E000098: Can't bind server socket: Address already in use 证明现在svn已经被启动了,由于我们修改了配置文件,因此要重启svn服务

 //查看svn服务详情
 ps aux | grep svn
 //将svn服务强制停止  其中790为svn服务的ID号,-9是kill的参数
 kill -9 790

或者用

 killall svnserve

再运行 svnserve -d -r /home/svn,进行启动服务;此处建议直接运行:

 svnserve -d -r /home

(注:解决部分情况下运行/home/svn不生效问题)

6、测试服务器:

 //我们在web目录测试(/home/www)
 cd /home/www
 svn co svn://IP地址/project

如果提示:Checked out revision 1. 表示checkout成功

我们添加新文件来测试是否提交成功:

 cd /home/www
 touch index.php
 svn add index.php   //成功的话会显示  A index.php
 svn commit index.php -m "测试提交文件"

若最后提示:

 Adding         index.php
 Transmitting file data .
 Committed revision 2.

则表示我们svn服务器成功搭建!

7、本地checkout(具体操作忽略~)

三、实现svn更新自动同步到web目录:

1、在web目录中checkout版本库,关键的一步:

 svn co svn://IP地址/project /home/www --username test01(SVN账号) --test01(SVN密码)

进入/home/svn/project/hooks下,建立post-commit文件:

 cd /var/svn/project/hooks
 vim post-commit

 //在该文件里添加如下代码,保存
 #!/bin/sh
 #设定环境变量,如果没有设定可能会出现update报错
 #设定语言,根据系统语言设置,如果是GBK就设置为 LANG=zh_CN.GBK
 export LANG=en_US.utf8
 SVN_PATH=/usr/bin/svn   //这里不用改
 WEB_PATH=/home/www  //web目录,如果你的不同,可以改
 //这里的用户随便一个就好
 $SVN_PATH update $WEB_PATH --username 'test01' --password 'test01' --  no-auth-cache

保存退出。

修改post-commit用户为www(自行依据本地环境修改)目录用户:

chown www:www post-commit

增加post-commit 执行权限:

chmod 755 post-commit

四、给SVN控制的项目添加忽略文件/文件夹:

1.未加入控制的文件夹

svn propset svn:ignore 'test' .
svn update
svn commit -m "add a ignore dir"

2.已经加入版本控制的文件夹

svn export test test_bak
svn rm test
svn commit -m "delete test"
mv test_bak test
svn propset svn:ignore 'test' .
svn update
svn commit -m "add a ignore dir"

注意: 后面的 “ .“ 标点

3.如果忽略一个目录下多个文件夹的话,如下

svn propset svn:ignore 'test
    test1
    test2' .

注意:每一个文件夹要单独另起一行

本文链接:https://baboben.com/post/svnadmin.html