centos7源码编译安装Subversion 1.9.5

 

svn是Subversion的简称,是一个开放源代码的版本控制系统。
svn有两种运行方式:1、独立服务器(svn://xxx.xxx/xxx) 2、借助apache(http://svn.xxx.xxx/xxx)
svn存储版本数据也有两种方式:1、BDB(事务安全型表类型) 2、FSFS(一种不需要数据库存储系统)
因为BDB方式在服务中断时,可能锁住数据,这里我们选择独立服务器和FSFS方式安装svn。

一、下载安装Subversion必要的源码文件

安装svn需要apr,apr-util,zlib,serf,openssl的支持,serf的编译安装又需要scons
所以这里我们用yum来安装zlib和openssl,源码编译apr,apr-util,serf,scons

subversion源码包

1

http://mirrors.cnnic.cn/apache/subversion/subversion-1.9.5.tar.gz

 
apr源码包

1

http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.gz

 
apr-util源码包

1

http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.gz

 
serf源码包

1

https://www.apache.org/dist/serf/serf-1.3.9.tar.bz2

 
scons源码包

1

https://sourceforge.net/projects/scons/files/scons/2.5.1/

 
sqlite-amalgamation源码包

1

http://www.sqlite.org/2017/sqlite-amalgamation-3160200.zip

 
二、安装必要依赖

1

> yum -y install zlib zlib-devel openssl openssl-devel


三、安装apr

1

2

3

4

> tar xf apr-1.5.2.tar.gz

> cd apr-1.5.2

> ./configure --prefix=/data/apr

> make && make install

 
四、安装apr-util

1

2

3

4

5

> tar xf apr-util-1.5.4.tar.gz

> cd apr-util-1.5.4

> ./configure --prefix=/data/apr-util \

--with-apr=/data/apr

> make && make install

 
五、安装scons

1

2

3

4

> yum -y install python

> tar xf scons-2.5.1.tar.gz

> cd scons-2.5.1

> python setup.py install --prefix=/data/scons

 
六、安装serf

1

2

3

4

5

> tar xf serf-1.3.9.tar.bz2

> cd serf-1.3.9

> /data/scons/bin/scons PREFIX=/data/serf APR=/data/apr APU=/data/apr-util

> /data/scons/bin/scons install

> cp /data/serf/lib/libserf-1.so* /usr/local/lib/

 
七、安装svn

1

2

3

4

5

6

7

8

9

10

11

> tar xf subversion-1.9.5.tar.gz

mkdir /data/subversion-1.9.5/sqlite-amalgamation

> unzip sqlite-amalgamation-3160200.zip -d /data/subversion-1.9.5/

> cd subversion-1.9.5

> mv sqlite-amalgamation-3160200 sqlite-amalgamation

> ./configure --prefix=/data/svn \

--with-apr=/data/apr \

--with-apr-util=/data/apr-util \

--with-serf=/data/serf \

--enable-mod-activation

> make && make install

 
八、添加环境变量

1

2

echo "export PATH=/data/svn/bin:$PATH" >> /etc/profile

> source /etc/profile

 
九、查看信息

1

2

3

> svn help

> svnserve --version

> svn --version

如果出现如下信息

1

svn: error while loading shared libraries: libserf-1.so.1: cannot open shared object file: No such file or director

1

2

3

4

5

> cd /etc/ld.so.conf.d/

> vi user-libs.conf

把我们拷贝serf的文件的目录加上

/usr/local/lib

> ldconfig

 
十、创建svn仓库

1

2

3

4

mkdir -p /data/repos

> svnadmin create /data/repos

> cd /data/repos

> ll

目录结构如下:

1

2

3

4

5

6

drwxr-xr-x. 2 root root   72 1月  15 06:58 conf

drwxr-sr-x. 6 root root 4096 1月  15 06:58 db

-r--r--r--. 1 root root    2 1月  15 06:58 format

drwxr-xr-x. 2 root root 4096 1月  15 06:58 hooks

drwxr-xr-x. 2 root root   39 1月  15 06:58 locks

-rw-r--r--. 1 root root  246 1月  15 06:58 README.txt

 
十一、svn配置路径

1

2

> cd /data/repos/conf

> ll

文件如下:

1

2

3

权限配置文件 authz

用户名口令文件 passwd

svn服务配置文件 svnserve.conf

1

> vi authz

1

2

3

# /表示仓库根目录,用户名=权限

[/]

test = rw

1

> vi passwd

1

2

[users]

test = 123456

1

> vi svnserve.conf

1

2

3

4

5

6

7

8

9

10

11

[general]

#禁止匿名访问

anon-access = none

#授权用户写权限

auth-access = write

#用户密码文件

password-db = passwd

#授权登录文件

authz-db = authz

#每个svn项目认证名,建议写项目名

realm = repos


十二、启动关闭svn服务
一台机器可以启动多个svn服务,需修改不同端口号。

1

2

3

4

> svnserve -d -r /data/repos --listen-port 3690

> ps -ef|grep svn

> netstat -ln|grep 3690

> killall svnserve

 
十三、设置svn服务开机启动
方法一:
修改/etc/rc.d/rc.local文件,添加如下命令

1

/data/svn/bin/svnserve -d -r /data/repos --listen-port 3690

 
方法二:
在/etc/init.d/目录下创建svn文件并设置权限755,代码如下

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

#!/bin/bash

# centos下可以用如下命令管理svn: service svn start(restart/stop)

SVN_HOME=/data/repos

if [ ! -f "/data/svn/bin/svnserve" ]

then

    echo "svnserver startup: cannot start"

    exit

fi

case "$1" in

    start)

        echo "Starting svnserve..."

        /data/svn/bin/svnserve -d --listen-port 3690 -r $SVN_HOME

        echo "Finished!"

        ;;

    stop)

        echo "Stoping svnserve..."

        killall svnserve

        echo "Finished!"

        ;;

    restart)

        $0 stop

        $0 start

        ;;

    *)

        echo "Usage: svn { start | stop | restart } "

        exit 1

esac

 
十四、实现svn代码仓库与web线上同步

svn代码仓库目录/data/repos/www1
web线上目录/data/wwwroot/www1

1、首先checkout一份

1

> svn co svn://192.168.1.233/www1 /data/wwwroot/www1

2、修改目录权限

1

chmod -R 766 /data/www/www1

3、建立同步脚本

1

2

3

> cd /data/repos/www1/hooks

> cp post-commit.tmpl post-commit

> vi post-commit

添加如下代码

1

2

3

4

5

export LANG=en_US.UTF-8

SVN=/data/svn/bin/svn

WEB=/data/wwwroot/www1

$SVN update $WEB --username test --password 123456

chown -R 766 $WEB

1

chmod 755 post-commit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值