分享

Install Trac under Ubuntu

 lwj888 2007-04-17

trac 简介

trac 是一个用 Python 编写的相当好的 Issue trace 工具。提供了如下的功能:

  • 增强的 Wiki
  • Issue Trace
  • Bugs 报告
  • 项目任务
  • 性能要求
  • Timeline 功能
  • Subversion 仓库浏览
  • 更改源码

trac 的配置方式

  • 与 Web 服务器配合,使用 CGI 或 FastCGI 或 mod_python 配置
  • tracd:独立服务器
  • 本教程只介绍 mod_python 的 trac 服务器配置
  • 首先按照 subversion 节配置 Subversion 服务器

配置

安装 trac

sudo apt-get install trac python-docutils libapache2-mod-python python2.4-clearsilver sqlite3 python2.4-pysqlite2

创建 trac 的项目环境

S1. 创建环境

sudo mkdir /home/trac
sudo trac-admin /home/trac/myproject initenv
Creating a new Trac environment at /home/trac/myproject

Trac will first ask a few questions about your environment
in order to initalize and prepare the project database.

Please enter the name of your project.
This name will be used in page titles and descriptions.

Project Name [My Project]> myproject # 输入项目名称

Please specify the connection string for the database to use.
By default, a local SQLite database is created in the environment
directory. It is also possible to use an already existing
PostgreSQL database (check the Trac documentation for the exact
connection string syntax).

Database connection string [sqlite:db/trac.db]> # 使用默认的 SQLite 数据库,直接回车即可

Please specify the absolute path to the project Subversion repository.
Repository must be local, and trac-admin requires read+write
permission to initialize the Trac database.

Path to repository [/var/svn/test]> /home/svn/repository1 # 输入 Subversion 仓库的路径

Please enter location of Trac page templates.
Default is the location of the site-wide templates installed with Trac.

Templates directory [/usr/share/trac/templates]> # 使用默认的 Trac page templates,直接回车即可

Creating and Initializing Project
Configuring Project
trac.repository_dir
trac.database
trac.templates_dir
project.name
Installing default wiki pages
/usr/share/trac/wiki-default/TracReports => TracReports
/usr/share/trac/wiki-default/TracModPython => TracModPython
/usr/share/trac/wiki-default/TracNotification => TracNotification
/usr/share/trac/wiki-default/RecentChanges => RecentChanges
/usr/share/trac/wiki-default/TracRoadmap => TracRoadmap
/usr/share/trac/wiki-default/WikiDeletePage => WikiDeletePage
/usr/share/trac/wiki-default/TracChangeset => TracChangeset
/usr/share/trac/wiki-default/TracEnvironment => TracEnvironment
/usr/share/trac/wiki-default/TracFastCgi => TracFastCgi
/usr/share/trac/wiki-default/WikiMacros => WikiMacros
/usr/share/trac/wiki-default/TracLogging => TracLogging
/usr/share/trac/wiki-default/TracAccessibility => TracAccessibility
/usr/share/trac/wiki-default/TracTicketsCustomFields => TracTicketsCustomFields
/usr/share/trac/wiki-default/WikiHtml => WikiHtml
/usr/share/trac/wiki-default/WikiStart => WikiStart
/usr/share/trac/wiki-default/WikiPageNames => WikiPageNames
/usr/share/trac/wiki-default/WikiRestructuredText => WikiRestructuredText
/usr/share/trac/wiki-default/CamelCase => CamelCase
/usr/share/trac/wiki-default/TracTickets => TracTickets
/usr/share/trac/wiki-default/TracSupport => TracSupport
/usr/share/trac/wiki-default/TracStandalone => TracStandalone
/usr/share/trac/wiki-default/TracInterfaceCustomization => TracInterfaceCustomization
/usr/share/trac/wiki-default/TracAdmin => TracAdmin
/usr/share/trac/wiki-default/SandBox => SandBox
/usr/share/trac/wiki-default/TracGuide => TracGuide
/usr/share/trac/wiki-default/TracLinks => TracLinks
/usr/share/trac/wiki-default/TracQuery => TracQuery
/usr/share/trac/wiki-default/TracUnicode => TracUnicode
/usr/share/trac/wiki-default/TracUpgrade => TracUpgrade
/usr/share/trac/wiki-default/WikiNewPage => WikiNewPage
/usr/share/trac/wiki-default/TitleIndex => TitleIndex
/usr/share/trac/wiki-default/TracWiki => TracWiki
/usr/share/trac/wiki-default/TracBackup => TracBackup
/usr/share/trac/wiki-default/TracPermissions => TracPermissions
/usr/share/trac/wiki-default/TracImport => TracImport
/usr/share/trac/wiki-default/TracInstall => TracInstall
/usr/share/trac/wiki-default/TracPlugins => TracPlugins
/usr/share/trac/wiki-default/TracSyntaxColoring => TracSyntaxColoring
/usr/share/trac/wiki-default/TracTimeline => TracTimeline
/usr/share/trac/wiki-default/WikiRestructuredTextLinks => WikiRestructuredTextLinks
/usr/share/trac/wiki-default/TracBrowser => TracBrowser
/usr/share/trac/wiki-default/TracCgi => TracCgi
/usr/share/trac/wiki-default/TracIni => TracIni
/usr/share/trac/wiki-default/TracRss => TracRss
/usr/share/trac/wiki-default/WikiFormatting => WikiFormatting
/usr/share/trac/wiki-default/TracSearch => TracSearch
/usr/share/trac/wiki-default/WikiProcessors => WikiProcessors
Indexing repository

