linux下构建svn服务器并实现项目自动部署

 

Linux系统中搭建svn服务所需要用到的软件叫做subversion,可以通过yum来进行安装. 
svn服务是为了实现协同工作,即一个团队公众开发一个项目而不导致代码混乱,不会出现今天我修改的代码在不通知同事的情况下又被他修改了. 
自动部署是为了让修改后的代码自动的部署到项目文件夹里,这个要通过svn的钩子功能实现. 
因此对svn的搭建要进行两步操作:一、安裝svn服务器,二、配置svn钩子文件 
1. svn服务器创建(安装): 
1.1 安装:

[root@singledb ~]# yum install -y subversion

Loaded plugins: rhnplugin, security

This system is not registered with RHN.

RHN support will be disabled.

Setting up Install Process

Resolving Dependencies

--> Running transaction check

---> Package subversion.i386 0:1.4.2-4.el5_3.1 set to be updated

--> Finished Dependency Resolution



Dependencies Resolved



====================================================================================================

 Package                Arch             Version                        Repository             Size

====================================================================================================

Installing:

 subversion             i386             1.4.2-4.el5_3.1                rhel-base             2.3 M



Transaction Summary

====================================================================================================

Install      1 Package(s)        

Update       0 Package(s)        

Remove       0 Package(s)        

Total download size: 2.3 M

Downloading Packages:

subversion-1.4.2-4.el5_3.1.i386.rpm                                          | 2.3 MB     00:00    

Running rpm_check_debug

Running Transaction Test

Finished Transaction Test

Transaction Test Succeeded

Running Transaction

Installing     : subversion                                                                   

1/1

Installed:

subversion.i386 0:1.4.2-4.el5_3.1                                                                

Complete!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71

1.2 验证安装版本:

[root@singledb ~]# svnserve --version

svnserve, version 1.4.2 (r22196)

compiled Aug  5 2009, 19:03:56

Copyright (C) 2000-2006 CollabNet.

Subversion is open source software, see http://subversion.tigris.org/

This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository back-end (FS) modules are available:

* fs_base : Module for working with a Berkeley DB repository.

* fs_fs : Module for working with a plain file (FSFS) repository.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

1.3 创建SVN 版本库

[root@singledb ~]# mkdir /u02/svn --新建文件夹

[root@singledb ~]# svnadmin create /u02/svn/davesvn  --davesvn为版本库名称
  • 1
  • 2
  • 3

1.4 SVN 配置 
创建版本库后,在这个目录下会生成3个配置文件:

[root@singledb conf]# pwd

/u02/svn/davesvn/conf

[root@singledb conf]# ls

authz  passwd  svnserve.conf
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(1)svnserve.conf: svn服务配置文件下。

(2)passwd: 用户名口令文件。

(3)authz: 权限配置文件。

三个文件的配置内容

svnserve.conf(主要是打开以下配置,注意每行前面不能有空格):

anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = /data/svnhome
  • 1
  • 2
  • 3
  • 4
  • 5

passwd文件:

[users]
zhang =zhang123 --账号 =密码
  • 1
  • 2

authz文件:

[aliases]
[groups]
[/]
zhang=rw
  • 1
  • 2
  • 3
  • 4
  • 5

1.5 启动SVN服务:

[root@singledb conf]# svnserve -d -r /u02/svn

   -d表示后台运行

   -r 指定根目录是 /u02/svn
  • 1
  • 2
  • 3

1.6停止SVN服务:

[root@singledb conf]# ps -ef | grep svn
root      4592     1  0 18:04 ?        00:00:00 svnserve -d -r /u02/svn
root      4594  3709  0 18:04 pts/1    00:00:00 grep svn
ps -aux |grep svn
kill -9 进程杀掉
  • 1
  • 2
  • 3
  • 4
  • 5

2.自动部署项目 
使用post-commit实现自动部署

搭建svn都不是仅仅为了把代码存到仓库,而是同步部署到对应的项目。

在 svn 目录的 /hooks里面有一堆tmpl,这些tmpl可以做很多事情,不过今天我们就说一下自动部署post-commit.tmpl。

tmpl文件是模版文件,我们要用post-commit需要手动复制对应tmpl里面的内容到新的post-commit里面

cp post-commit.tmpl post-commit
  • 1

step.1:

然后打开文件清空内容,修改为以下代码:

!/bin/sh
export LANG=zh_CN.UTF-8
/usr/bin/svn update --username **** --password **** /var/www/test
  • 1
  • 2
  • 3

其中第一行意思是:用sh来解析这个脚本,因为各种shell的语法有细微的差别

第二行是编码格式:这里我使用的是UTF-8

最后一行/usr/bin/svn 是svn的路径,不是项目路径,应该都是一样的,后半句分别是用户名、密码、和项目路径。–username这个比较坑了,网上搜出来的很多都搞错了,前面其实是两个减号,英文输入法下的。

step.2:

修改post-commit的可执行权限

chmod 755 post-commit
  • 1

step.3:

在服务器进入项目目录/var/www/test checkout 整个项目。

注意此处不要checkout文件夹,正确代码应该是这样:

svn checkout svn://{您的服务器地址}:{端口号}/test . //注意目录后面还有一个点 
注意:此处的/test 可不需要添加:( 添加的目的是为了实现多个项目。 )

svn checkout svn://{您的服务器地址}:3690 . //注意目录后面还有一个点 
至此,如果按照此步骤搞下来,应该已经没有问题了,你可以本地commit代码,自动同步到项目了。

3.常见错误:

255错误:post-commit没有给执行权限 或者 头部没有执行用sh执行,就是没有#!/bin/sh 
提示跳过目录:服务器目录没有checkout代码,记得一定要先checkout一次,才能同步(!,每次新建项目都需要) 
什么提示也没有:这种情况出现在用工具commit的时候,成功了,但是就是没有同步,建议你到linux下,使用./post-commit手动执行看报什么错误。如果乱码,请将文件内编码格式修改为GBK 
提示** is a direcitory:/usr/bin/svn你把这个搞错了,他不是一个目录,是svn的路径

 

 

原文链接:https://blog.csdn.net/qq_26182959/article/details/78845866

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值