• svn服务器的搭建备份和还原和svnmanager的使用


    svn服务器的搭建备份和还原和svnmanager的使用

    一、svn服务端软件的安装和配置

    1.安装svn版本库软件

    # yum install -y subversion

    2.建立svn版本库数据存储根目录svndata及用户、密码权限目录svnpasswd

    # mkdir -pv /data/svndata
    # mkdir -pv /data/svnpasswd

    启动服务

    # svnserve -d -r /data/svndata/

    验证服务是否正常启动

    # ps -ef | grep svn
    # lsof -i :3690

    建立项目管理库(测试用的)

    # svnadmin create /data/svndata/sadoc

    3.修改svn配置

    # cd /data/svndata/sadoc/conf
    # cp svnserve.conf svnserve.conf.bak


    修改配置文件

    # vim svnserve.conf
    
    anon-access = none # 关闭匿名访问
    auth-access = write
    password-db = /data/svnpasswd/passwd
    authz-db = /data/svnpasswd/authz
    # cp passwd authz /data/svnpasswd/
    
    # cd /data/svnpasswd
    # chmod 700 *
    [root@u04elk svnpasswd]# ll
    total 8
    -rw-r--r-- 1 root root 1080 Sep 1 14:51 authz
    -rw-r--r-- 1 root root 309 Sep 1 14:51 passwd

    增加访问svn用户信息

    # vim passwd 
    [users]
    jack = jack2017
    xiaoming = xiaoming

    组信息

    # vim authz
    [groups]
    
    sagroup = jack,xiaoming
    [/]
    jack = rw
    xiaoming = r
    @sagroup = r

    二、配置SVN服务器的HTTP支持

    svn作为独立服务器或借助apache服务的两种方式,可同时使用。
    安装apache服务
    # yum install -y httpd
    (1)转换SVN服务器的密码
    因为svn密码为明文,http不支持明文.需要生成一个webpasswd文件,首次创建new的webpass文件用-c。

    #/application/svnpasswd
    # htpasswd -c webpasswd jack
    根据提示输入密码即可
    jack2017

    目录下会多一个webpasswd文件。
    注意如果需要,多次加入用户,则用htpasswd -m
    #htpasswd -m webpasswd tom

    (2)配置apache

    # yum install -y mod_dav_svn //使subversion与dav模块通信的功能

    # yum install -y mod_authz_svn //实现权限控制功能

    修改添加svn访问路径
    # vim /etc/httpd/conf/httpd.conf

    Listen 8080

    在最后添加如下信息:

    <Location /svn>
    #开启svn
       DAV svn
    #指定父目录位置,以后所有版本库都将存放在该目录下
       SVNParentPath /data/svndata/
    #开启svn版本库父目录功能
       SVNListParentPath On
    #指定授权模式
       AuthType Basic
    #登陆窗口标题显示提示文字
       AuthName "Authorization Realm"
    #指定访问版本库的账户和密码存放文件,该文件需要用apache的htpasswd命令创建
       AuthUserFile /data/svnpasswd/webpasswd
    #指定访问版本库的用户和组的权限控制文件
       AuthzSVNAccessFile /data/svnpasswd/authz
    #要求验证有效的用户才能访问
       Require valid-user
    </Location>

    重启
    [root@u04elk svnpasswd]# systemctl restart httpd

    修改认证文件访问权限
    # chmod 744 /data/svnpasswd/authz
    若单独设置端口号,网址为http://IP地址:端口/svn

    三、svn管理工具svnmanager的安装和配置

    安装依赖
    # yum install -y php mysql-server mod_dav_svn php-mysql php-pear php-mbstring

    1.下载svnmanager解压并放置到/var/www/html/下
    下载地址:http://prdownloads.sourceforge.net/svnmanager/svnmanager-1.10.zip

    # unzip svnmanager-1.10.zip
    # mv svnmanager-1.10 svnmanager
    # mv svnmanager /var/www/html/

    2.安装VersionControl_SVN

    安装的php-pear包会有/usr/bin/pear命令,我们使用它来安装VersionControl_SVN,输入下面的命令:

    [root@u04elk html]# pear install --alldeps VersionControl_SVN-0.3.1
    WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update
    WARNING: "pear/XML_Parser" is deprecated in favor of "pear/XML_Parser2"
    downloading VersionControl_SVN-0.3.1.tgz ...
    Starting to download VersionControl_SVN-0.3.1.tgz (34,038 bytes)
    .........done: 34,038 bytes
    downloading XML_Parser-1.3.7.tgz ...
    Starting to download XML_Parser-1.3.7.tgz (13,339 bytes)
    ...done: 13,339 bytes
    install ok: channel://pear.php.net/XML_Parser-1.3.7
    install ok: channel://pear.php.net/VersionControl_SVN-0.3.1

    3.向http.conf文件添加新内容

    # vim /etc/httpd/conf/httpd.conf 添加如下内容是为了更安全:

    <Directory "/var/www/html/svnmanager/">
            AllowOverride None
            Order deny,allow
            Deny from all
            Allow from all
    </Directory>

    4.创建svnmanager使用的mysql数据库

    # service mysqld start
    # mysql -uroot -p
    
    mysql >create database svn;
    mysql >grant all on svn.* to svnmanager@localhost identified by "svnmanagerpass";
    mysql >flush privileges;
    mysql >quit;

    5.更改svnmanager的配置文件

    # cd /var/www/html/svnmanager/
    # cp config.php.linux config.php

    修改配置文件
    # vim config.php
    改为如下内容:

    <?php
    $lang    = "en_US.UTF-8";
    
    $htpassword_cmd = "/usr/bin/htpasswd";
    $svn_cmd = "/usr/bin/svn";
    $svnadmin_cmd = "/usr/bin/svnadmin";
    
    // svn配置目录
    $svn_config_dir    =    "/data/svndpasswd";
    // svn的数据仓库目录
    $svn_repos_loc = "/data/svndata";
    // svn密码目录
    $svn_passwd_file = "/data/svnpasswd/webpasswd";
    // svn认证权限目录
    $svn_access_file = "/data/svnpasswd/authz";
    
    $svn_trash_loc    =    "";
    
    $svnserve_user_file="";
    
    $smtp_server = "smtp.mailserver.net";
    // svnmanager连接数据库账号密码
    $dsn    = "mysqli://svnmanager:svnmanagerpass@localhost/svn";
    
    // 访问svnmanager web的管理员账号密码
    $admin_name    =    "admin";
    $admin_temp_password    =    "admin";
    
    ?>

    上方配置文件可能会缺项,每一项都要填好,务必保证全部文件文件夹有读写权限,可以都给apache

    [root@u04elk svnmanager]# chown -R apache.apache /var/www/html/

    6.验证

    重启apache,然后从浏览器里输入http://192.168.x.x/svnmanager

    第一次会用提示All tables are missing.

    Creating requried tables...

    Please reload page!

    刷新就好了,输入初始用户名密码。

    进去后注册一个admin账户,然后admin用户就不可用了。使用新的admin账户管理。


    注意:
    通过admin登陆后无法看到 Repository Admin 这个菜单
    需要添加用户并将某个用户定义成admin用该用户登录就可以正常管理仓库了


    添加权限的时候报错:
    failed to open stream: Permission denied (@line 211 in file /var/www/html/svnmanager/svnmanager/library/class.accessfile.php).

    解决办法:
    [root@u04elk html]# chown -R apache.apache /data/svndata/
    [root@u04elk html]# chown -R apache.apache /data/svnpasswd/


    SVN目录权限设置的命令,供参考:
    chcon -R -h -t httpd_sys_content_t <SVN Root 目录>
    [root@u04elk svnpasswd]# chcon -R -h -t httpd_sys_content_t /data/svndata/

    四、导入已经备份的svn数据

    备份svn的脚本,注意是svnadmin hotcopy
    # cat backup.sh

    ********************
    #!/bin/bash

    log="/data/svnbak/last_add_backed_up.log" # 添加日志文件,打印开始结束时间,方便查看执行时间
    echo "********************"backup start time: `date -d today +"%Y-%m-%d %T"`"***************">> $log

    cd /data/svnbak
    mkdir `date +%F`
    chmod 755 `date +%F`
    cd `date +%F`
    ls -l /home/svn-repos | awk '$1~"d"{print$8}' > list #注:/home/svn-repos是svn数据库的路径

    for i in `cat list`
    do
    mkdir /data/svnbak/`date +%F`/$i #注:在另一个路径下创建与数据库相同的目录
    done

    SRCPATH=/home/svn-repos #定义仓库路径
    DISTPATH=/data/svnbak/`date +%F` #定义备份数据存放的路径;
    echo $DISTPATH
    cat $DISTPATH/list | while read filename
    do
    svnadmin hotcopy $SRCPATH/$filename $DISTPATH/$filename --clean-logs #注:此处使用hotcopy开始备份
    done

    echo "-------------------backup end time: "`date -d today +"%Y-%m-%d %T"`"-------------------" >> $log
    chown www-data.www-data $DISTPATH -R #注:备份之后修改成与原数据库相同的权限
    #删除10天前的备份
    chmod 777 -R /data/
    find /data/svnbak -type d -mtime +7 -exec rm -rf {} ;

    ********************

    将仓库的数据上传到新的svn数据服务器中
    使用svnadmin hotcopy命令恢复
    svnadmin hotcopy 备份项目目录 新的项目目录
    [root@u04elk ~]# svnadmin hotcopy /data/svnbak/2017-08-19/yunva-voice/ /data/svndata/yunva-voice

    导入目录

    给用户授权项目仓库的读写权限

    给某个用户授权

    测试是否ok
    [root@test9_es ~]# svn co http://1.1.1.1:8080/svn/yunva-voice/android-sdk/src/trunk/yaya /data/yaya

    导入maven项目工程

  • 相关阅读:
    浏览器和node中的event loop的区别
    path.resolve(dir)与path.join(__dirname,dir)的区别
    如何在typescript项目中使用eslint
    eslint无法检测ts类型错误
    todo
    brew update 卡住
    async await原理
    node的require
    Hive表头导出成csv文件
    算法--决策树
  • 原文地址:https://www.cnblogs.com/reblue520/p/7494035.html
Copyright © 2020-2023  润新知