Ubuntu下SVN SVNManager搭建

2019-08-04 21:39栏目:电脑操作

SVNManager是一个基于Web的Subversion图形化管理工具。利用这个工具,用户可以远程创建配置库、删除和加载配置库、设置用户访问权限、邀请创建账号等功能。

简介:
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。
运行方式
svn服务器有2种运行方式:独立服务器和借助apache运行。两种方式各有利弊,用户可以自行选择。

下面说说在Ubuntu下SVN SVNManager搭建过程。

一、安装svn

1、准备

# yum install subversion-1.6.11-7.el5_6.4 mysql-server httpd mod_dav_svn mod_perl sendmail wget gcc-c   make unzip perl* ntsysv vim-enhanced

1.1、安装基础库

apt-get update  
apt-get upgrade -y
apt-get install apache2 subversion apache2-utils libapache2-svn 
apt-get install mysql-server mysql-client 
apt-get install php5 php5-mysql php5-sqlite php-pear  
pear install VersionControl_SVN-0.3.4 
##使apche2模块生效
a2enmod dav_svn authz_svn 

图片 1

1.2、创建基础目录

#创建仓库主文件夹  
mkdir -p /var/svn/repos  
#创建仓库配置文件夹
mkdir -p /var/svn/svnconfig 

#添加subversion组
groupadd subversion  
#将www-data用户加入subversion组 
gpasswd -a www-data subversion  

#创建密码文件和访问控制文件并赋权(这两个文件由SVNManager维护)  
touch /var/svn/passwdfile /var/svn/accessfile  
#赋于文件仓库的访问权限 
chown -R www-data:subversion  /srv/svn   
chmod -R g rws /srv/svn 
subversion-1.6.11-7.el5_6.4 (SVN服务器,版本号)
mysql-server (用于codestriker)
httpd mod_dav_svn mod_perl (用于支持WEB方式管理SVN服务器)
sendmail (用于配置用户提交代码后发邮件提醒)
wget gcc-c   make unzip perl* (必备软件包)
ntsysv vim-enhanced (可选)

1.3、下载svnmanager

wget http://prdownloads.sourceforge.net/svnmanager/svnmanager-1.09.tar.gz
tar -xvf svnmanager-1.09.tar.gz
mv svnmanager-1.09 /var/www/

软件包作用说明

2、配置

二、基本配置

2.1、配置apache支持svn

vim /etc/apache2/mods-available/dav_svn.conf
#写入如下内容
<Location /svn>  
 DAV svn                                                          
 SVNParentPath /var/svn/repos  
 AuthType Basic                                                    
 AuthName "SVN Repositories"                                       
 AuthUserFile /var/svn/passwdfile  
 AuthzSVNAccessFile /var/svn/accessfile         
    Require valid-user      
</Location>  
#使配置文件生效
ln -s /etc/apache2/mods-available/dav_svn.conf /etc/apache2/mods-enabled/dav_svn.conf

1,新建一个目录用于存储SVN所有文件

2.2、配置mysql

#创建svnmanager数据库并添加svnmanager用户和密码123456
mysql -u root -p  
mysql> CREATE DATABASE svnmanager;  
mysql> GRANT all privileges on svnmanager.* to 'svnmanager'@'localhost' identified by '123456';  
mysql> FLUSH PRIVILEGES;  
mysql> exit 
# mkdir /data/svn
# cd /data/

2.3、配置svnmanager

cp /var/www/svnmanager/config.php.linux /var/www/svnmanager/config.php  
vim /var/www/svnmanager/config.php   
#修改config.php如下配置项:  
$lang = "en_US.utf8";  
$htpassword_cmd = "/usr/bin/htpasswd";  
$svn_cmd = "/usr/bin/svn";  
$svnadmin_cmd = "/usr/bin/svnadmin --config-dir /var/svn/svnconfig";  

$svn_config_dir  =  "/var/svn/svnconfig";  
$svn_repos_loc   =      "/var/svn/repos";  
$svn_passwd_file =      "/var/svn/passwdfile";  
$svn_access_file =      "/var/svn/accessfile";  

