SCM Example Trac (简体中文)

From ArchWiki
Jump to: navigation, search

本指南介绍如何在私人和安全的环境下架设多项目的 Trac/Subversion,例如给一个开发组假设环境。

基本环境

网络

数据库

  • 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