当前位置: 首页 >> Git >> 【设置】svn服务器的搭建备份和还原和svnmanager的使用 >> 正文

【设置】svn服务器的搭建备份和还原和svnmanager的使用

3年前 (2021-04-15)     作者:Jiaozn     分类:Git     阅读次数:2382     评论(0)    

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项目工程





除非注明,发表在“Jiaozn的博客”的文章『【设置】svn服务器的搭建备份和还原和svnmanager的使用』版权归Jiaozn所有。 转载请注明出处为“本文转载于『Jiaozn的博客』原地址https://www.jiaozn.com/reed/673.html
0

评论

发表评论   

昵称*

E-mail*(建议输入,以便收到博主回复的提示邮件)

网站

分享:

支付宝

微信