$smtp_server = "smtp.163.com";  
$dsn  = "mysqli://svnmanager:123456@localhost/svnmanager"  

$admin_name  =  "admin";  
$admin_temp_password    =   "admin";

2,新建一个版本仓库

2.4、配置中文路径支持

#使SVNManager的web页面支持中文路径
vim /usr/share/php/VersionControl/SVN.php  
#将下行  
exec("{$this->prepend_cmd}$cmd 2>&1", $out, $ret_var);  
#改为:  
exec("LANG=zh_CN.UTF-8; {$this->prepend_cmd}$cmd 2>&1", $out, $ret_var); 
# svnadmin create /data/svn/project

2.5、使svnmanager可访问

vim /etc/apache2/sites-available/000-default.conf
#设置svnmanager根目录
DocumentRoot /var/www/svnmanager-1.09

3,初始化版本仓库中的目录

2.6、重启apache

service apache2 restart
# mkdir project project/server project/client project/test   //建立临时目录,目录为开发人员上传的数据目录
# svn import project file:///data/svn/project -m "初始化"
# rm -rf project    //删除刚刚创建的project文件,因为已经初始化到了svn版本库

3、使用服务 

4,添加用户

3.1、访问首页

http://localhost

使用用户名admin,密码admin登录;

第一次访问时会提示没有数据库,然后自动帮你建表,再访问一次就可以正常访问初始界面

注意这是临时账户只能登录一次,所以在登录成功后第一件事就是添加一个管理员账户;如果忘记创建了那么你就需要清空数据库重新访问url

# vim /data/svn/project/conf/passwd

[users]
# harry = harryssecret
# sally = sallyssecret
admin = 123456         //账号是admin密码是123456(SVN账户的密码是明文,不支持http密文密码,下面会有解释)

3.2、添加用户:

图片 2

5,修改用户访问策略

3.3、添加仓库

图片 3

# vim /data/svn/project/conf/authz    //记录用户的访问策略,以下是参考:

[groups]
[/]
admin = rw
* =    //* =表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!

3.4、添加权限

图片 4

6,修改svnserve.conf文件,指定密码与策略文件。

3.5、访问仓库

http://localhost/svn/sendbox

注意:这里要添加一个svn路径前缀,后面加仓库名;这里仓库名必须全部小写,即使你创建的时候用到了大写

输入你有权限访问改仓库的账号和密码

Linux中Subversion配置实例 http://www.linuxidc.com/Linux/2012-02/53109.htm

CentOS 6.2 SVN搭建 (YUM安装) http://www.linuxidc.com/Linux/2013-10/91903.htm

Apache SVN搭建SVN服务器 http://www.linuxidc.com/Linux/2013-03/81379.htm

Windows下SVN服务器搭建和使用 客户端重新设置密码 http://www.linuxidc.com/Linux/2013-05/85189p5.htm

Ubuntu Server 12.04 安装 SVN 并迁移 Virtual SVN数据 http://www.linuxidc.com/Linux/2013-05/84695.htm

Ubuntu Server搭建svn服务以及迁移方法 http://www.linuxidc.com/Linux/2013-05/84693.htm

借助网盘搭建SVN服务器 http://www.linuxidc.com/Linux/2013-10/91271.htm

Subversion (SVN) 的详细介绍:请点这里
Subversion (SVN) 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133280.htm

图片 5

# vim svnserve.conf

[general]
anon-access = none
auth-access = write
password-db = /data/svn/project/conf/passwd
authz-db = /data/svn/project/conf/authz

7,启动服务器

# svnserve -d -r /data/svn

注意:如果修改了svn配置,需要重启svn服务,步骤如下:

# ps -aux|grep svnserve
# kill -9 ID号
# svnserve -d -r /data/svn

8,测试服务器(目前还不能通过web测试)

# svn co svn://192.168.5.10/project

图片 6

 

Authentication realm: <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee
Password for 'root':         //直接回车
Authentication realm: <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee
Username: admin        //用户名
Password for 'admin':     //刚刚passwd里设置的密码

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
A    project/test
A    project/server
A    project/client
Checked out revision 1.

