Subversion在Linux下的安装与使用(和Apache配套使用)

/*********************************
Title:Subversion在linux下的安装与使用(和Apache配套使用)
Author:成刚<[email protected]>
Date:2008-7-8
Modify:2008-10-24
**********************************/

安装机器: 192.168.2.180
操作系统: CentOS 5.2

/program/apache/为服务器上的apache安装目录

注意:安装subversion需要autoconf 2.58或以上版本、libtool 1.4或以上版本、gcc、libapr and libapr-util支持。


1、下载软件
httpd-2.2.9.tar.gz (http://www.apache.org)
subversion-1.5.1.tar.gz (http://subversion.tigris.org/)

2、编译安装httpd(如果您已经安装过Apache,并且配置Apache时,有这两个参数"--enable-dav --enable-so",则可省略此步骤,否则需要重新编译)
先停止apache:
/program/apache/bin/apachectl stop
然后再重装编译安装apache:
tar xvfz httpd-2.2.9.tar.gz
cd httpd-2.2.9
./configure --prefix=/program/apache --enable-dav=share --enable-so --enable-rewrite=share --enable-proxy=share --enable-proxy-ajp=share --with-apr=/program/apr --with-apr-util=/program/apr-util
make
make install

注意:以上配置Apache中的前两个参数(--enable-dav --enable-so)是必须要加的,你还可以根据您的需要添加其他的参数。
/program/apache/bin/apachectl start,打开浏览器http://192.168.2.180/,如果有测试页出现则证明已经安装成功。

3、安装Subversion
如果之前安装过subversion,则要卸载先前安装的Subversion库文件:
rm -f /usr/local/lib/libsvn*
rm -f /usr/local/lib/libapr*
rm -f /usr/local/lib/libexpat*
rm -f /usr/local/lib/libneon*


解压subversion:
tar xvfz subversion-1.5.3.tar.gz

检测Subversion所需的软件是否具备:
cd /server/software/subversion-1.5.1
sh ./autogen.sh
./configure --prefix=/program/subversion --with-apxs=/program/apache/bin/apxs --with-apr=/program/apr --with-apr-util=/program/apr-util
make
make install
运行make tools,在/server/software/subversion-1.5.0中生成tools目录
make tools
进入tools/server-side目录,里面有svn-populate-node-origins-index文件。

mkdir -p /server/repository //创建库文件所在的目录
/program/subversion/bin/svnadmin create /server/repository/joton //创建名为joton的仓库
/program/subversion/bin/svnadmin create /server/repository/sns //创建名为sns的仓库
去/server/repository/joton看看是不是多了些文件,如果是则说明Subversion安装成功了

执行以下命令,使apache的用户nobody对刚才新建立的仓库拥有权限:
chown -R nobody /server/repository/joton/

注:这儿的 nobody 是apache的用户,也有可能是daemon

4、修改apache,让subversion和apache一起工作
修改"/program/apache/conf/httpd.conf" ,在最下面添加如下几行:

(
subversion-1.5.3已经自动添加了,如没有则添上
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
)

单个版本库
<Location /svn>
DAV svn
SVNPath /server/repository/joton
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /server/repository/auth-svn
AuthzSVNAccessFile /server/repository/auth-svn.conf
Require valid-user
</Location>

多版本库
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /server/repository
AuthType Basic
AuthName " Subversion repository "
AuthUserFile /server/repository/auth-svn
AuthzSVNAccessFile /server/repository/auth-svn.conf
Require valid-user
</Location>

创建权限文件
touch –p /server/repository/auth-svn.conf
下面,就要写这个auth-svn.conf文件了,它是用来控制用户访问仓库的权限的,我们把说明写在后面
[svn1:/] //这表示,仓库svn1的根目录下的访问权限
dl1 = rw // svn1仓库dl1用户具有读和写权限
dl2 = rw // svn1仓库dl2用户具有读和写权限
dl3 = r // svn1仓库dl3用户具有读权限
[svn2:/] //svn2仓库根目录下的访问权限
harry = r // harry用户在svn2仓库根目录下只有读权限
sally = // sally用户在 svn2仓库根目录下无任何权限
#[/] // 这个表示在所有仓库的根目录下
#* = r // 这个表示对所有的用户都具有读权限
#[groups] // 这个表示群组设置
#svn1-developers = harry, sally // 这个表示某群组里的成员
#svn2-developers = sally
#[svn1:/]

#@svn1-developers = rw // 如果在前面加上@符号,则表示这是个群组权限设置

下面来创建访问有权限的subversion帐号:
/program/apache/bin/htpasswd -cm /server/repository/auth-svn chenggang //创建一个名为chenggang的用户。
执行这个命令成功以后就会在/program/apache/bin目录下建立一个passwd文件,之后如果再加入新的用户和更改已有用户的密码,执行
/program/apache/bin/htpasswd /server/repository/auth-svn <username>即可。
删除某个帐号:打开/server/svn/auth-svn这个文件,直接删除相关的行.

/program/apache/bin/apachectl restart
重启apache,打开浏览器访问http://192.168.1.1/svn/joton/,如果有东西显示就说明成功。如果不能正确的显示,你看看您的"/server/repository"目录是否对apache的用户是可写的就可以了。

到此为止,在Linux上安装Subversion已经成功!

##########遇见问题##############
我在安装过程中遇到的问题:
1、找不到/server/soft/apache/modules/mod_dav_svn.so这个文件?

解决方法:

配置subversion时:
--with-apxs2=/server/soft/apache/bin/apxs
应该为:
--with-apxs=/server/soft/apache/bin/apxs

2、访问 http://192.168.2.180/svn/*** ,提示You don't have permission to access /svn/xingmo on this server.

解决方法:
<Location /svn>
DAV svn
SVNParentPath /server/repository
Options Indexes MultiViews
</Location>
改为:
<Location /svn/xingmo>
DAV svn
#SVNParentPath /server/repository
SVNPath /server/repository/xingmo/
Options Indexes MultiViews
</Location>

3、向服务器import时,提示:
Error: Commit failed (details follow):
Error: Can't create directory '/server/repository/xingmo/db/transactions/0-1.txn':
Error: Permission denied

解决方法:
chown -R nobody /server/repository/xingmo/
/server/soft/apache/bin/apachectl restart

或:
chown -R nobody /server/repository
/server/soft/apache/bin/apachectl restart
注:这儿的 nobody 是apache的用户,也有可能是daemon


文中的路径及相关参数,可以根据自己的情况有所不同。

4、
Syntax error on line 413 of /program/apache/conf/httpd.conf:
AuthzSVNAccessFile not allowed here

读写权限问题
把apache配置文件中的用户赋值对svn仓库的读写权限就OK了,比如:chown -R nobody /server/repository

新建一个svn库:

/program/subversion/bin/svnadmin create /server/repository/work //创建名为work的仓库
chown -R nobody /server/repository/work/

添加帐号:
/soft/apache/bin/htpasswd /server/repository/auth-svn <username>

上述操作参考别人文档结合自己几次安装,不过经验有限,若有错误或者有待改进的地方,请各位不吝批评指教!

作者:成刚@成刚网志&&天宇星空
地址:http://www.chenggang.net/post/87/
欢迎转载、订阅、收藏,转载时请务必以链接形式注明作者和原始出处及本声明!

相关推荐