apache+svn+trac安装及配置

svn简介:

Subversion 是新一代的版本控制工具,它是一个自由、开放源码的版本控制系统。它是一个通用系统,可用来管理任何类型的文件,其中包括程序源码。Subversion是近年来崛起的版本管理工具,被誉为是cvs的接班人<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

trac简介:

Trac是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用。Trac以简单的方式建立了一个软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件;Trac应用力求不影响现有团队的开发过程。

软件环境:

 操作系统

 

Suse10  sp2  x_86

 

软件包:
 httpd-2.2.8.tar.bz2                         

 pysqlite-2.5.5.tar.gz                         

subversion-1.4.6.tar.gz

subversion-deps-1.4.6.tar.gz

Trac-0.11.2.1.tar.gz

Genshi-0.5.1.tar.gz

swig-2.0.0.tar.gz

python-devel-2.4.2-18.13.i586.rpm

python-xml-2.4.2-18.13.i586.rpm

sqlite-3.2.8-15.2.i586.rpm

sqlite-devel-3.2.8-15.2.i586.rpm

 

注意:在搭建此环境时,要特别注意各种软件对应版本,可能一个软件的版本不对,都会导致环境搭建的失败.

编译安装Apache

# tar zxvf httpd-2.2.8.tar.gz
# cd httpd-2.2.8
# ./configure --enable-dav --enable-so --enable-ssl --enable-maintainer-mode       --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-rewrite
# make
# make install
#cp support/apachectl  /etc/init.d/httpd

# vi /etc/init.d/httpd

 

加入一下的代码,apache可以用chkconfig方式启动:

 

# Startup script for the Apache Web Server

# chkconfig: - 85 15

# description: Apache is a World Wide Web server. It
  is used to serve
# HTML files and CGI.

# processname: httpd       

# pidfile: /usr/local/apache2/log/httpd.pid

# config: /usr/local/apache2/conf/httpd.conf

 

#chmod 755 /etc/init.d/httpd

#chkconfig --add httpd

#chkconfig --level 3 httpd on

#service httpd start

 
打开浏览器 http://IP/ ,如果出现Apache的测试页面,可以看到It works!说明apache已经可以正常工作了.

编译安装Subversion:

注意:在安装之前先确认你的OS上已经安装了pythonswig,如果没有安装的话可以下载source coderpm包来安装,因为我的OS上只装了python,所以下面还要装下swig.

 
# tar zxvf swig-2.0.0.tar.gz

# cd swig-2.0.0

# ./configure

# make && make install

 
# tar zxvf subversion-1.4.6.tar.gz
# cd subversion-1.4.6
#./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib --enable-maintainer-mode --without-berkeley-db PYTHON=/usr/bin/python --with-swig=/usr/local/bin/swig --enable-shared --enable-static --enable-swig-binding=python
# make
# make install

 
经过上面的步骤mod_dav_svn.so and mod_authz_svn.so将会被copy/usr/local/apache2/modules/,
同时在 /usr/local/apache2/conf/httpd.conf,添加如下2

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

检查一下是否都正确,如果没有的话可能就要手动加进去

同时执行了上面的make && make install后还要编译安装Subversion SWIG Python bindings

#cd subversion-1.4.6

#make swig-py

#make install-swig-py

 
可以看到swig-pyinstall目录是/usr/local/subversion/lib/svn-python.用如下命令讲这个扩展包扩展到python
 
# echo  /usr/local/subversion/lib/svn-python >/usr/lib/python2.3/site-packages/subversion.pth

剩下的就是测试svnswig-py包是不是正常

 
#python <-- 启动python

>>>import svn.repos             // ctrl+d退出

 
如果不报错,那就说明OK.

如果报错,那么检查如下问题:

 
I. subversion configure是不是enablesharedstatic,是不是带--with-swig

II. libsvn_swig_py-x.so 是否存在于/usr/local/subversion/lib目录;

III. /usr/local/subversion/lib 是否已经增加到ld.so.conf文件 (/etc/ld.so.conf)

