Ubuntu下Subversion服务器的安装配置

皇家赌场官方网址 5

Subversion是开源的版本调节系统,下边简介下其在Ubuntu下的设置和配置进程:

Ubuntu下Subversion服务器的设置配备

正文参照他事他说加以考察了一晃博客,特此谢谢:

Ubuntu(Mint)下搭建SVN服务器

一.环境

 

灰烬之灵    
一米阳光做IT.测量试验

 

Ubuntu Linux (11.x) + apache2 + Subversion(1.6.12)

供销合作社的 Subversion
服务器由于Computer硬件原因,平日自动关机,因而安顿重新安装一台服务器。原本的
Subversion 服务器是在 Windows XP 上通过 VisualSVN Server
架设的,以往思索借此机遇将其搬迁至 Linux 系统。Linux 发行版笔者选拔了
Ubuntu 12.04 LTS Server,安装系统的长河中可接纳将 LAMP
一同装上,这样在系统装置实现之后 Apache 就足以一向动用了。

条件描述:ubuntu 13.04
 
1、先创建svn组和svn用户:
 
sudo addgroup svn
sudo useradd svn -g svn
-m  //新扩张svn用户名,-g并制订它所在的组svn,-m同期创建svn用户所在的home目录
sudo passwd svn  //设置svn用户的密码 // hzsxsvn 作者设置的用户svn的密码

1.安装Subversion

二.配置

本文记录怎么样在 Ubuntu 12.04 LTS 上设置 Subversion Server,关于
Subversion 客栈数据迁移的情节再重复介绍。

2、安装apache2和svn server

1  www.2cto.com  

1.apt-get安装svn

  www.2cto.com  

sudo apt-get install apache2
sudo apt-get install subversion
sudo apt-get install libapache2-svn

sudo apt-get install subversion

kenchen@ubuntu:~$ sudo apt-get install subversion subversion-tools

本文涉及的限量

3、创设svn版本库 这里库的名叫 svn,项目标名称为project
 
sudo mkdir /home/svn/project
sudo svnadmin create /home/svn/project/repos
 
那时能够在/home/svn/project/repos目录下
看来svn版本库的具备文件夹以及计划文件,如:conf、db、format、hooks、locks、README.txt
 

2.创办仓库

2.apt-get安装apache2

要通过 HTTP 协议访谈 Subversion 文件货仓,须求设置并安顿好 Web
服务器。Apache2 被验证能够很好的与 Subversion 一齐干活。关于 Apache2
的安装凌驾了本文的限量(要是已经安装好Apache2)
,即使如此,本文依然会波及什么安顿 Apache2 使用 Subversion。
类似的,要透过 HTTPS 协议访谈 Subversion 文件货仓,您必要在您的 Apache2中装置并计划好数字证书,那也不在本文的座谈范围里边。

4、配置并导入项目  测量检验
 
sudo mkdir /home/svn/testprj
sudo mkdir /home/svn/testprj/branches
sudo mkdir /home/svn/testprj/tags
sudo mkdir /home/svn/testprj/trunk
 
导入项目到版本库:svn import /home/svn/testprj
file:///home/svn/project/repos/testprj
-m “initial import” 
//  /home/svn/testprj 表示必要引进的品类
//   
file:///home/svn/project/repos/testprj
表示svn的本子库,此处是做起始化引进
 皇家赌场官方网址 1

就算我们库房的父目录为/home/svn

kenchen@ubuntu:~$ sudo apt-get install apache2 libapache2-svn

 

5、改动权限

 

3.新建svn目录(/home/svn),配置目录全部者和权杖为(www-data)

安装 Subversion

