linux svn server 64,Linux下SVN Server搭建

sam_code@hotmail.com

最近研究下SVN Server搭建。选择平台是Fedora64bit和32bit.

0. 背景知识:

Subversion 是一款开放源代码的版本控制系统。使用

Subversion,您可以重新加载源代码和文档的历史版本。Subversion

管理了源代码在各个时期的版本。一个文件树被集中放置在文件仓库中。这个文件仓库很像是一个传统的文件服务器,只不过它能够记住文件和目录的每一次变化。

SVN Server有两种运行方式:一种是基于Apache Http Server, 另一种是Subversion

Standalone Server.

1. 实际搭建:

1.1:基于Apache Http Server方式

1.1.1:在Fedora 18 32bit下:

既然基于Apache,那首先要安装Apache服务器。

1.1.1.1:安装Apache Server:

#yum install httpd httpd-devel

1.1.1.2:  安装svn server:

#yum install subversion mod_dav_svn

由于Subversion需要版本化的控制,因此标准的HTTP协议不能满足需求,mod_dav_svn模块就是Apache与Subversion协同工作的接口。通过它,Apache就可以访问版本库了。

1.1.1.3: 验证SVN和mod_dav_svn:

a: mod_dav_svn模块:

cd /etc/httpd/modules/

ls |grep svn

mod_authz_svn.so

mod_dav_svn.so

说明安装模块成功。

b: svn

#svn --version

svn, version 1.7.14 (r1542130)

compiled Nov 26 2013,

21:44:01

Copyright (C) 2013 The Apache Software Foundation.

This software consists of contributions made by many people;

see the NOTICE

file for more information.

Subversion is open source software, see

http://subversion.apache.org/

The following repository access (RA) modules are

available:

* ra_neon : Module for accessing a repository via WebDAV

protocol using Neon.

- handles 'http' scheme

- handles 'https' scheme

* ra_svn : Module for accessing a repository using the svn

network protocol.

- with Cyrus SASL authentication

- handles 'svn' scheme

* ra_local : Module for accessing a repository on local

disk.

- handles 'file' scheme

则证明svn安装成功。

1.1.1.4:  创建仓库目录,文件仓库:

创建仓库目录:

#mkdir -p /var/www/svn

创建文件仓库:

#cd  /var/www/svn

#svnadmin create zienon_SW

创建一个叫做zienon_SW的文件仓库。

修改文件归属:

#cd /var/www

#chown -R apache.apache svn

改变文件权限:

#chmod 755 svn/zienon_SW -R

1.1.1.5: 修改svn配置文件:

有文档说安装SVN和mod_dav_svn模块后,会自动创建/etc/httpd/conf.d/subversion.conf

但我这边并没有自动生成。

#vi /etc/httpd/conf.d/subversion.conf

添加内容如下:

LoadModule dav_svn_module  modules/mod_dav_svn.so

LoadModule authz_svn_module  modules/mod_authz_svn.so

DAV svn

SVNParentPath

/var/www/svn

#

#  # Limit write permission to list of valid

users.

#

#  #

Require SSL connection for password protection.

#  #

SSLRequireSSL

#

AuthType Basic

AuthName "Subversion

repository"

AuthzSVNAccessFile

/var/www/svn/authz.conf

AuthUserFile

/var/www/svn/user.passwd

Require valid-user

#

此时, ApacheServer知道了SVN的仓库目录,和authz.conf的位置。

1.1.1.6:创建用户名密码文件和用户名密码:

使用: htpasswd -b[cmBdpsDv] [-C cost]

passwordfile username password

#htpasswd -bc /var/www/svn/user.passwds sam.zhen

654321

-c: 表示创建新密码文件。

则此时创建了一个用户:sam.zhen,

密码:654321。同时创建了一个密码文件:/var/www/svn/user.passwds

继续创建新用户名,密码(密码文件则不用重新创建了)

#htpasswd -b /var/www/svn/user.passwd tony 123456

则创建了一个新用户:tony  密码是:123456

1.1.1.7:设置用户权限:

#vi /var/www/svn/authz.conf

当前只有两个用户,内容如下:

[test:/]

sam.zhen =  rw

tony = r

[/]

[zienon_SW:/]

sam.zhen =

rw

tony = r

[/]

