Apache+APR+SVN+Trac搭建配置流程 
一、 搭建前准备 
1. 环境需求 
2. 基本安装包 
3. 准备工作 
二、 安装APR 2
1. 解压安装包 
2. 配置Apr 2
3. 安装Apr 2
三、 安装APR-Util 
1. 解压安装包 
2. 配置Apr-util 
3. 安装Apr-util 
四、 安装Apache 
1. 解压安装包 
2. 配置Apache 
3. 安装Apache 
4. 设置Apache 
5. Apache测试 
五、 安装Subversion 
1. 解压安装包 
2. 配置Subversion 
3. 安装Subversion 
4. 设置Subversion 
5. 检查安装结果 
六、 设置Subversion仓库 
1. 准备工作Apache+APR+SVN+Trac搭建配置流程
2. 设置仓库环境 
3. 导入初始文件 
4. 进阶配置 
5. 登录及权限配置
6. 测试Subversion 
七、 安装Trac 
1. 环境检查 
2. 安装Trac 
3. 配置Trac项目 
4. 独立运行Trac
5. 配置TRAC_ADMIN权限 
6. 配置Trac挂接SVN 
八、 在Apache中运行Trac 
1. 配置mod_python 
2. 配置Apache 
3. 整体测试 
九、 安装Bitten Master 
1. 解压安装包 
2. 安装Bitten 
3. 开放Bitten 
4. 更新Trac数据库 
5. 赋予Bitten的权限 
6. 整体测试 
7. 还原Trac Build 
十、 安装viewvc 
1. 解压安装包 
2. 安装viewvc 
3. 复制cgi到svn根目录 
4. 修改viewvc的conf 
5. 修改apache的conf文件 
6. 重启apache 
7. 在页面访问svn: 
 
一、 搭建前准备
1. 环境需求
这里所用的环境是干净的CentOS5.3机器,不需要额外安装其他的东西,下述环境笔者已测试通过。
 CentOS5.3
 x86_64
 python2.4.3
 sqlite3
2. 基本安装包
安装所需要用到的包都放在Tools.zip里面了,如果某个模块使用的是其他版本有可能导致版本间不兼容而发生异常。这里只是把几个大的系统列在这里方便查询。这里需要注意
的是Bitten的master和slave版本必须统一,否则会报错。
 Apache: httpd-2.2.21.tar.gz
 Apr、Apr-Util: apr-1.2.7.tar.gz、apr-util-1.2.7.tar.gz
 Subversion: subversion-1.6.12.tar.gz、subversion-deps-1.6.12.tar.gz
 Trac: Trac-0.12.2.tar.gz
 Bitten: Bitten-0.6.tar.gz
3. 准备工作
 由于环境是64位机器,需要准备一些lib文件。
理论上32位的机器不需要做这步。
执行命令:cp /usr/lib64/libexpat.* /usr/lib/;
 清空安装过程中需要的路径,防止历史文件影响。