登陆过程

三、配置SVN服务器的HTTP支持可以启动一下httpd测试一下

1,设置apache访问svn的权限,不然apache是没有权限读取svn下的数据的

# chown -R apache:apache /data/svn/

那我们来转换SVN服务器的密码,由于SVN服务器的密码是明文的,HTTP服务器不与支持,所以需要转换成HTTP支持的格式。

2,创建支持apache的SVN账号密码

# touch passwd
# htpasswd -c /data/passwd admin    //创建用户admin,并为其设置密码
# cat passwd >> /data/svn/project/conf/passwd
# vim /data/svn/project/conf/passwd  //注释admin的明文账户

#admin = admin

3,在apache的配置文件中添加下面这些内容,以便支持SVN服务

# vim /etc/httpd/conf/httpd.conf

 

<Location /project>
DAV svn
SVNPath /data/svn/project/
AuthType Basic
AuthName "svn for project"
AuthUserFile /data/svn/project/conf/passwd
AuthzSVNAccessFile /data/svn/project/conf/authz
Satisfy all
Require valid-user
</Location>

重启svn、httpd服务
# ps -ef |grep svnserve
# kill -9 3994
# svnserve -d -r /data/svn
# service httpd restart

4,客户端测试

这样用Windows的svn客户端或者浏览器测试

浏览器测试:

Windows客户端测试:

安装TortoiseSVN----->在桌面右击鼠标----->TortoiseSVN----->版本库浏览器(R)----->

注意:输入账号或密码就可以了(密码为http支持的格式非明文)

===========================================================================================================================================================================================================================================

===========================================================================================================================================================================================================================================

四、添加删除版本库

先把httpd停掉,再给passwd添加一个明文用户,设置authz的权限

图片 7

# service httpd stop
Stopping httpd:                                            [  OK  ]
# vim /data/svn/project/conf/passwd 
:
:
[users]
# harry = harryssecret
# sally = sallyssecret
#admin = 123456
test = test
admin:uyvcrbGbdBPuk
:
:
# vim /data/svn/project/conf/authz 
:
:
[groups]
[/]
admin = rw
test = rw
* =
:
:
# ps -ef |grep svn
root      4032     1  0 15:14 ?        00:00:00 svnserve -d -r /data/svn
root     25723  3556  0 16:35 pts/1    00:00:00 grep svn
# kill -9 4032
# svnserve -d -r /data/svn
# svn ls svn://192.168.5.10/project
Authentication realm: <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee
Password for 'admin': 
Authentication realm: <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee
Username: test
Password for 'test': 

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
client/
server/
test/
# svn delete svn://192.168.5.10/progect/client -m "delete"
svn: No repository found in 'svn://192.168.5.10/progect/client'
# svn delete svn://192.168.5.10/project/client -m "delete"

Committed revision 2.
# svn delete svn://192.168.5.10/project/server -m "delete"

Committed revision 3.
# svn delete svn://192.168.5.10/project/test -m "delete"

Committed revision 4.
# svn mkdir -m "UP" svn://192.168.5.10/project/union

Committed revision 5.
# svn mkdir -m "UP" svn://192.168.5.10/project/wangyi

Committed revision 6.
# vim /data/svn/project/conf/passwd 
[users]
# harry = harryssecret
# sally = sallyssecret
#admin = 123456
test = test
admin:uyvcrbGbdBPuk

# ps -ef |grep svn
root     25725     1  0 16:35 ?        00:00:00 svnserve -d -r /data/svn
root     25759  3556  0 16:40 pts/1    00:00:00 grep svn
# kill -9 25725
# svnserve -d -r /data/svn
# service httpd start
Starting httpd:                                            [  OK  ]

图片 8;)

详细步骤,请打开查看

上传文件到svn版本库 file目录下的文件是其它服务器的备份文件 

# export LANG="zh_CN.GB2312"    //文件名有中文的时候需要设置变量
# svn import /data/file/ file:///data/svn/project/file --message "init"
# svn import /data/file/ svn:///data/svn/project/file --message "init"    //两条命令是一样的