IV. 请使用ldconfig -v |grep swig来检查是否有swig的下列动态库

libsvn_swig_py-1.so.0 -> libsvn_swig_py-1.so.0.0.0

 
如果一切正常,这个安装就完成了

安装完成后,运行svnserver --version确认版本为1.4.6

配置svn

最好不要让root用户参与到svn的权限管理和日常的运行和维护工作中来,所以我们建立一个用户(svn)同时为了处理好权限的问题,我们可以建立一个组(如svnrw),其他希望使用svn的用户加入这个组

 
root权限下用下面的命令创建用户和组:

#groupadd svnrw
#useradd svn -g svnrw
#passwd svn


然后切换到用户svn来创建svn仓库,对svn进行配置

选择一个目录位置作为svn仓库的存放位置,在这里用/home/svn作为存放位置

// 创建版本库"my_project",默认指定仓库的文件格式为fsfs

svnadmin create /home/svn/my_project
chown -R svn:svnrw /home/svn
chmod -R g+w home/svn/my_project
chmod g+s home/svn/my_project/db

# vi /usr/local/apache2/conf/httpd.conf

### svn settings
#

<Location /svn>
    DAV svn
    SVNListParentPath on          //
允许在网页上显示svn父目录list
    SVNParentPath /home/svn       // /home/svn
是我这边的SVN的父目录
    AuthType Basic                // 
连接类型设置
    AuthName "Subversion Repository"        //
连接框提示
    AuthUserFile /etc/svntrac.htpasswd      //
用户配置文件
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
    </LimitExcept>
</Location>

 
这里设置SVNParentPath而不是SVNPath的好处是可以几个svn仓库同时访问
加了LimitExcept这样匿名用户可以浏览,check out代码,但是不能commit, 认证用户有commit权限,其中svntrac.htpasswd文件是通过htpasswd命令来创建的,第一次设置用户时使用-c表示新建一个用户文件

 
# /usr/local/apache2/bin/htpasswd -c /etc/svntrac.htpasswd   admin
New password: xxxxxx
Re-type new password: xxxxxx
Adding password for user admin 
 

另外要修改 apache进程的权限:因为所有跟版本库传输的操作都是通过apache进程进行的,所以即使你给svn用户设置了很大的权限,但是apache进程没 有访问版本库或者相关文件的权限也没有用,apache进程的权限设置在 /usr/local/apache2/conf/httpd.conf 文件中配置,找到文件中的这两行:

User daemon    // daemon用户改为svn,让apache进程以svn身份运行
Group daemon   //
daemon组改为svnrw

 
# service httpd restart

 
打开浏览器访问 http://localhost/svn , 如果有东西显示就说明成功

测试SVN是否可以正常使用

svn仓库文件夹里,进入conf目录,这里需要修改3个配置文件.

 

#  vi  svnserve.conf

 

anon-access = read       //取消这行前面的#

anon-access = neno       //添加这行

auth-access = write     //取消这行前面的#

password-db = passwd    //取消这行前面的#

authz-db = authz        //取消这行前面的#

 

# vi  authz

 

[groups]

admin = admin                 // =号前面是组名,后面是用户名,用户名之间用逗号隔开

 

[my_project:/]               // :号前面是svn库的名字

@admin = rw                  //  admin组设置读写权限

 

# vi passwd

 

[users]

admin = admin                    // =号前面是用户,后面是用户的密码

 

启动svn服务

 

# svnserve  -d --listen-port 6000 --listen-host 10.10.1.3  -r /home/svn/

// -d表示在后台运行  --listen-port是监控的端口  --listen-hostsvn服务器的IP地址  -rsvn仓库的路径.

 

在一台windows服务器安装svn客户端,我这里使用的是TortoiseSVN,
鼠标右击选择SVN,出现一个对话框,上面的url
 svn://10.10.1.3:6000/my_project,下面任意选择一

个当前磁盘
路径,然后点击确定,如果没有问题,就不报任何的错误,我们还可以
在检出的文件夹创建一个文件,然后进行提交,看有没有问题,要是没
有问题,就说明svn配置是正常的.