安装环境:
Redhat Enterprise server4.0
需要软件:
SVN: Subversion 1.4.3
HTTPD:Apache Httpd 2.2.4
APR: Apache Apr 1.2.8
APU: Apache Apr-Util 1.2.8
1:下载源代码
Subversion 下载目的:http://subversion.tigris.org/
Apache 下载目的: http://archive.apache.org/
2. 编译源代码:
按下面的顺序编译源代码:
(1) Apache Apr
# cd apr-1.2.8
# ./configure --prefix=/usr/local/apr
# make
# make install
(2) Apache Apr-Util
# cd apr-util-1.2.8
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make
# make install
(3) Apache Httpd
# cd httpd-2.2.4
# ./configure --prefix=/usr/local/apache2 --enable-dav --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
# make
# make install
(4) Subversion
# cd subversion-1.4.3
# ./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install
以上的编译通常情况都能顺利编译成功,得到相应的可执行程序。
检查WebDav for SVN 模块:
# cd /usr/local/apache2/modules
检查 mod_dav_svn.so 和 mod_authz_svn.so,如果上述第2步编译成功,这两个模块应该可以看到。
3. 创建svn用户:
# groupadd svn
# useradd -g svn svn
以后代码库的创建维护等,都用这个帐户来操作。
准备环境变量:
$ SVN_HOME=/usr/local/subversion
$ export SVN_HOME
$ PATH=$PATH:$SVN_HOME/bin
$ export PATH
创建启动Subversion的脚本:
$ echo '/usr/local/subversion/bin/svnserve -d -r /home/svn/' > startup.sh
$ chmod +x startup.sh
$ ./startup.sh
将启动脚本放置到开机自动启动脚本中:
以root身份修改文件:/etc/rc.d/rc.local,添加以下文字:
su -c /home/svn/startup.sh svn
4.创建代码仓库
#cd /usr/local/subversion/bin
创建仓库projects
#./svnadmin create /home/svn/projects
更改目录的访问权限(这里我只是尝试这样做可以。要不然回报内部服务器错误或者没有权限添加文件。)
#chmod 777 –R /home/svn
5.修改Apache配置文件
Vi /usr/local/apache2/conf/httpd.conf
加载WebDav for SVN模块:
#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
添加最后两行(默认编译后,configure会自动加上):
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
在下面添加:
<Location /svn>
DAV svn
SVNParentPath /home/svn //svn父目录
AuthzSVNAccessFile /home/svn/authz.conf //权限配置文件,如果这里制定的文件没有找到会报内部服务器错误。
AuthType Basic //连接类型设置
AuthName "rabocheng ES4 linux" //连接框提示
AuthUserFile /home/svn/authfile // 用户配置文件
Require valid-user //采用何种认证
</Location>
修改启动httpd的默认用户:
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
#User daemon
#Group daemon
User svn
Group svn
</IfModule>
将执行httpd的用户和组设为svn,这样做是为了让httpd进程能访问版本库的数据。
上面的authfile用户配置文件可以通过命令
#/usr/local/apache2/bin/htpasswd –c /home/svn/authfile rabo
回车,再输入密码来添加。
//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,
//完成对用户 的增加
权限配置文件
/home/svn/authz.conf配置说明
vi /home/svn /authz.conf
[projects:/] //这表示,仓库test的根目录下的访问权限
rabo = rw //test仓库wooin用户具有读和写权限
svn = rw //test仓库bao用户具有读权限
[/] //这个表示在所有仓库的根目录下
* = r //这个表示对所有的用户都具有读权限
#[groups] //这个表示群组设置
#svn1-developers = wooin, bao //这个表示某群 组里的成员
#svn2-developers = wooin
#[svn1:/]
#@svn1-developers = rw //如果在前面加上@符号,则表 示这是个群组权限设置