Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1726631
  • 博文数量: 347
  • 博客积分: 9328
  • 博客等级: 中将
  • 技术积分: 2680
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-29 23:45
文章分类

全部博文(347)

文章存档

2016年(1)

2013年(4)

2012年(207)

2011年(85)

2010年(50)

分类: 项目管理

2012-06-13 14:30:36

原文:http://blog.csdn.net/colinchan/article/details/1865154

一. 安装apr依赖库(Apache Portable Runtime Module)
下载地址:

1.安装apr
tar zxvf apr-1.4.6.tar.gz
cd apr-1.4.6
./buildconf
./configure --prefix=/usr/local/apr/
make
make install


2.安装apr-util
tar zxvf apr-util-1.4.1.tar.gz
cd apr-util-1.4.1
./buildconf
./configure --prefix=/usr/local/apr-util --with-apr=/usr/loca/apr
make
make install


二. 重新编译httpd

检查已安装的 Apache2 是否已经安装了 mod_dav .

如果已经成功安装了Apache,使用 httpd -M 来查看有没有安装 dav_module,如果没有的话 必须附加 ‘–enable-dav’ ‘–enable-dav-fs’ 两个参数重新编译 Apache,否则即使编译通过了svn,apache也会启动不起来.

wget
./configure --enable-dav --enable-dav-fs
make
make install

若httpd安装失败,并提示找不到pcre,需要先安装,下载地址:


三. 安装subversion

最新的版本 Subversion 可以在这里找到 :


下载neon库,使svn支持webdav, https加密的链接.
下载之后放到subversion安装目录下,并重命名即可, subversion会自动监测并配置, 目前只支持 0.25.5.

cd subversion-SVN-LAST-VERSION-DIR 
cd subversion-1.4.5
wget
tar xzf neon-0.25.5.tar.gz
mv neon-0.25.5 neon


./configure --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/home/chenmin/apr-1.2.11 --with-apr-util=/home/chenmin/apr-util-1.2.10 --with-ssl
在以上编译过程中可能会出现 configure: error: Subversion requires SQLite
 可以 可以下载到最新的Sqlite版本sqlite-amalgamation-3.6.13.tar.gz安装Sqlite3.6.13 tar zxvf sqlite-amalgamation-3.6.13.tar.gz 进入文件夹sqlite-amalgamation找到sqlite3.c将其复制到 
 subversion-1.6.2/sqlite-amalgamation/sqlite3.c 。由于版本1.6.3里没有sqlite-amalgamation 所以你要先创建sqlite-amalgamation 目录然后复制进去

由于没有安装Berkeley DB,所以使用FSFS
make
sudo make install


测试安装是否成功:
svnserve --version

启动SVN服务:
sudo svnserve -d -r /home/data/svn/
注意:这里目录 /home/data/svn/ 是所有配置库的父级目录,其子目录均为各个配置库:/home/data/svn/proj1   /home/data/svn/proj2

如果不同目录有svn仓库,例如除了/home/data/svn有两个svn仓库,/usr/local/svnrepos目录下面也有多个仓库,若想同时开启两个不同目录的svn服务,需要为第二个目录另外开一个端口,终端命令如下:
svnserve -d --listen-port 3691 -r  /usr/local/svnrepos 
新增端口后同时需要还需要将端口3691添加防火墙例外。最好客户端访问时需要在IP上加入端口,例如,svn://127.0.0.1:3691/myproject


重启SVN服务:
netstat -ntlp  找出svnserve的进程id
然后
kill -9 id

其中 -d 表示守护进程, -r 表示在后台执行

SVN服务开机启动:
让Linux启动时自动启动svn服务的办法是在/etc/rc.local文件里添加下面的语句:
/usr/local/bin/svnserve -d -r /home/data/svn/
其中: /usr/local/bin/ 是svn的安装路径。

四. 配置subversion和apache

拷贝svn模块到apache模块目录下
cp /data/subversion-1.4.5/subversion/mod_dav_svn/.libs/mod_dav_svn.so /usr/local/apache2/modules/
cp /data/subversion-1.4.5/subversion/mod_authz_svn/.libs/mod_authz_svn.so /usr/local/apache2/modules/

编辑httpd.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so


DAV svn
SVNParentPath /data/svn


运行htpasswd添加用户和密码
/usr/local/apache2/bin/htpasswd -cm /data/svn/svn-auth-file chenmin
/usr/local/apache2/bin/htpasswd -m /data/svn/svn-auth-file admin

再次编辑httpd.conf

DAV svn
SVNParentPath /data/svn
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /data/svn/svn-auth-file
Require valid-user
AuthzSVNAccessFile /data/svn/svn-access-file


其中svn-auth-file是认证文件,存储用户名和密码,svn-access-file是访问权限文件,规定各个目录的访问者的权限, 示例的权限分配的文件的格式如下。
[groups]
admin = john, kate
devteam1 = john, rachel, sally
devteam2 = kate, peter, mark
docs = bob, jane, mike
training = zak
# Default access rule for ALL repositories
# Everyone can read, admins can write, Dan German is excluded. 注:若是特定仓库下面的鉴权配置文件,[/]就表示当前仓库的根目录
[/]
* = r
@admin = rw
dangerman =
# Allow developers complete access to their project repos
[proj1:/]
@devteam1 = rw
[proj2:/]
@devteam2 = rw
[bigproj:/]
@devteam1 = rw
@devteam2 = rw
trevor = rw
# Give the doc people write access to all the docs folders
[/trunk/doc]
@docs = rw
# Give trainees write access in the training repository only
[TrainingRepos:/]
@training = rw
权限配置文件中,关键的几个概念是:目标和权限,也就是为谁分配什么样的权限。读为r,写为w,如果没有权限那么什么也不写即可。
阅读(916) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~