执行命令:rm -rf /usr/local/apache*;
执行命令:rm -rf /usr/local/apr*;
执行命令:rm -rf /usr/local/http*;
执行命令:rm -rf /usr/local/subversion*;
执行命令:rm -rf /usr/local/svn;
二、 安装APR
Apr和Apr-util在Apache和Subversion中都有,为了避免引用的时候发生不兼容的问题,笔者下载了这两个包,单独安装在系统中,通过路径的配置将Apace和Subversion指向这两
个包所在的位置。
1. 解压安装包
执行命令:cd /usr/local;tar -zxf /root/Tools/apr-1.2.7.tar.gz;
2. 配置Apr
执行命令:cd /usr/local/apr-1.2.7;./configure --with-apr=/usr/local/apr/ --with-expat=builtin --prefix=/usr/local/apr;
正确结果:config.status: executing default commands
3. 安装Apr
执行命令:cd /usr/local/apr-1.2.7;make clean;make;make install;
正确结果:/usr/bin/install -c -m 755 apr-config.out /usr/local/apr/bin/apr-1-config
三、 安装APR-Util
1. 解压安装包
执行命令:cd /usr/local;tar -zxf /root/Tools/apr-util-1.2.7.tar.gz;
2. 配置Apr-util
执行命令:cd /usr/local/apr-util-1.2.7;./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-
util=/usr/local/apr/bin/apu-1-config --enable-modules=so --enable-dav --with-ldap;
正确结果:config.status: executing default commands
3. 安装Apr-util
执行命令:cd /usr/local/apr-util-1.2.7;make clean;make;make install;
正确结果:/usr/bin/install -c -m 755 apu-config.out /usr/local/apr/bin/apu-1-config
四、 安装Apache
Apache在安装的时候有几个地方需要注意。
首先--enable-dav --enable-so是后面安装其他引用包的前提,后续安装的包需要引入.so文件需要这两个参数的支持。
--with-config-file-path=/usr/local/apache/conf/httpd.conf
--with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr
这三个参数是Apache对于配置文件的定义和指向,与其他包的安装有密切的联系。
--enable-authnz-ldap --enable-ldap
这两个参数是打开Apache对于LDAP的支持,理论上使用了这两个参数就不需要安装LDAP模块,如果发现加上参数仍不能启用LDAP的话可以手动将Tools.zip内的LDAP模块引入安装
环境中。
1. 解压安装包
执行命令:cd /usr/local;tar -zxf /root/Tools/httpd-2.2.21.tar.gz;
2. 配置Apache
执行命令:cd /usr/local/httpd-2.2.21;./configure --prefix=/usr/local/apache --enable-track-vars --enable-cgi --enable-dav --enable-so -enable-maintainer-
mode -enable-rewrite --with-config-file-path=/usr/local/apache/conf/httpd.conf --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --enable-authnz-ldap
--enable-ldap;
正确结果:config.status: executing default commands
3. 安装Apache
执行命令:cd /usr/local/httpd-2.2.21;make clean;make;
正确结果:make[1]: Leaving directory /usr/local/httpd-2.2.21
执行命令:cd /usr/local/httpd-2.2.21;make install;
正确结果:make[1]: Leaving directory /usr/local/httpd-2.2.21
4. 设置Apache
执行命令:sed -i 's/#ServerName www.example.com:80/ServerName ###.###.###.###:80/g' /usr/local/apache/conf/httpd.conf
执行命令:rm -rf /usr/sbin/httpd;cp /usr/local/apache/bin/httpd /usr/sbin/;
5. Apache测试
执行命令:httpd -k restart;
打开浏览器输入 http://###.###.###.###:80如果能打开页面,提示如下内容则表示成功:
 
五、 安装Subversion
Subversion的两个安装包解压后会放到同一个文件夹。
-with-apxs=/usr/local/apache/bin/apxs
-with-apr=/usr/local/apr/bin/apr-1-config
-with-apr-util=/usr/local/apr/bin/apu-1-config
配置过程中的三个参数是对Apache和Apr、Apr-util的引用,和其他模块关联密切。
1. 解压安装包
执行命令:cd /usr/local;tar -zxf /root/Tools/subversion-1.6.12.tar.gz;
执行命令:cd /usr/local;tar -zxf /root/Tools/subversion-deps-1.6.12.tar.gz;
2. 配置Subversion
执行命令:cd /usr/local/subversion-1.6.12;./configure -prefix=/usr/local/subversion -with-apxs=/usr/local/apache/bin/apxs -with-apr=/usr/local/apr/bin/apr-
1-config -with-apr-util=/usr/local/apr/bin/apu-1-config --with-ssl --enable-maintainer-mode --without-berkeley-db PYTHON=/usr/bin/python --with-
swig=/usr/bin/swig --enable-shared --enable-static --enable-swig-binding=python;
正确结果:
 