---------------------------------------------------------------------
Project environment for ‘myproject‘ created.

You may now configure the environment by editing the file:

/home/trac/myproject/conf/trac.ini

If you‘d like to take this new project environment for a test drive,
try running the Trac standalone web server `tracd`:

tracd --port 8000 /home/trac/myproject

Then point your browser to http://localhost:8000/myproject.
There you can also browse the documentation for your installed
version of Trac, including information on further setup (such as
deploying Trac to a real web server).

The latest documentation can also always be found on the project
website:

http://projects./trac/

Congratulations!

请用您的项目名替换上面的 “myproject” 。

S2. 修改 trac 环境配置文件

当 trac 的环境创建以后,trac 环境的配置文件为存放在项目目录 /home/trac/myproject 下的 conf/trac.ini。

可以显示该文件查看默认的参数值,并做适当修改

/home/trac/myproject/conf/trac.ini

[wiki]
ignore_missing_pages = false

[header_logo]
src = common/trac_banner.png
alt = Trac
height = 73
link = http://trac./
width = 236

[logging]
log_file = trac.log
log_level = DEBUG
log_type = file # 建议改为 file ,生成 trac.log 的日志文件

[trac]
default_charset = utf-8 # 建议将默认字符集改为 utf-8
ignore_auth_case = false
permission_store = DefaultPermissionStore
check_auth_ip = true
database = sqlite:db/trac.db
templates_dir = /usr/share/trac/templates
default_handler = WikiModule
metanav = login,logout,settings,help,about
mainnav = wiki,timeline,roadmap,browser,tickets,newticket,search
repository_dir = /home/svn/repository1

[notification]
always_notify_owner = false
smtp_always_cc =
smtp_password =
smtp_enabled = false
smtp_replyto = trac@localhost
smtp_port = 25
always_notify_reporter = false
smtp_server = localhost
smtp_from = trac@localhost
smtp_user =

[project]
url = http:///
footer = Visit the Trac open source project at<br /><a href="http://trac./">http://trac./</a>
name = myproject
descr = My example project
icon = common/trac.ico

[mimeviewer]
php_path = php
enscript_path = enscript
tab_width = 8
max_preview_size = 262144

[attachment]
render_unsafe_content = false
max_size = 262144

[timeline]
changeset_show_files = 0
ticket_show_details = false
default_daysback = 30

[ticket]
default_version =
default_component = component1
default_type = defect
restrict_owner = false
default_milestone =
default_priority = major

[browser]
hide_properties = svk:merge

参考

S3. 测试

可以运行独立的 tracd 进行测试
tracd --port 8000 /home/trac/myproject

在浏览器的 URL 里输入 http://localhost:8000 对 trac 服务器进行测试。

Standalone 方式只能由本机访问。测试完毕请杀掉 tracd 进程。

配置 Apache

S1. 修改 trac 环境的权限以便与 Apache 结合

sudo find /home/trac/myproject -type f -exec chmod 0664 {} \;
sudo find /home/trac/myproject -type d -exec chmod 2775 {} \;
sudo chown -R root.www-data /home/trac/myproject
  1. trac 环境的属主是 root ,配置了读写权限
  2. trac 环境的组是 www-data ,配置了读写权限并设置了 sgid
  3. Apache 默认以 用户 www-data;组 www-data 运行

