SCM Example Trac (简体中文)
本指南介绍如何在私人和安全的环境下架设多项目的 Trac/Subversion,例如给一个开发组假设环境。
Contents
基本环境
网络
- URL: http://scm.example.com
- Subversion URL: http://scm.example.com/svn/MY_PROJECT
- Trac URL: http://scm.example.com/trac/MY_PROJECT
数据库
- PostgreSQL 并且提供认证方法
文件系统
- 配置文件位于
/mnt/rpo/conf
- Subversion 源位于
/mnt/rpo/svn
- Trac 项目目录位于
/mnt/rpo/trac
安装软件包
安装下列软件包:
- apache
- mod_python
- postgresql
- pypgsql
- setuptools
- subversion
- trac
禁用连接池
编辑 /usr/lib/python2.5/site-packages/trac/db/postgres_backend.py
:
class PostgreSQLConnection ...... poolable = False # Change this line
设置基本环境
创建目录:
mkdir -p /mnt/rpo/conf mkdir -p /mnt/rpo/svn mkdir -p /mnt/rpo/trac
创建用户列表
创建一个新列表并添加初始用户:
htdigest -c /mnt/rpo/conf/scm-user scm FIRST_USER
添加其他用户:
htdigest /mnt/rpo/conf/scm-user scm OTHER_USER
可以编辑scm-user
文件删除或更改用户名
创建数据库
创建 trac 用户和数据库:
/etc/rc.d/postgresql start psql -U postgres postgres postgres=# CREATE USER trac; postgres=# CREATE DATABASE trac OWNER = trac; postgres=# \q
配置Web服务器
编辑/etc/httpd/conf/httpd.conf
:
LoadModule dav_module lib/apache/mod_dav.so LoadModule dav_svn_module lib/apache/mod_dav_svn.so LoadModule python_module lib/apache/mod_python.so # Inside some virtual host if the server is not dedicated to scm DocumentRoot "/var/empty" <Location /> Require valid-user AuthType Digest AuthName "svnrepos" AuthDigestDomain http://scm.example.com/ AuthDigestProvider file AuthUserFile /mnt/rpo/conf/scm-user </Location> <Location /svn> DAV svn SVNParentPath /mnt/rpo/svn SVNPathAuthz off </Location> <Location /trac> SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnvParentDir /mnt/rpo/trac PythonOption TracUriRoot /trac </Location>
创建项目
每个项目都包含一个 svn 源和一个 trac 项目,具有独立的 wiki 和访问控制。
创建 svn 源:
svnadmin create /mnt/rpo/svn/MY_PROJECT
初始化项目目录:
trac-admin /mnt/rpo/trac/MY_PROJECT initenv
数据库连接字串postgres://trac:password@localhost/trac?schema=MY_PROJECT
(每个项目必须给出不同的 schema,不需要提前创建 schemas)
为所有登录用户开启管理员权限:
trac-admin /mnt/rpo/trac/MY_PROJECT permission add authenticated TRAC_ADMIN
编辑 /mnt/rpo/trac/MY_PROJECT/conf/trac.ini
:
- 将
repository_type
修改为svn
- 将
repository_path
修改为/mnt/rpo/svn/MY_PROJECT
- 将
default_charset
修改为utf-8
或其它编码
允许 web admin (http://scm.example.com/trac/MY_PROJECT/admin):
echo -e "[components]\nwebadmin.* = enabled" >> /mnt/rpo/trac/MY_PROJECT/conf/trac.ini