3. 安装Subversion
执行命令:cd /usr/local/subversion-1.6.12;make clean;make;
正确结果:/usr/bin/msgfmt -c -o subversion/po/zh_TW.mo subversion/po/zh_TW.po
执行命令:cd /usr/local/subversion-1.6.12;make install;
正确结果:subversion/svnversion/svnversion . /repos/svn/trunk > /usr/local/svn/include/subversion-1/svn-revision.txt
执行命令:cd /usr/local/subversion-1.6.12;make swig-py;
正确结果:mkdir /usr/local/subversion-1.6.12/subversion/bindings/swig/python/libsvn
执行命令:cd /usr/local/subversion-1.6.12;make install-swig-py;
正确结果:Compiling /usr/local/subversion/lib/svn-python/svn/wc.py
4. 设置Subversion
执行命令:echo /usr/local/subversion/lib/svn-python > /usr/lib/python2.4/site-packages/subversion.pth
执行命令:rm -rf /usr/sbin/svn;cp /usr/local/subversion/bin/svn /usr/sbin/
5. 检查安装结果
安装成功的话,/usr/local/apache/modules 里应该有mod_dav_svn.so和mod_authz_svn.so。并且在/usr/local/apache/conf/httpd.conf能够检索到下列内容:
 
六、 设置Subversion仓库
1. 准备工作
需要一个新的用户用来管理Subversion。特别需要说明的是这个用户将会成为Subversion和Trac两个系统的属主。
执行命令:useradd pocsvn
2. 设置仓库环境
执行命令:rm -rf /home/pocsvn
执行命令:mkdir /home/pocsvn
执行命令:mkdir /home/pocsvn/project
执行命令:/usr/local/subversion/bin/svnadmin create /home/pocsvn/project/poc
3. 导入初始文件
/root/Tools/SVNTest为自己选择的初始导入内容,这一内容的SVN号为1
执行命令:/usr/local/subversion/bin/svn import /root/Tools/SVNTest file:///home/pocsvn/project/poc -m "my note"
4. 进阶配置
更改仓库路径属主。
执行命令:chown -R pocsvn:pocsvn /home/pocsvn/project
执行命令:chmod -R 700 /home/pocsvn/project
变更配置文件属主用户
执行命令:sed -i 's/User daemon/User pocsvn/g' /usr/local/apache/conf/httpd.conf
执行命令:sed -i 's/Group daemon/Group pocsvn/g' /usr/local/apache/conf/httpd.conf
为Apache添加连接
执行命令:echo  <Location /svn>\n DAV svn\n SVNParentPath /home/pocsvn/project\n AuthType Basic\n AuthName \"Welcome BWBuilder SVN system! \"\n AuthUserFile
/home/pocsvn/project/passwd\n AuthzSVNAccessFile /home/pocsvn/project/poc/conf/authz\n Require valid-user\n </Location> >> /usr/local/apache/conf/httpd.conf
执行命令:httpd -k restart
执行命令:touch /home/pocsvn/project/passwd
5. 登录及权限配置
 SVN默认方式
执行命令:/usr/local/apache/bin/htpasswd -c /home/pocsvn/project/passwd ASer(手动设置SVN用户ASer的密码)
执行命令:vim /home/pocsvn/project/poc/conf/authz
在[groups]后添加下列内容
admin = ASer
[poc:/]
ASer = rw
@admin = rw
[/]
* = r
 LDAP方式
在/usr/local/apache/conf/httpd.conf文件结尾填写如下内容:
<Location /svn/repo>
DAV svn
SVNPath /home/pocsvn/project/repo
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthType Basic
AuthName "Welcome BWBuilder SVN system!"
AuthLDAPURL " ldap://10.10.1.28/ou=people,dc=ict,dc=ac,dc=cn?uid"
Require valid-user
</Location>
这里步骤应放在最后执行。
执行命令:httpd -k restart
6. 测试Subversion
打开浏览器输入 http://###.###.###.###:80/svn/poc/
如果打开的页面显示的是之前手动导入的文档,则SVN配置成功。
七、 安装Trac
1. 环境检查
 Setuptools
