`
neptune
  • 浏览: 357679 次
  • 性别: 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写的文章好了.

分享到:
评论

相关推荐

    red hat linux下subversion和Apache安装配置攻略

    red hat linux 9.0下subversion和Apache安装配置攻略

    rh9 linux下subversion服务器、php环境、postgres&mysql服务器安装配置

    redhat 9.0下,subversion-1.6.3的安装配置 php+postgressql+mysql+gd+apache+memcache+eAccelerator+zend optimizer的安装配置

    使用Subversion进行版本控制(针对 Subversion 1.4)

    基本的 Apache 配置 认证选项 基本HTTP认证 SSL 证书管理 授权选项 整体访问控制 每目录访问控制 禁用基于路径的检查 额外的糖果 版本库浏览 Apache 日志 其它特性 基于路径的授权 支持多种版本库访问方法 7. 定制你...

    SVN服务器在Linux上的安装和配置

    本文描述如何在Windows平台上安装和配置Subversion,主要包括: 1)Subversion和Apache整合服务器的安装和配置; 2)Subversion的认证和授权; 3)不支持Berkeley DB,只支持FSFS。

    常用Java Web应用软件 (LNMJ,LAMJ)安装

    本文主要总结了在Ubuntu10下常用Java Web应用软件的安装,特别是LNMJ Web(Linux+Nginx+Mysql+Java Tomcat)架构和LAMJ Web(Linux+Apache+Mysql+Java Tomcat)架构下的软件安装。为进一步配置和实现LNMJ和LAMJ架构(负载...

    在Linux/Apache2.2上配置SVN服务器

    火龙果软件工程技术中心 准备,下载所需要文件本文测试环境:ubuntu6.06LTS(kernel2.6.15-25-k7,gcc-4.0.3)/ubuntuserver(2.6.15-26-server,gcc-4.0.4)Subversion1.3.2/1.4.2Apache2.2.2/2.2.3GCC4.1.2最新的版本...

    CollabNetSubversion-server-1.7.2-1.i386.rpm

    CollabNet 官方提供的用于 linux 操作系统 Subversion ...安装完后,需要运行 /opt/CollabNet_Subversion/bin/Configure-CollabNet-Subversion 对服务器进行初始配置(例如:选择用 Apache 还是 svnserve 做服务器)

    LINUX下SVN服务器安装配置实践

    环境 SVN版本:subversion-1.6.6 操作系统:CentOS 5.4 Linux Apache: Apache 2.2.14 当然,版本不同安装配置也几乎是一样的

    CentOS下安装apache和svn并为svn配置http支持

    centos下安装apache和svn并为svn配置httpd支持

    CollabNetSubversionEdge-5.2.3_linux-x86_64.tar.gz

    首先说CSVN,其实可以简单理解为SVN+Apache的集成版本,当然CSVN还有其他的一些特性(角色的用户管理,灵活的角色和权限配置以及LDAP认证,基于角色的多仓库管理,自动备份、恢复,以及模板和Rest APIs管理),可以...

    CollabNetSubversionEdge-5.1.4_linux-x86_64.tar.gz

    CSVN,其实可以简单理解为SVN+Apache的集成版本,当然CSVN还有其他的一些特性(角色的用户管理,灵活的角色和权限配置以及LDAP认证,基于角色的多仓库管理,自动备份、恢复,以及模板和Rest APIs管理)

    linux下安装配置svn独立服务器的步骤分享

    通过配置Subversion的Apache服务器的WebDAV协议。 https:// 与http://相似,但是包括SSL加密。 svn:// 通过svnserve服务自定义的协议。 svn+ssh:// 与svn://相似,但通过SSH封装svn存储版本数据也有2种方式...

    CollabNetSubversion-server-1.6.17-1.x86_64.rpm (注意这是 64 位的)

    (注意这是用于 64 位 linux 操作系统的) ...安装完后,需要运行 /opt/CollabNet_Subversion/bin/Configure-CollabNet-Subversion 对服务器进行初始配置(例如:选择用 Apache 还是 svnserve 做服务器)

    CollabNetSubversion-server-1.7.1-1.x86_64.rpm (注意这是 64 位的)

    *** 注意这是用于 64 位 linux 操作系统的 *** ...安装完后,需要运行 /opt/CollabNet_Subversion/bin/Configure-CollabNet-Subversion 对服务器进行初始配置(例如:选择用 Apache 还是 svnserve 做服务器)

    CollabNetSubversion-server-1.7.1-1.i386

    CollabNet 官方提供的用于 linux 操作系统 Subversion ...安装完后,需要运行 /opt/CollabNet_Subversion/bin/Configure-CollabNet-Subversion 对服务器进行初始配置(例如:选择用 Apache 还是 svnserve 做服务器)

    CollabNetSubversion-server-1.6.17-1.i386.rpm

    CollabNet 官方提供的用于 linux 操作系统 Subversion ...安装完后,需要运行 /opt/CollabNet_Subversion/bin/Configure-CollabNet-Subversion 对服务器进行初始配置(例如:选择用 Apache 还是 svnserve 做服务器)

    linux基本操作

    1. VI的用法 5 1.1. VI与VIM 5 1.2. VI常用的模式 5 1.3. VI的设置 5 1.4. VI的基本用法 6 1.4.1. 常用命令、设置和操作 6 ...10.2. Samba安装和配置 43 10.3. 创建共享资源与samba用户 45 11. web服务 47

Global site tag (gtag.js) - Google Analytics