五、SVN的备份和还原(两种备份方式)

1、hotcopy备份方式:
# svnadmin hotcopy /data/svn/project /data/bakup/`date  /%y%m%d`/ --clean-logs    //用svnadmin整体备份/data/svn/project到/data/bakup/目录里并且以时间命名
2、dump备份方式:
# svnadmin dump /data/svn/project > /data/beifen/`date  /%Y%m%d`.bak    //推荐此方法备份,下面模拟用的就是dump的方式

六、模拟服务器奔溃(在有备份文件的情况下,恢复到新服务器)

# rm -rf /data/svn/*
# ps -ef |grep svn 
# kill -9 26221
# svnadmin create /data/svn/ceshi
# export LANG=en_US
# svnadmin load /data/svn/ceshi < /data/20150906 
# cat /data/passwd >> /data/svn/ceshi/conf/passwd

[users]
admin:uyvcrbGbdBPuk

# vim /data/svn/ceshi/conf/authz 

 

[groups]
[/]
admin = rw
* =

# vim /data/svn/ceshi/conf/svnserve.conf 

[general]
anon-access = none
auth-access = write
password-db = /data/svn/ceshi/conf/passwd
authz-db = /data/svn/ceshi/conf/authz

# vim /etc/httpd/conf/httpd.conf

 

 

<Location /ceshi>
DAV svn
SVNPath /data/svn/ceshi/
AuthType Basic
AuthName "svn for ceshi"
AuthUserFile /data/svn/ceshi/conf/passwd
AuthzSVNAccessFile /data/svn/ceshi/conf/authz
Satisfy all
Require valid-user
</Location>

 

# service httpd restart
# svnserve -d -r /data/svn 
测试是否成功恢复
http://192.168.5.10/ceshi

七、自动全量备份脚本

 # vim svn.pl

 

#!/usr/bin/perl -w
my $svn_repos="/data/svn/project";
my $backup_dir="/data/backup/svn/";
my $next_backup_file = "svn".`date  %Y%m%d`;

$youngest=`svnlook youngest $svn_repos`;
chomp $youngest;

print "Backing up to revision $youngest";
my $svnadmin_cmd="svnadmin dump --revision $youngest $svn_repos >$backup_dir/$next_backup_file";
`$svnadmin_cmd`;
open(LOG,">$backup_dir/last_backed_up"); #记录备份的版本号
print LOG $youngest;
close LOG;
#如果想节约空间,则再执行下面的压缩脚本
#print "Compressing dump file...n";
#print `gzip -9 $backup_dir/$next_backup_file`;

删除三天前的备份文件

# vim svn-Timing-delete.sh

find /data/backup/svn/  -type f -mtime  3 -exec rm '{}' ; 

添加到计划任务

# crontab -e

30 22 * * * perl /data/svn/svn.pl
00 23 * * * bash /data/svn/svn-Timing-delete.sh

Ubuntu 14.04 下搭建SVN服务器 SVN://  http://www.linuxidc.com/Linux/2015-01/111956.htm

CentOS 6.2 SVN搭建 (YUM安装) http://www.linuxidc.com/Linux/2013-10/91903.htm

CentOS 6.5部署Apache SVN  http://www.linuxidc.com/Linux/2013-12/94315.htm

Apache SVN搭建SVN服务器 http://www.linuxidc.com/Linux/2013-03/81379.htm

Windows下SVN服务器搭建和使用 客户端重新设置密码 http://www.linuxidc.com/Linux/2013-05/85189p5.htm

Ubuntu Server 12.04 安装 SVN 并迁移 Virtual SVN数据 http://www.linuxidc.com/Linux/2013-05/84695.htm

Ubuntu Server搭建SVN服务以及迁移方法 http://www.linuxidc.com/Linux/2013-05/84693.htm

Subversion (SVN) 的详细介绍:请点这里
Subversion (SVN) 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-10/124124.htm

图片 9

版权声明:本文由威尼斯人app发布于电脑操作,转载请注明出处:Ubuntu下SVN SVNManager搭建