sudo chown -R svn:svn /home/svn/project/repos
sudo chmod –R 777  /home/svn/project/*

1

kenchen@ubuntu:~$ sudo mkdir /home/svn
kenchen@ubuntu:~$ sudo chmod www-data:www-data -R /home/svn/
kenchen@ubuntu:~$ sudo chmod 770 -R /home/svn/

有幸的,Subversion 已经包涵在 main 客栈中。所以,要安装
Subversion,您只须求简单的周转:

6、将svn配置到apache中通过http web格局访谈
 
sudo  vi
/etc/apache2/apache.conf,将如下文件粘帖到apache.conf尾巴部分,如下:
 
 <Location /svn>
    DAV svn
    SVNPath /home/svn/project/repos
    AuthzSVNAccessFile /home/svn/project/repos/conf/authz
    AuthType Basic
    AuthName “Subversion Repository”
    AuthUserFile /home/svn/project/repos/conf/passwd
    Require valid-user
</Location>
 
 备注:此布局文件是报告apache关于svn的会见路线已经相关陈设文件,这里注意访问的跟目录。重启apache服务器,然后就足以因而展开远程访谈
 
重启apache服务器:/etc/init.d/apache2 restart
 
理当如此这里须要注明访谈登入用户,接下去将介绍增加svn用户

2

4.开立svn用户密码配置文件:/etc/apache2/dav_svn.passwd

 

############################
## 这里报错了
############################
hzsx@hzsx-server:~$ sudo
/etc/init.d/apache2 restart
Syntax error on line 268 of /etc/apache2/apache2.conf:
Invalid command ‘AuthzSVNAccessFile’, perhaps misspelled or defined by a
module not included in the server configuration
Action ‘configtest’ failed.
The Apache error log may have more information.
   …fail!
############################################ 

cd /home/svn

kenchen@ubuntu:~$ sudo htpasswd -c /etc/apache2/dav_svn.passwd kenchen

$ sudo apt-get install subversion

查一下后意识是三个so文件没加,在/etc/apache2/mods-available/dav_svn.load最终增多一行:
LoadModule authz_svn_module
/usr/lib/apache2/modules/mod_authz_svn.so,apache服务器成功重启。

sudo svnadmin create /home/svn/test

5.成立svn目录权限配置文件:/etc/apache2/dav_svn.authz

$ sudo apt-get install libapache2-svn

hzsx@hzsx-server:~$ sudo
/etc/init.d/apache2 restart       
 * Restarting web server
apache2                                                                            
 apache2: Could not reliably determine the server’s fully qualified
domain name, using 127.0.1.1 for ServerName
 … waiting .apache2: Could not reliably determine the server’s fully
qualified domain name, using 127.0.1.1 for ServerName
                                                                                                     
[ OK ]

可以看看/home/svn目录上面有三个test文件夹,里面有conf,db,format,hooks,locks,README.txt多少个文件

kenchen@ubuntu:~$ sudo vi /etc/apache2/dav_svn.authz
#定义组
[groups]
admin=kenche
tests=pet
#概念存款和储蓄库根目录的会见权限
[devroot:/]        #本子库devroot权限配置
*=                      #暗中认可禁止所有用户访谈
@admin=rw    #admin组有读写权限
pet=r                 #用户pet有读权限

服务器配置

7、添加svn用户
 
sudo htpasswd -c /home/svn/project/repos/conf/passwd
testuser1  //然后会提醒您输入密码,当然首先次创制svn用户,必要经过参数-c,然后第一回制造svn用户就没有必要,这里要注意。
sudo htpasswd /home/svn/project/repos/conf/passwd
testuser2  //创设第2个svn用户
 
然后就能够通过这个用户访问了,并得以在另外pc上对svn进行checkout,命令行如下:
svn checkout –username testuser1 –password
123456
本来仍是可以够透过svn客户端工具checkout更便于
 

 

6.配置/etc/apache2/mods-enabled/dav_svn.conf

经过上边的一声令下已经安装了所需的软件包。接下来将演说怎么着创建 Subversion
仓库以及哪些设置项指标拜访权限。

8、用户权限调节
 
急需在apache的铺排文件中加进如下配置,才具使得apache能够得到svn的权位配置,如下:
修改/etc/apache2/mods-available/dav_svn.load
继续增进其它两行,然后将apache服务重视启。

3.启动svn服务器

kenchen@ubuntu:~$ sudo vi /etc/apache2/mods-enabled/dav_svn.conf

 

#LoadModule dav_module /usr/lib/apache2/modules/mod_皇家赌场官方网址,dav.so
#LoadModule dav_fs_module /usr/lib/apache2/modules/mod_dav_fs.so
LoadModule dav_svn_module /usr/lib/apache2/modules/mod_dav_svn.so
LoadModule authz_svn_module
/usr/lib/apache2/modules/mod_authz_svn.so
实则好像前两行 添不增加 无所谓

1

<Location /svn>
  DAV
svn                                                                            
#启用
  SVNParentPath /home/svn                                           
#设置svn仓库路线
  AuthType Basic                                                       
        #启用apache基础验证
  AuthName “Subversion Repository”                           
#安装验证框题目
  AuthUserFile /etc/apache2/dav_svn.passwd            
#点名验证用户文件名
  AuthzSVNAccessFile /etc/apache2/dav_svn.authz 
#启用目录等第授权格局
  Require valid-user
</Location>

创建 Subversion 仓库(Respository)

9、倘若不布置如下放权力限,局域网其余主机浏览器访谈

会提示 You don’t have permission to access /svn/project on this
server.
svn的权力决定是通过目录结构来决定,调整权限在/home/svn/project/repos/conf/authz文件中,示例配置如下:
 
 文件最前边加多几句:
 [groups]
svn = testuser1
# add user testuser1 to group svn

sudo svnserve -d -r /home/svn

7.制造svn版本宾馆(devroot)

洋洋岗位都得以停放 Subversion 饭店,当中五个最常用的是:/usr/local/svn
以及 /home/svn。大家挑选把 Subversion 货仓位于
/home/svn/repos,况兼只要我们必要树立七个仓库 project1 和 project2。

[/]
# / svn root directory
@svn = rw

4.测试svn服务器

kenchen@ubuntu:~$ su – www-data
kenchen@ubuntu:~$ svnadmin create /home/svn/devroot

 

10、图形化处理 svnmanager
SVNManager is a PHP web based tool to administer a Apache Subversion
repository server.
svnmanager.sourceforge.net  当前版本为1.10

1

8.布置到此产生了,重启下apache2服务

一般性的事态下,首先创造二个名字为 “Subversion” 的用户组,该组是 Subversion
仓库所在的目录的具备者。  www.2cto.com  

wget

tar -vxjf svnmanager-1.10.tar.bz2
sudo mv svnmanager-1.10 /var/www/svnmanager

2

kenchen@ubuntu:~$ sudo apache2ctl restart

 

11、安装MYSQL root密码:roothzsx
sudo apt-get install mysql-server mysql-client

svn co file://localhost/home/svn/test

9.现行得以在浏览器中输入访问了

选取如下命令扩张组,况兼把用户加到组里:

12、创建SVNManager数据库
mysql -u root -proothzsx

输出:Checked out revision 0

皇家赌场官方网址 2

 

mysql> create database svnmanager;
mysql> grant all privileges on svnmanager.* to
'svnmanager'@'localhost' identified by ‘roothzsx’;
mysql> flush privileges;
mysql> exit

证实安装成功

$ sudo addgroup subversion

那边注意 mysql> 前边语句的最终; 不能够大约。

 

$ sudo usermod -G subversion -a www-data

13、安装PHP_5
sudo apt-get install php5 php5-mysql php5-sqlite php-pear

假定要由此浏览器访谈的,则供给与apache合作:

www-data 是特地为 web server 运维而创办的用户,系统中一度刚开始阶段创立好了。

14、安装Pear模块:VersionControl_SVN
pear install VersionControl_SVN-0.3.4 
风行的相应是
pear install VersionControl_SVN-0.5.1

 

 

downloading VersionControl_SVN-0.5.1.tgz …
Starting to download VersionControl_SVN-0.5.1.tgz (31,121 bytes)
………done: 31,121 bytes
install ok: channel://pear.php.net/VersionControl_SVN-0.5.1

1.安装apache

查阅上边多少个指令的施行结果:

15、配置SVNManager
sudo mkdir -p /home/svn/svnconfig
sudo chown -R svn:svn  /home/svn
sudo chmod -R g+rws /home/svn

若是未有设置apache,必要先安装apache以及libapache2-svn

 

16、修改SVNManager配置文件
 sudo cp /var/www/svnmanager/config.php.linux
/var/www/svnmanager/config.php
 vi /var/www/svnmanager/config.php

 

$ cat /etc/group | grep subversion

对应修改config.php如下配置项:
$lang = “en_US.utf8”;
$htpassword_cmd = “/usr/bin/htpasswd”;
$svn_cmd = “/usr/bin/svn”;
$svnadmin_cmd = “/usr/bin/svnadmin –config-dir /home/svn/svnconfig”;

1

subversion:x:1001:www-data

$svn_config_dir  = “/home/svn/svnconfig”;
$svn_repos_loc  =      “/home/svn/project/repos”;
$svn_passwd_file =      “/home/svn/project/repos/conf/authz”;
$svn_access_file =      “/home/svn/project/repos/conf/passwd”;

sudo apt-get install apache libapache2-svn

实行如下命令成立宾馆目录:

$smtp_server = “smtp.163.com”;
$dsn  = “mysqli://root:roothzsx@localhost/svnmanager”;

2.整合SVN

 

$admin_name  = “admin”;
$admin_temp_password = “admin”;

修改/etc/apache2/mods-available/dav_svn.conf

$ sudo mkdir -p /home/svn/repos/project1

17、SVNManager配置完成,重启服务:

 

$ sudo mkdir -p /home/svn/repos/project2

sudo service apache2 restart
sudo service mysql restart

<Location /svn>

上面发号施令用于成立 Subversion 仓库:

18、实行二遍访谈: 
会提示创立SVNManager数据表,刷新页面,出现登入页面。
svn-ip 是自个儿安插机器的IP地址。供给注意的是,这里运用admin admin登入。
而是这么些密码是二次性的,只好管理别的用户。所以要立刻扩大一个组织者用户。

    DAV svn

 

皇家赌场官方网址 3

    SVNParentPath /home/svn

$ sudo svnadmin create /home/svn/repos/project1

19、退出admin,当使用刚刚创立的指挥者帐户再登陆的时候。菜单就不一致样了。

    AuthType Basic

$ sudo svnadmin create /home/svn/repos/project2

皇家赌场官方网址 4

    AuthName “Subversion Repository”

安装旅社的用户和组:

20、不过此时,要是操作Create a new
Repository,实际上在服务器上是未有生成的。
编辑Change User Privileges of a Repository,会报错。

    AuthUserFile /etc/subversion/dav_svn.passwd

 

皇家赌场官方网址 5

    AuthzSVNAccessFile /etc/subversion/dav_svn.authz

$ sudo chown -R www-data:subversion /home/svn/repos/project1

这边最重假如SVNManager没有权限,大家要给SVNManager分配权限。
sudo chown -凯雷德 www-data:svn /home/svn/project  再操作Create a new
Repository就好像常了。

    Require valid-user

$ sudo chown -R www-data:subversion /home/svn/repos/project2

 

</Location>

访谈方式

 

说明:

Subversion
饭店能够通过二种不一致的措施开展访谈——通过本地硬盘,恐怕经过各样互联网协议。无论怎么着,文件旅馆的岗位一连利用
U索罗德L 来表示。

1.SVNParentPath表示的全体库的父级目录,SVNParentPath与SVNPath只可以启用贰个。SVNPath只可以成立三个酒店,SVNParentPath则能够成立两个,由于平时不会独有三个仓房,所以经常都会采用SVNParentPath

 

2.AuthUserFile
是svn的用户配置文件,地方能够自定义,文件也亟需团结创立,可是得保险apache有访谈权限

上边是三种不一样的 U昂科威L 情势及其对应的访谈方法:

3.AuthzSVNAccessFile 是svn的权能决定文件,别的同AuthUserFile

  www.2cto.com  

 

file:/// —— 直接访谈本地硬盘上文件仓库

3.添加SVN用户

http:// —— 通过 WebDAV 协议访问补助 Subversion 的 Apache2 Web 服务器

1

https:// —— 类似 SSL 加密

sudo htpasswd -c /etc/subversion2/dav_svn.passwd username

svn:// —— 通过自带协议访谈 svnserve 服务器

回车之后必要输入五次密码。

svn+ssh:// —— 类似 svn://,援助通过 SSH 通道

据称 -c
参数创造文件会覆盖原有的新闻,可是透过测量试验,并未遮盖原有的用户音信,所以,推行

因此 WebDAV 协议访谈(http://)

 

WebDAV (Web-based Distributed Authoring and Versioning) 一种基于 HTTP
1.1磋商的通信协议.它扩大了HTTP
1.1,在GET、POST、HEAD等多少个HTTP标准措施以外增加了某些新的点子,使应用程序可一向对Web
Server直接读写,并帮忙写文件锁定(Locking)及解锁(Unlock),还足以帮助文件的版本调节。

1

 

2

Apache mod\_dav\_svn 配置

sudo htpasswd -c /etc/subversion2/dav_svn.passwd user1

要通过 WebDAV 协议访谈 SVN 文件客栈,首先必须安顿 Apache 2 Web
服务器。参预上面包车型客车代码片段到 /etc/apache2/mods-available/dav_svn.conf
文件中:

sudo htpasswd -c /etc/subversion2/dav_svn.passwd user2

 

dav_svn.passwd文件中依然会有user1和user2多少个用户音信,未有争持。

<Location /svn>

另外,/etc/subversion2/dav_svn.passwd文件必要与第2步中自定义的文书地方一致

    DAV svn

产生之后方可看来dav_svn.passwd中有类似

    # Alternatively, use SVNParentPath if you have multiple
repositories 

 

    # under a single directory

1

    SVNParentPath /home/svn/repos

xiao:$apr1$wq1l1SCM$lAgKYtQJUzpPZPgvQXTnX1

    AuthType Basic

的一些,xiao是用户名,前边的是加密后的密码

    AuthName “Subversion repository”

 

 

4.修改SVN访问权限

    # 钦点基本用户验证的密码文件路线

编辑 /etc/apache2/dav_svn.authz

    AuthUserFile /etc/subversion/dav_svn.passwd

一经想开放具有权限,那么能够一贯

 

 

    # 钦点文件仓库访问的授权配置文件路线

1

    <IfModule mod_authz_svn.c>

2

        AuthzSVNAccessFile /etc/subversion/dav_svn.authz

[/]

    </IfModule>

* = rw

 

意味着用户都有读写权限

    #<LimitExcept GET PROPFIND OPTIONS REPORT>

 

        Require valid-user

5.重启apache

    #</LimitExcept>

1

 </Location>

sudo /etc/init.d/apache2 restart

重启 Apache2 Web 服务器

访问

 

 

$ sudo service apache2 restart

增加补充表达:

密码文件 dav\_svn.passwd 的创建

 

$ sudo htpasswd -c /etc/subversion/dav_svn.passwd user_name

1.整合SVN出错

它会提醒您输入密码,当您输入了密码,该用户就建立了。“-c”
选项表示创造新的 /etc/subversion/dav_svn.passwd 文件,所以 user_name
所指的用户将是文本中独一的用户。纵然要增加其余用户,则去掉“-c”选项就能够:

并发谬误:

 

 

$ sudo htpasswd /etc/subversion/dav_svn.passwd other_user_name

1

授权配置文件dav\_svn.authz

2

第一须要加载mod_authz_svn.so 在目录 /etc/apache2/mods-enabled
下创设软链接到 ../mods-available/authz_svn.load

Invalid command ‘AuthzSVNAccessFile’, perhaps misspelled or defined by a
module not included in the server configuration

 

Action ‘configtest’ failed.

$ cd /etc/apache2/mods-enabled

案由:未有导入auth模块

$ sudo ln -s ../mods-available/authz_svn.load

斩草除根办法:

../mods-available/authz_svn.load文件的原委为:

 

 

LoadModule authz_svn_module
/usr/lib/apache2/modules/mod_authz_svn.so

1

此间自身钦赐了几个组: design 组 和 test 组,design
组读写权限,test组唯有读的权位。别的,设置一个总指挥账号
admin,管理员对负有品类有读写权限。

/etc/apache2/mods-enabled/dav_svn.load

  www.2cto.com  

中加入

授权文件 /etc/subversion/dav_svn.authz 的内容如下:

 

 

1

[groups]

LoadModule authz_svn_module
/usr/lib/apache2/modules/mod_authz_svn.so

design=user1,user2,user3

2.探访饭店列表

test=user4,user5

就算愿意访谈具备的货仓列表,能够修改/etc/apache2/mods-available/dav_svn.conf如下:

 

 

[project1:/]

<Location /svn/>

admin=rw

    DAV svn

@design=rw

    SVNParentPath /home/svn

@test=r

    SVNListParentPath On

 

    AuthType Basic

[project2:/]

    AuthName “Subversion Repository”

admin=rw

    AuthUserFile /etc/subversion/dav_svn.passwd

@design=rw

    AuthzSVNAccessFile /etc/subversion/dav_svn.authz

@tester=r

    Require valid-user

一旦在Check in的时候境遇如下错误:

</Location>

 

留意上边包车型地铁浮动,%lt;Location /svn/>增加了尾巴斜线,SVNListParentPath
On是新加上的。

Can’t open ‘/home/svn/myproject/db/txn-current-lock’: Permission denied

重启apache后访问

那是因为文件所属的用户和组不对促成的标题,能够重复对总体项目目录设置用户和组:

 

 

3.权限调控表明

$ sudo chown -R www-data:subversion /home/svn/repos/project1

/etc/apache2/dav_svn.authz 权限调控的一个演示

一旦您不想将项目目录的具有者设置成 www-data 的话,比方您恐怕想设置为
root:

 

 

[groups] #用来分组用户

$ sudo chown -R root:subversion /home/svn/repos/project1

group1 = xiao, xe

必须将 root 加入 subversion 组:

group2 = user1, user2

 

 

$ sudo usermod -G subversion -a root

[test:/] #库房名称,[/]代表具有客栈

还要设置组的属性:

@group1 = rw #意味着group1组的用户(xiao, xe)对test具有读写权限

 

@group2 = r  #表示group2组的用户(user1,
user2)对test只具有读权限,未有写的权柄

$ sudo chmod -R g+rws /home/svn/repos/project1

* = #表示具有用户都尚未权力,即既不可能读,也无法写

接下来查看 txn-current-lock 文件的权柄和用户以及组音信,应该临近于:

 

 

[test2:/]

$ ls -l /home/svn/myproject/db/txn-current-lock

* = rw #代表具有用户都具有读写权限

-rw-rwSr– 1 root subversion  0  2009-06-18  15:33  txn-current-lock

4.权限错误

从那之后,Subversion 服务器的配置已经到位了,借助 SVN 客户端软件就能够通过
http:// 的点子访谈到地点配置的七个文本酒馆了。

出现

 

Can’t open directory ‘/home/svn’: Permission denied

集团的
Subversion
服务器由于计算机硬件原因,常常自动关机,因此安插重新安装一台服务器。原本的
Subver…

或者

403 forbidden

谬误的话,表示apache(平常账户是www-data)未有权力文书档案到svn所在目录的权杖,此时亟待检讨/home/svn及其子文件夹的权力,举例

 

1

sudo chown -R www-data /home/svn

然后再看望

 

5.重启apache的时候若是出现

Permission denied: make_sock: could not bind to address 0.0.0.0:80

等字样,记得加sudo

1.安装Subversion 1
www.2cto.com sudo apt-get install subversion 2.创办客栈假定大家库房的父目录为/home/svn 1 2 cd /home/svn sudo…

发表评论

电子邮件地址不会被公开。 必填项已用*标注