S2. 创建 /etc/apache2/conf.d/trac,添加如下的配置行

/etc/apache2/conf.d/trac

    <Location /trac>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /home/trac/myproject
PythonOption TracUriRoot "/trac"
</Location>
<Location "/trac/login">
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</Location>
<=====
The login URL is per project, so that should be:
<LocationMatch "/[^/]+/login">
 #...
</LocationMatch>
Or if you‘ll be following the separate paths as mentioned above:
<LocationMatch "/trac/[^/]+/login">
=====>

在本配置中,身份验证使用了与 Subversion 相同的认证文件。

S3: 重新启动 Apache

sudo a2enmod mod_python
sudo /etc/init.d/apache2 restart

S4: 测试

  1. 所有用户可以浏览 trac :打开浏览器访问 http://localhost/trac
  2. 测试 user1 — user4 的可登录性

参考

配置 trac 的权限管理

trac 与 Apache 结合运行时,trac 的用户身份认证使用 Apache 的用户认证,即通过 htpasswd 命令设置的,根据上面的 Apache 配置,用户名和密码存放在 /etc/apache2/dav_svn.passwd 文件中。

但是,当用户通过用户认证之后,他都可以进行哪些操作是由 trac 所提供的 trac-admin 命令来设置的,使用这个命令可以为用户或组分配权限。

使用如下命令可以列出已设置的许可权限和当前有效的许可权限。

sudo trac-admin /home/trac/myproject  permission list
 
User Action
--------------------------
anonymous BROWSER_VIEW
anonymous CHANGESET_VIEW
anonymous FILE_VIEW
anonymous LOG_VIEW
anonymous MILESTONE_VIEW
anonymous REPORT_SQL_VIEW
anonymous REPORT_VIEW
anonymous ROADMAP_VIEW
anonymous SEARCH_VIEW
anonymous TICKET_CREATE
anonymous TICKET_MODIFY
anonymous TICKET_VIEW
anonymous TIMELINE_VIEW
anonymous WIKI_CREATE
anonymous WIKI_MODIFY
anonymous WIKI_VIEW
 
 
Available actions:
BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, FILE_VIEW, LOG_VIEW,
MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE, MILESTONE_MODIFY,
MILESTONE_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE, REPORT_MODIFY,
REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW, SEARCH_VIEW,
TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, TICKET_MODIFY,
TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, WIKI_CREATE,
WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW

上面第一部分列出的是默认的权限设置。即只对匿名用户(非登录用户)的权限进行了设置。

Available actions 部分显示了有效许可权限的列表。其中 TRAC_ADMIN 权限相当于 Linux 中的 root 用户,拥有最高的权限。

参考

下面给出一个 trac 权限设置的例子:

S1. 添加一个 admin 组并赋予 TRAC_ADMIN 权限,然后将 user1 和 user2 添加到 admin 组

sudo trac-admin /home/trac/myproject permission add admin TRAC_ADMIN
sudo trac-admin /home/trac/myproject permission add user1 admin
sudo trac-admin /home/trac/myproject permission add user2 admin

S2. 添加一个 developer 组并赋予 WIKI_ADMIN、REPORT_ADMIN、TICKET_MODIFY 权限,然后将 user3 和 user4 添加到 developer 组

sudo trac-admin /home/trac/myproject permission add developer WIKI_ADMIN
sudo trac-admin /home/trac/myproject permission add developer REPORT_ADMIN
sudo trac-admin /home/trac/myproject permission add developer TICKET_MODIFY
sudo trac-admin /home/trac/myproject permission add user3 developer
sudo trac-admin /home/trac/myproject permission add user4 developer

S3. 删除默认赋予 anonymous 用户的 WIKI_CREATE 权限

sudo trac-admin /home/trac/myproject permission remove anonymous WIKI_CREATE

S4: 测试

  1. 打开浏览器访问 http://192.168.0.222/trac
  2. 测试 anonymous 的权限 (不能创建新的 Wiki 页)
  3. 以 user1 或 user2 登录
  4. 测试 user1 或 user2 的权限 (具有一切权限)
  5. 以 user3 或 user4 登录
  6. 测试 user3 或 user4 的权限
trac 有两个默认的用户,一个是 anonymous,表示匿名用户;另一个是 authenticated,表示所有已通过身份认证的用户。可以把许可权限赋予这两个用户,从而简化许可权限配置。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多