• SVN(独立安装)-1.9.7 centos 6.5(64位)


    说明:

    运行方式:

    • 基于Apache的http、https网页访问形式;
    • 基于svnserve的独立服务器模式。

    数据存储方式:

    • 在Berkeley DB数据库中存储数据;
    • 使用普通的文件FSFS存储数据。
      由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全.
      以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器。
    一、开启防火墙端口
    #基于svnserve的独立服务器模式,默认端口为3690
    #编辑防火墙配置文件
    vi /etc/sysconfig/iptables 
     
    # Firewall configuration written by system-config-firewall
    # Manual customization of this file is not recommended.
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    COMMIT
     
    #保存退出
    :wq! 
    #最后重启防火墙使配置生效
    service iptables restart 
    
    二、关闭SELINUX
    vi /etc/selinux/config
    #注释掉
    #SELINUX=enforcing 
    #注释掉
    #SELINUXTYPE=targeted 
    #增加
    SELINUX=disabled 
    #保存退出
    :wq! 
    #使配置立即生效
    setenforce 0 
    
    系统约定
    • 软件源代码包存放位置:/usr/local/src
    • 源码包编译安装位置: /usr/local/软件名字
    四、下载软件包
    五、安装编译工具及库文件(使用yum命令安装)
    #!/bin/bash
      
    yum install -y apr* autoconf automake bison bzip2 bzip2* cloog-ppl compat* cpp 
    curl curl-devel fontconfig fontconfig-devel freetype freetype* 
    freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel 
    glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel 
    libcom_err-devel libpng libpng* libpng-devel libjpeg* libsepol-devel 
    libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libX* 
    libtiff libtiff* make mpfr ncurses* ncurses-devel ntp openssl openssl-devel nasm nasm* 
    openssl-devel patch pcre-devel perl php-common php-gd 
    policycoreutils ppl telnet t1lib t1lib* wget zlib-devel gmp-devel 
    unzip perl-ExtUtils-Embed
       
    #删除系统中原有的svn及依赖包
    yum -y remove apr apr-util subversion subversion-libs 
      
    #安装apr
    cd /usr/local/src/install_file
    mkdir /usr/local/apr
    tar zxvf apr-1.5.2.tar.gz -C /usr/local/src
    cd /usr/local/src/apr-1.5.2
    ./configure --prefix=/usr/local/apr
    make && make install
      
    #安装apr-util
    cd /usr/local/src/install_file
    mkdir /usr/local/apr-util
    tar zxvf apr-util-1.5.4.tar.gz -C /usr/local/src
    cd /usr/local/src/apr-util-1.5.4
    ./configure --prefix=/usr/local/apr-util 
    --with-apr=/usr/local/apr
    make && make install
      
    #安装scons
    cd /usr/local/src/install_file
    mkdir /usr/local/scons
    tar zxvf scons-2.5.1.tar.gz -C /usr/local/src
    cd /usr/local/src/scons-2.5.1
    python setup.py install --prefix=/usr/local/scons
     
    yum -y install openssl-devel
     
    #安装serf
    cd /usr/local/src/install_file
    mkdir /usr/local/serf
    tar xvf serf-1.3.9.tar.bz2 -C /usr/local/src
    cd /usr/local/src/serf-1.3.9
    /usr/local/scons/bin/scons PREFIX=/usr/local/serf APR=/usr/local/apr APU=/usr/local/apr-util
    /usr/local/scons/bin/scons install
    #拷贝文件到系统目录 
    cp /usr/local/serf/lib/libserf-1.so* /usr/local/lib/
     
    #安装svn
    cd /usr/local/src/install_file
    tar zxvf subversion-1.9.7.tar.gz -C /usr/local/src
    unzip sqlite-amalgamation-3160200.zip -d /usr/local/src/subversion-1.9.7/
    cd /usr/local/src/subversion-1.9.7
    mv sqlite-amalgamation-3160200 sqlite-amalgamation
    ./configure --prefix=/usr/local/svn 
    --with-apr=/usr/local/apr 
    --with-apr-util=/usr/local/apr-util 
    --with-serf=/usr/local/serf 
    --enable-mod-activation
    make && make install
     
    cp /usr/local/lib/libserf-1.so.1.3.0 /usr/local/svn/lib/libserf-1.so.1
      
    #添加系统环境变量,添加到最后一行
    echo "export PATH=$PATH:/usr/local/svn/bin">>/etc/profile
    #使配置立刻生效
    source /etc/profile
    

    测试安装是否成功:

    #查看svn帮助信息
    svn help 
    #查看svn版本信息
    svnserve --version 
    #查看svn
    svn --version
    

    配置svn

    #创建svn代码库
    mkdir -p /data/repos #创建目录
    #下面的命令执行完成之后,会自动建立svn库,在/home/svn文件夹含了conf,db,format,hooks,locks,README.txt等文件。
    #创建svn代码库
    svnadmin create /data/repos 
     
    #配置svn代码库
    #进入配置文件存放目录
    cd /data/repos/conf 
    #配置全局文件,在最后添加以下代码
    vi /data/repos/conf/svnserve.conf 
     
    [general]
    #禁止匿名访问,设置为none。默认为read,参数:read,write,none
    anon-access=none 
    #授权用户写权限
    auth-access=write 
    #用户账号密码文件路径,可以写绝对路径
    password-db=passwd 
    #访问控制权限文件路径,可以写绝对路径
    authz-db=authz 
    #每个SVN项目的认证命,会在认证提示里显示,建议写项目名称。
    realm=repos 
     
    #保存退出
    :wq! 
     
    #配置用户密码
    vi /data/repos/conf/passwd 
     
    [users]
    # harry = harryssecret
    # sally = sallyssecret
    test=123456
     
    #保存退出
    :wq! 
     
    #配置权限控制文件,设置用户可以访问的目录
    vi /data/repos/conf/authz 
     
    [groups]
    admin = osyunwei
    users = test,test2
    #[/]代表根目录下所有的资源
    [/]
    @admin = rw
    * = r
     
    #保存退出
    :wq! 
    
    
    #启动svn
    svnserve -d -r /home/svn --listen-port 3690
     
    #查看svn进程
    ps -ef|grep svn|grep -v grep 
     
    #检查svn端口
    netstat -ln |grep 3690 
     
    #关闭svn服务
    killall svnserve 
     
    #设置svn服务开机启动
    vi /etc/init.d/svn #编辑,添加以下代码
    
    

    svn文件内容如下

    #!/bin/sh
    # chkconfig: 2345 85 85
    # processname: svn
    svn_port=3690
    svn_home=/data/repos
    if [ ! -f "/usr/local/svn/bin/svnserve" ]
    then
    echo "svnserver startup: cannot start"
    exit
    fi
    case "$1" in
    start)
    echo "Starting svnserve..."
    /usr/local/svn/bin/svnserve -d -r $svn_home --listen-port $svn_port
    echo "Successfully!"
    ;;
    stop)
    echo "Stoping svnserve..."
    killall svnserve
    echo "Successfully!"
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    *)
    echo "Usage: svn { start | stop | restart } "
    exit 1
    esac
    

    开启自启动

    #添加执行权限
    chmod +x /etc/init.d/svn 
    #开启自启动
    chkconfig svn on 
    service svn start
    

    测试svn

    #测试svn
    #将文件下载到本地目录
    svn://192.168.21.134/
    username  osyunwei
    password  123456 
    

    实现svn代码仓库与web线上同步
    svn代码仓库目录/data/repos/
    web线上目录/data/www

    #服务器操作系统:CentOS
    #服务器IP:192.168.21.134
    #SVN安装路径:/usr/local/svn
    #SVN项目路径:/data/repos
    #SVN登录账号:test
    #SVN登录密码:123456
    #Web站点根目录:/data/www
     
    #首先checkout一份
    svn co svn://192.168.1.149/ /data/www
     
    #当svn项目中有任何修改更新时,系统会自动实时从svn中检出文件并同步到Web站点根目录
    #使用SVN中post-commit实现自动实时从svn中检出文件并同步到Web站点根目录
    cd /data/repos/hooks
    #编辑,添加以下代码
    vi /data/repos/hooks/post-commit 
     
    #!/bin/sh
    REPOS="$1"
    REV="$2"
    SVN_PATH=/usr/local/svn/bin
    WEB_PATH=/data/www
    SVN_USER=test
    SVN_PASS=123456
    WEB_USER=www
    LOG_PATH=/tmp/svn.log
    echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
    echo `whoami`,$REPOS,$REV >> $LOG_PATH
    $SVN_PATH/svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH
    chown $WEB_USER.$WEB_USER -R $WEB_PATH
     
    #保存退出
    :wq! 
     
    --------------------------------
    #以下在nginx配置时有添加
    groupadd www
    useradd -g www www -s /bin/false
    --------------------------------
     
    #设置脚本所属用户组,www为web服务运行账户和组
    chown www:www /data/repos/hooks/post-commit 
    #添加脚本执行权限
    chmod +x /data/repos/hooks/post-commit
     
    #说明:
        #执行此程序的用户
        whoami 
        #svn项目绝对路径值
        REPOS="$1" 
        #最新版本号
        REV="$2"  
        #不保存账户认证信息
        --no-auth-cache 
    
  • 相关阅读:
    Lotus Notes中文档查询(转)
    MSSQL日志管理
    VS使用带临时表的存储过程
    TaskbarForm
    IT人士在离职后可以做的14件事情
    app.config数据库连接字符串的加密
    IT职场人,切不要一辈子靠技术生存
    wmi资料
    迁移成功
    【SpeC#】-C#的又一同胞兄弟
  • 原文地址:https://www.cnblogs.com/fuqian/p/10706270.html
Copyright © 2020-2023  润新知