`
neptune
  • 浏览: 362006 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

linux + apache + subversion安装和基本配置

阅读更多
引用的网址:
http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/

现在开始安装了:

1.安装subversion

(1).下载subversion1.5.5.tar.gz

(2).安装(安装时注意,subversion需要apxs和apr,注意目录位置)
./configure --prefix=/opt/subversion --with-apxs=/opt/apache/bin/apxs
--with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util
&& make && make install

2.配置subversion

(1).创建版本库

# 创建文件夹
mkdir /etc/svn/
mkdir /etc/svn/repos
# 运行创建版本库的命令,指定数据存储为 FSFS,如果要指定为 Berkeley DB,则将 fsfs 替换为 bdb,最好用fsfs(fsfs对外网http开放支持也好)
$ svnadmin create --fs-type fsfs /etc/svn/repos

(2).导入项目

创建一个临时目录,其下有两个项目.当然这只是为了举例子,但branches、tags和trunk的项目内基本结构还是推荐的.

/tmp/svn
|
――project_luni
| |
| ――branches
| |
| ――tags
| |
| ――trunk
|
――project_test
|
――branches
|
――tags
|
――trunk

用 svn import 命令来进行项目的导入
$ svn import /tmp/svn file:///etc/svn/repos/ --message "init"

(3).基本的服务器配置

Subversion 设计了一个抽象的网络层,版本库建立完毕之后,可以通过各种服务器向外公布。svnserve 是 Subversion 自带的一个小型的服务器,它使用独立的协议与客户端。我们可以通过

svnserve –i


作为 inetd 启动或者

svnserve –d


作为守护进程启动一个服务。服务器启动后,客户端即可以通过绝对路径访问。如上例可以访问 svn://服务器IP/etc/svn/repos。同时可以指定一些选项,常用的如 -r,用来指定版本库的根路径,例如假设版本库位于 /etc/svn/repos:

svnserve –d -r /etc/svn


则客户端可以通过如下 URL 访问服务器:svn://服务器IP/repos, 这样可以有效的避免暴露本地路径。另外如 --listen-port,--listen-host 可以指定绑定的地址和端口,-R 可以强制设定为 Read-Only 模式。如果在 Windows 操作系统下,可以将版本库设定在 C 分区,如 c:\svnroot\repos 可以通过 svn://服务器IP/svnroot/repos访问,如果在其他分区,就必须要通过 -r 选项来指定 root 位置。

svnserve 可以通过配置 svnserve.conf 来进行一些简单的访问权限控制。你可以在版本库的 conf 子文件夹下发现这个文件。文件的初始内容大致如下:

[general]
# anon-access = read
# auth-access = write
password-db = passwd
# authz-db = authz
# realm = My First Repository


其中 anon-access 表示匿名用户的权限,auth-access 表示认证用户的权限设置,password-db 指向保存用户帐号密码的文件的位置,可以使用相对路径。svnserve 只能对全局提供简单的访问控制,如果想要更加灵活的方式,可以使用 Apache Http Server 作为向外公布版本库的方式。

3.与 Apache Http Server 的结合

通过 Http 协议访问版本库是 Subversion 的亮点之一。使用 Http 协议意味着只需要打开浏览器,输入 URL 即可轻松的浏览整个版本库。灵活通常带来复杂性,Http 方式相对于 svnserve 方式来说需要更多的配置。

由于 Subversion 需要版本化的控制,因此标准的 Http 协议不能满足需求。要让 Apache 与 Subversion 协同工作,需要使用 WebDAV(Web 分布式创作和版本控制)。WebDAV 是 HTTP 1.1 的扩展,关于 WebDAV 的规范和工作原理,可以参考 IETF RFC 2518。

为了使 Subversion 与 dav 模块通信,需要安装 mod_dav_svn 插件,可以在 Subversion 的安装目录中找到。将其拷贝到 Apache 安装目录的 modules 文件夹下。接下来就是配置 Apache 的 httpd.conf 文件,让 Apache 在启动的时候加载上述模块。

需要添加的内容如下:

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
<Location /repos>
  DAV svn
  SVNPath /etc/svn/repos
</Location>


首先需要启用 dav_module,然后加载 dav_svn_module。Location 标签指出访问的 URL 以及在服务器上的实际位置。配置完毕后重新启动 Apache,打开浏览器,输入 http://服务器IP/repos 将会看到如下画面:

图1. 一个初始版本库
初始版本库

这表示 Apache 的 dav_svn 模块已经可以正常工作了。用户可以使用任何一种 Subversion 的客户端通过 Http 协议访问你的版本库。

如果想要指定多个版本库,可以用多个 Location 标签,也可以使用 SVNParentPath 代替 SVNPath,例如在 /etc/svn 下有多个版本库 repos1,repos2 等等,用如下方式指定:

<Location /repos>
  DAV svn
  SVNParentPath /etc/svn
</Location>


"SVNParentPath /etc/svn" 表示 /etc/svn 下的每个子目录都是一个版本库。可以通过 http://服务器IP/repos/repos1,http://服务器IP/repos/repos2 来访问。

现在你的版本库任何人都可以访问,并且有完全的写操作权限。也就是说任何人都可以匿名读取,修改,提交,以及删除版本库中的内容。显然大部分场合这是不符合需求的。那么如何进行权限设置呢,Apache 提供了基本的权限设置:

首先需要创建一个用户文件。Apache 提供了一个工具 htpasswd,用于生成用户文件,可以在 Apache 的安装目录下找到。具体使用方法如下:

htpasswd etc/svn/passwordfile username



如果 passwordfile 不存在,可以加上 -c 选项让 htpasswd 新建一个。创建好的文件内容是用户名加上密码的 MD5 密文。

接下来修改 httpd.conf,在 Location 标签中加入如下内容:

AuthType Basic
AuthName "svn repos"
AuthUserFile /etc/svn/passwordfile
Require valid-user


重新启动 Apache,打开浏览器访问版本库。Apache 会提示你输入用户名和密码来认证登陆了,现在只有 passwordfile 文件中设定的用户才可以访问版本库。也可以配置只有特定用户可以访问,替换上述 "Require valid-user" 为 "Require user tony robert" 将只有 tony 和 robert 可以访问该版本库。

有的时候也许不需要这样严格的访问控制,例如大多数开源项目允许匿名的读取操作,而只有认证用户才允许写操作。为了实现更为细致的权限认证,可以使用 Limit 和 LimitExcept 标签。例如:

<LimitExcept GET PROPFIND OPTIONS REPORT>
require valid-user
</LimitExcept>


如上配置将使匿名用户有读取权限,而限制只有 passwordfile 中配置的用户可以使用写操作。如果这还不能满足你的要求,可以使用 Apache 的 mod_authz_svn 模块对每个目录进行认证操作。

用 mod_authz_svn 进行目录访问控制

首先需要让 Apache 将 mod_authz_svn 模块加载进来。在 Subversion 的安装目录中找到 mod_auth_svn 模块,将其拷贝到 Apache 安装目录的 modules 子目录下。修改 httpd.conf 文件,找到

LoadModule dav_svn_module modules/mod_dav_svn.so


在其后面加上

LoadModule authz_svn_module modules/mod_authz_svn.so


现在可以在 Location 标签中使用 authz 的功能了。一个基本的 authz 配置如下:

<Location /repos>
  DAV svn
  SVNPath /etc/svn/repos
  AuthType Basic
  AuthName "svn repos"
  AuthUserFile /etc/svn/passwd
  AuthzSVNAccessFile /etc/svn/accesspolicy
  Satisfy Any
  Require valid-user
</Location>


AuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定,如:

#两个分组:committers,developers
[groups]
committers = paulex richard
developers = jimmy michel spark sean \
           steven tony robert
#在根目录下指定所有的用户有读权限
[/]
* = r
#追加 committers 组用户有读写权限
@committers = rw
#在 branches/dev 目录下指定 developers 组的用户有读写权限
[/branches/dev]
@developers = rw
#在 /tags 组下给予用户 tony 读写权限
[/tags]
tony = rw
#禁止所有用户访问 /private 目录
[/private]
* =
#给 committers 组用户读权限
@committers= r


使用 SVNParentPath 代替 SVNPath 来指定多个版本库的父目录时,其中所有的版本库都将按照这个策略文件配置。例如上例中 tony 将对所有版本库里的 /tags 目录具有读写权限。如果要对具体每个版本库配置,用如下的语法:

[groups]
project1_committers = paulex richard
project2_committers = jimmy michel spark sean \
           steven tony robert
[repos1:/]
* = r
@ project1_committer = rw
[repos2:/]
* = r
@ project2_committer = rw


这样项目1的 committer 组只能对 repos1 版本库下的文件具有写权限而不能修改版本库 repos2,同样项目2的 commiter 也不能修改 repos1 版本库的文件。

4.apache和linux目录权限配置

创建一个apache的用户组和apache用户.

修改apache的http.conf文件,把用户和户组都设置为apache

修改snv的版本库目录和文件,特别是下面的dav和db目录,拥有用户和组都设置为apache

chmod 777 /opt/svn
chmod 777 /opt/svn/repos
chmod 777 /opt/svn/repos/pis/db
chmod 777 /opt/svn/repos/pis/dav

chown -R apache:apache /opt/svn

只有这样才可访问.

最后如还有问题,就请看这个附件内ibm写的文章好了.

分享到:
评论

相关推荐

    linux下subversion+apache server搭建

    总之,搭建Linux下的Subversion服务器需要对Apache服务器的配置和Subversion的工作原理有深入理解。完成上述步骤后,团队成员即可通过网络方便地进行代码的版本控制和协作开发。在实际应用中,还需要考虑安全设置、...

    Linux+svn+apache配置方法

    本文将详细介绍如何在Linux环境下配置Subversion (SVN) 和 Apache HTTP Server,以实现版本控制功能,并支持通过SVN客户端和Web浏览器两种方式进行访问。通过本教程,您将能够搭建一个稳定可靠的代码版本控制系统。 ...

    linux+svn+apache安装配置部署

    根据提供的文件信息,我们可以将整个过程分为两个主要部分:第一部分是关于如何在Linux系统上独立安装Subversion(简称SVN)以及如何进行基本配置;第二部分则涉及到如何结合Apache Web服务器来部署SVN服务器。 ###...

    Apache和Subversion集成安装与配置

    - 安装完成后,确保Apache服务已经启动并配置为开机启动,可以使用`systemctl start apache2`和`systemctl enable apache2`命令。 2. **安装Subversion**: - 同样地,Subversion也可以通过包管理器安装,如在...

    linux+svn+apache手順

    Linux 中安装 SVN 和 Apache 服务器的手顺指南 本文档旨在指导读者在 Linux 系统上安装 SVN 和 Apache 服务器,并对安装过程中的关键知识点进行详细解释。 安装 APR 和 APR-Util APR(Apache Portable Runtime)...

    apache+subversion配置说明 v1 8

    本配置说明主要针对Apache 2.2.29和Subversion 1.8.13版本进行安装和配置,以实现SVN仓库的跨版本库迁移,并保留提交日志。 首先,我们需要准备以下软件包: 1. Apache HTTP Server(httpd-2.2.29) 2. Subversion...

    SVN+Linux+Apache配置.doc

    本文详细介绍了在Linux环境下安装配置SVN与Apache的过程,包括软件安装、SVN服务启动与验证、Linux SVN管理账户的建立、建立SVN根目录与相关repository以及Apache与SVN的绑定等关键步骤。通过以上步骤,可以顺利实现...

    ubuntu linux 配置svn+apache+ssl

    Apache的用户认证管理确保了权限控制,而authz配置则允许对用户和用户组进行精细的权限设置。 【安装Ubuntu 8.10服务器】 首先,你需要安装Ubuntu 8.10(Server或Desktop版),并创建一个名为"administrator"的...

    apache和Subversion及TortoiseSVN安装配置

    如果选择与Apache结合,你需要在Apache的配置文件中加载`mod_dav_svn`模块,并配置相应的Repository路径,以便Apache能访问和管理Subversion仓库。 TortoiseSVN的安装相对简单,它是Subversion的GUI客户端,提供了...

    linux的_svn+apache的安装和配置..pdf

    Linux下的SVN+Apache安装和配置 Linux下的SVN(Subversion)和Apache是一种常用的版本控制系统,SVN是管理工程本版的必备工具,相对VSS 及其前身CVS来说都有着无与伦比的优势。下面是安装和配置SVN+Apache服务端的...

    Linux下搭建svn+apache

    在Linux环境下搭建Subversion (SVN) 和 Apache 的联合服务是一种常见的版本控制系统部署方案。通过Apache作为前端服务器,可以利用HTTP协议方便地进行SVN仓库的管理和访问。本文将详细介绍在Linux环境下搭建SVN + ...

    知识点linux+apache+svn学案.pdf

    本文将深入探讨如何在Linux系统中配置Apache Web服务器与Subversion(SVN)版本控制系统,以便实现高效且安全的代码管理和协作。首先,我们从安装Apache开始。 1. **安装Apache** Apache是流行的开源Web服务器,...

    [Linux]安装,配置Subversion 1.4.5

    注意,这个例子中的Subversion配置使用了基本身份验证,对于生产环境,可能需要更复杂的权限管理和SSL加密。 在日常使用中,Subversion提供了丰富的命令行工具,如`svn co`用于检出代码,`svn ci`用于提交更改,`...

    在Linux下安装与配置subversion独立服务器.pdf

    【Subversion 在 Linux 下的安装与配置】 Subversion(简称 SVN)是一款强大的开源版本控制系统,它跟踪文件和目录的变化,管理文件的历史版本,允许用户在时间轴上回溯到任何特定版本。Subversion 可以作为Apache...

    svn+apache+trac配置

    在本配置中,我们将通过Apache web服务器来部署Trac,实现通过Web访问项目管理和版本控制的功能。 1. **总体说明** Trac环境的搭建主要涉及以下组件: - Apache HTTP Server:作为Web服务器,负责处理HTTP请求并...

    Linux-RedHat9上配置svn+apache服务器

    在Linux RedHat9系统上配置SVN(Subversion)与Apache服务器的集成是开发者和系统管理员常用的操作,以便实现版本控制系统和Web服务器的完美融合,提供便捷的代码管理和Web访问功能。以下是一份详细的配置指南: ...

    SVN + Apache 成功安装部署

    **标题解析:** "SVN + Apache 成功安装部署" 这个标题表明了我们要讨论的是如何在服务器或开发环境中安装并配置Subversion (SVN) 和Apache HTTP Server,以便协同工作,实现版本控制和代码仓库的Web访问。...

    Apache-Subversion-1.14.2

    Apache Subversion(简称 SVN)是一个开源的版本控制系统,用于管理和跟踪文件和目录的变更。它允许团队成员协同工作,共享和追踪项目代码的不同版本。下面是一些关于 Apache Subversion 的要点: 版本控制:SVN ...

Global site tag (gtag.js) - Google Analytics