• 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源码包

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

     
    apr源码包

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

     
    apr-util源码包

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

     
    serf源码包

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

     
    scons源码包

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

     
    sqlite-amalgamation源码包

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

     
    二、安装必要依赖

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


    三、安装apr

    > tar xf apr-1.5.2.tar.gz
    > cd apr-1.5.2
    > ./configure --prefix=/data/apr
    > make && make install
    

     
    四、安装apr-util

    > 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

    > 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

    > 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

    > 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
    

     
    八、添加环境变量

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

     
    九、查看信息

    > svn help
    > svnserve --version
    > svn --version

    如果出现如下信息

    svn: error while loading shared libraries: libserf-1.so.1: cannot open shared object file: No such file or director
    
    > cd /etc/ld.so.conf.d/
    > vi user-libs.conf
    把我们拷贝serf的文件的目录加上
    /usr/local/lib
    > ldconfig
    

     
    十、创建svn仓库

    > mkdir -p /data/repos
    > svnadmin create /data/repos
    > cd /data/repos
    > ll

    目录结构如下:

    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配置路径

    > cd /data/repos/conf
    > ll

    文件如下:

    权限配置文件 authz
    用户名口令文件 passwd
    svn服务配置文件 svnserve.conf
    
    > vi authz
    # /表示仓库根目录,用户名=权限
    [/]
    test = rw
    
    > vi passwd
    [users]
    test = 123456
    
    > vi svnserve.conf
    [general]
    #禁止匿名访问
    anon-access = none
    #授权用户写权限
    auth-access = write
    #用户密码文件
    password-db = passwd
    #授权登录文件
    authz-db = authz
    #每个svn项目认证名,建议写项目名
    realm = repos


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

    > svnserve -d -r /data/repos --listen-port 3690
    > ps -ef|grep svn
    > netstat -ln|grep 3690
    > killall svnserve
    

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

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

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

    #!/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一份

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

    2、修改目录权限

    > chmod -R 766 /data/www/www1

    3、建立同步脚本

    > cd /data/repos/www1/hooks
    > cp post-commit.tmpl post-commit
    > vi post-commit
    

    添加如下代码

    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
    
    > chmod 755 post-commit
    
  • 相关阅读:
    hdu 1003 dp最大子序列和
    模拟题 (+queue队列知识)
    hdu 1016 DFS
    OSGi 系列(二)之 Hello World
    OSGi 系列(一)之什么是 OSGi :Java 语言的动态模块系统
    Mina 系列(四)之KeepAliveFilter -- 心跳检测
    Mina 系列(三)之自定义编解码器.md
    Mina 系列(二)之基础
    Mina 快速入门
    Java 8 Optional 类深度解析
  • 原文地址:https://www.cnblogs.com/jkko123/p/6358461.html
Copyright © 2020-2023  润新知