apache+svn+trac安装及配置

svn简介:

Subversion是新一代的版本控制工具,它是一个自由、开放源码的版本控制系统。它是一个通用系统,可用来管理任何类型的文件,其中包括程序源码。Subversion是近年来崛起的版本管理工具,被誉为是cvs的接班人

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. subversionconfigure是不是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配置是正常的.