Setuptools是一个基于python软件的下载安装工具。以下在安装Trac过程中会使用setuptools中的easy_install。
检验Setuptools是否已经安装:
 
如果有如图显示,说明setuptools已经安装。
如果没有安装可以如下安装:
python ez_setup.py
 Genshi
执行命令:easy_install Genshi;
 PySQLite
SQLite3的python访问接口。
以下的命令可以检验PySQLite是否已经安装:
 
如上图所示,表示PySQLite已经安装。
如果没有安装,可以如下安装:
执行命令:cd pysqlite-2.6.0; python setup.py install
注:此处最好手动安装一次,否则有可能在后面配置的时候失败。
 SWIG
可以用以下命令确定SWIG是否已经安装:
 
如果如上图所示,表示SWIG已经安装。
如果没有,则表示第五步执行异常。需跳回第五步重新安装。
 Subversion with SWIG python bindings
Subversion可以用svn –version确定是否已经安装:
 
Subversion的SWIG python binding可以用以下命令确定是否已经安装:
 
没有报错就说明已经安装了。
同样,如果没有,则表示第五步执行异常。需跳回第五步重新安装。
2. 安装Trac
执行命令:easy_install Trac
3. 配置Trac项目
执行命令:mkdir /data;mkdir /data/myproject;trac-admin /data/myproject/bwfs initenv;
注:笔者这里安装的是trac 0.12版本,安装的过程会提示输入项目名,这里以BWFS为例,第二项会要求选择数据,这里直接按回车使用默认的sqlite数据库就可以。
4. 独立运行Trac
配置完成后Trac就可以独立运行了:
tracd –port 8000 /subversion/trac/bwfs
http://###.###.###.###/bwfs
5. 配置TRAC_ADMIN权限
执行命令:trac-admin /data/myproject/bwfs permission add #### TRAC_ADMIN
6. 配置Trac挂接SVN
将mv post-commit.tmpl post-commit文件复制到/data/myproject/bwfs下。
执行命令:mv post-commit.tmpl post-commit
执行命令:chmod 755 post-commit
然后在编辑post-commit脚本:
REPOS="$1"
REV="$2"
TRAC_ENV="/data/myproject/bwfs"
/usr/bin/python /usr/local/bin/trac-post-commit-hook -p "$TRAC_ENV" -r "$REV"
最后复制trac-post-commit-hook文件到/usr/local/bin目录。
八、 在Apache中运行Trac
1. 配置mod_python
执行命令:cd /usr/local/; tar -zxf /root/Tools/mod_python-3.3.1.tgz;
执行命令:cd /usr/local/mod_python-3.3.1;./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/bin/python;
正确结果:config.status: creating dist/Makefile
执行命令:cd /usr/local/mod_python-3.3.1;make;make install;
2. 配置Apache
执行命令:vim /usr/local/apache/conf/httpd.conf
在文件中间位置
# Example:
# LoadModule foo_module modules/mod_foo.so
下方添加如下内容:
LoadModule python_module      modules/mod_python.so
为了使用Apache打开Trac系统,需要在配置文件中添加下列配置文件。其中“<Location /trac>”对应的是打开http连接时的地址路径,/trac/login对应的是使用LDAP登录Trac
的权限管理。
在文件结尾处添加如下内容:
<Location /trac>
        SetHandler mod_python
        PythonHandler trac.web.modpython_frontend
        PythonOption TracEnv "/data/myproject/bwfs"
        PythonOption TracUriRoot "/trac"
        SetEnv PYTHON_EGG_CACHE /tmp/trac-eggs
</Location>
<Location /trac/login>
        AuthType Basic
        AuthName "Please Login"
        AuthBasicProvider ldap
        AuthLDAPURL " ldap://10.10.1.28/ou=people,dc=ict,dc=ac,dc=cn?uid"
        AuthzLDAPAuthoritative off
        require valid-user