第一个仓库是测试仓库,第二个仓库是真正使用的仓库。

sam.zhen 可读写, tony只读。

1.1.1.8:重启Apache

Server:

#systemctl restart httpd

此时:使用浏览器或者SVN Client

http://10.0.0.3/svn/zienon_SW

输入用户名密码后都可以看到仓库内容,当然现在还是空的。

1.1.1.9: 创建项目:

前面使用svnadmin create 创建了版本库。一个版本库可以有一个或多个项目组成,一个好的版本库布局有利于svn

server的长期稳定。

Sam在版本库中有三个项目,Action,  Utils_Linux_Android

每个项目中都包含以下三个目录:

trunk, tags, branches.

分别用来保存开发主线,项目标签和分支。

trunk里面又可以包含项目内的各模块。

以Utils_Linux_Android 为例,

Sam在Utils_Linux_Android目录中建立了trunk, tags, branches这三个目录。

在trunk中把V4L2_Utils, UInput_Utils, IR_Utils等项目加入。

在Utils_Linux_Android 上右击:Import,

Url of Repository:

http://10.0.0.20/svn/zienon_SW/Utils_Linux_Android

请注意:此处在版本库zienon_SW 之后需要加入Utils_Linux_Android这个项目名。

依次继续下去,就在一个版本库中建立了多个项目。

1.1.2:  在Fedora18 64Bit下:

Sam所用方法和32bit完全一致,但httpd 没法启动。

#systemctl start httpd.service

出错:

Job for httpd.service failed. See 'systemctl status

httpd.service' and 'journalctl -xn' for details.

[sam@localhost ~]$ sudo journalctl -xn

-- Logs begin at Mon 2014-06-09 18:34:27 CST, end at Mon

2014-06-09 18:37:46 CST. --

Jun 09 18:37:07 localhost.localdomain systemd[1]:

httpd.service: main process exited, code=exited,

status=1/FAILURE

Jun 09 18:37:07 localhost.localdomain httpd[1163]: [Mon Jun 09

18:37:07.621527 2014] [so:warn] [pid 1163] AH01574: module

dav_svn_mo

Jun 09 18:37:07 localhost.localdomain httpd[1163]: [Mon Jun 09

18:37:07.621578 2014] [so:warn] [pid 1163] AH01574: module

authz_svn_

Jun 09 18:37:07 localhost.localdomain httpd[1163]: AH00526:

Syntax error on line 5 of /etc/httpd/conf.d/subversion.conf:

Jun 09 18:37:07 localhost.localdomain httpd[1163]: DAV not

allowed here

Jun 09 18:37:07 localhost.localdomain systemd[1]:

httpd.service: control process exited, code=exited status=1

Jun 09 18:37:07 localhost.localdomain systemd[1]: Failed to

start The Apache HTTP Server.

-- Subject: Unit httpd.service has failed

-- Defined-By: systemd

-- Support:

http://lists.freedesktop.org/mailman/listinfo/systemd-devel

--

-- Unit httpd.service has failed.

--

-- The result is failed.

Jun 09 18:37:07 localhost.localdomain systemd[1]: Unit

httpd.service entered failed state.

Jun 09 18:37:31 localhost.localdomain sudo[1165]: sam :

TTY=pts/0 ; PWD=/home/sam ; USER=root ; COMMAND=/bin/journalctl

-xn

Jun 09 18:37:46 localhost.localdomain sudo[1168]: sam :

TTY=pts/0 ; PWD=/home/sam ; USER=root ; COMMAND=/bin/journalctl

-xn

后来在网络上查到解决方案:

修改/etc/httpd/conf.d/subversion.conf

#sudo vi /etc/httpd/conf.d/subversion.conf

LoadModule dav_svn_module  modules/mod_dav_svn.so

LoadModule authz_svn_module  modules/mod_authz_svn.so

DAV svn

SVNParentPath /var/www/svn

#

#  # Limit write permission to list of valid

users.

#

#  #

Require SSL connection for password protection.

#  #

SSLRequireSSL

#

AuthType Basic

AuthName "Subversion repository"

AuthzSVNAccessFile /var/www/svn/authz.conf

AuthUserFile /var/www/svn/user.passwds

Require valid-user

#

则一切OK。

1.2:Subversion Standalone Server方式安装:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值