</Location>
执行命令:chown –R pocsvn:pocsvn /data/myproject/bwfs;
3. 整体测试
注:测试前执行ps aux | grep httpd,kill 掉root执行的httpd进程。
 
执行命令:httpd –k restart
打开浏览器,输入 http://###.###.###.###/trac/
九、 安装Bitten Master
1. 解压安装包
执行命令:cd /usr/local;tar -zxvf /root/Tools/Bitten-0.6.tar.gz;
2. 安装Bitten
执行命令:cd /usr/local/ Bitten-0.6; python setup.py install;
正确结果:Finished processing dependencies for Bitten==0.6
安全起见可以运行一次单元测试已确保代码正确:
执行命令:python setup.py test
正确结果:OK
3. 开放Bitten
执行命令:vim /data/myproject/bwfs/conf/trac.ini;
在文件内添加下列内容:
[bitten]
adjust_timestamps = False
build_all = False
logs_dir = log/bitten
quick_status = yes
slave_timeout = 100000
stabilize_wait = 0
[components]
bitten.* = enabled
在文件中找到repository_dir =
在这里填写所需的SVN仓库路径,如:/home/pocsvn/project/release
4. 更新Trac数据库
执行命令:trac-admin /data/myproject/bwfs upgrade;
5. 赋予Bitten的权限
执行命令:trac-admin /data/myproject/bwfs permission add ### BUILD_ADMIN
6. 整体测试
注:测试前执行ps aux | grep httpd,kill 掉root执行的httpd进程。
 
执行命令:httpd –k restart
打开浏览器,输入 http://###.###.###.###/trac/build
配置成功的界面如下图所示:
 
其中Admin是用户拥有Trac_ADMIN权限,Build Status是正确安装Bitten的结果。
7. 还原Trac Build
当执行还原Trac数据库和SVN仓库时,首先配置好trac.ini文件。
执行命令:trac-admin /data/myproject/bwfs/ repository resync '(default)'
伴随数据库的更新同样需要执行下列命令:
执行命令:trac-admin /data/myproject/bwfs permission add #### TRAC_ADMIN
执行命令:trac-admin /data/myproject/bwfs permission add #### BUILD_ADMIN
执行命令:trac-admin /data/myproject/bwfs upgrade;
十、 安装viewvc
ViewVC (前身是ViewCVS)是CVS和SVN版本控制系统的Web浏览界面,使用 ViewVC可以浏览版本库中的目录/文件、以及每个文件的历史版本记录等,同时还可以显示和下载文件
等操作。
1. 解压安装包
执行命令:cd /usr/local/;tar –zxvf /root/Tools/viewvc-1.1.12.tar.gz
2. 安装viewvc
执行命令:cd /usr/local/viewvc-1.1.12;python viewvc-install
3. 复制cgi到svn根目录
执行命令:cp /usr/local/viewvc-1.1.12/bin/cgi/*.cgi /home/pocsvn/project/
4. 修改viewvc的conf
执行命令:vim /usr/local/viewvc-1.1.12/viewvc.conf
修改genneral段:
svn_roots = svnrepos: /home/pocsvn/project/
root_parents = /home/pocsvn/project: svn
mime_types_files = mimetypes.conf
修改[utilities]
svn = /usr/sbin/svn
diff = /usr/bin/diff
5. 修改apache的conf文件
执行命令:vim /usr/local/apache/conf/httpd.conf
在对应位置增加:
    ScriptAlias /viewvc /usr/local/viewvc-1.1.12/bin/cgi/viewvc.cgi
    ScriptAlias /query /usr/local/viewvc-1.1.12/bin/cgi/query.cgi
<Directory "/usr/local/viewvc-1.1.12">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>
6. 重启apache
执行命令:httpd –k restart
7. 在页面访问svn:
http://10.10.170.15/viewvc/

至此整个搭建过程到此结束。