系统环境:ubuntu14.04 (并假设Apache2服务可以正常运行)

1. 安装软件:

sudo aptitude install trac python-mysqldb

2. 创建数据库
Trac可支持的数据库有:sqlite, postgresql及mysql等。默认的是sqlite,但这里选用的是mysql。

$ mysql -uroot -p
Enter password: ******
mysql> CREATE DATABASE $myproject DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
mysql> show databases;
mysql> exit

说明:Trac可以管理很多个项目,所以每个项目都需要创建自己的数据库。

3. 创建Trac环境的根目录

sudo mkdir /var/www/trac 

因为Trac是需要与Apache2服务绑定的,所以一般放到/var/www下,当然了用户也可根据喜好随意设置位置。

4. 创建Trac项目

cd /var/www/trac
sudo mkdir test
sudo trac-admin test initenv
>>projectname: test
>>conn database: mysql://root:******@localhost/test

说明:数据库名称,项目名称最好都保持一致,免得容易混淆。这里的“Test” 即前面的 $myproject。

然后更改权限:

sudo chown -R www-data:www-data trac
sudo chmod -R g+rsw trac

5. 绑定Apache2服务

编辑配置文件:/etc/apache2/apache2.conf,在文件最后添加如下内容:

<Location "/trac">
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/www/trac
PythonOption TracUriRoot /trac
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/apache2/.svn_and_trac.htpasswd
Require valid-user
</Location>

认证方式为“Basic”,密码文件位置/etc/apache2/.svn_and_trac.htpasswd

上面配置也可以写成:

<Location "/trac">
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/www/trac
PythonOption TracUriRoot /trac
</Location>
<LocationMatch "/trac/[^/]+/login">
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/apache2/.svn_and_trac.htpasswd
Require valid-user
</LocationMatch>

跟上面的区别是,第一种配置为强制登录认证,不允许匿名访问;第二种则不强制。

确认以下模块(都在/etc/apache2/mods-enabled目录下)都已经启动起来,可通过以下命令确认:

sudo a2enmod env
sudo a2enmod auth_basic
sudo a2enmod python

6. 创建密码文件

Apache2认证的方式按照级别递增的顺序可分为:Basic, Digest, SSL; 前两种是通过http方式访问的,SSL是通过https,配置稍复杂。

这里使用的Basic认证:

$ htpasswd -c /etc/apache2/.svn_and_trac.htpasswd $username

参数“-c”表示第一次创建密码文件。如果后续需要追加用户,就不可使用参数“-c”了。如果将命令htpasswd替换成命令htdigest,则创建就是Digest认证文件了。

补充说明一下下面的几个命令:
* a2dismod ------> disable一个Apache2模块,即从mods-enabled/目录中删除该模块的链接
* a2dissite ------> disable一个Apache2配置,即从sites-enabled/目录中删除该配置的链接
* a2enmod ------> enable一个Apache2模块,即在mods-enabled/目录中创建一个到mods-available/的模块的链接
* a2ensite ------> enable一个Apache2配置,即在sites-enabled/目录中创建一个到sites-available/的配置的链接
说明:在/etc/apache2的配置文件目录下一般有如下目录:
* mods-available/ ------> 所有已安装的Apache2模块
* mods-enabled/ ------> 已经被开启正被使用的Apache2模块,都是链接到mods-available/的链接文件
* sites-available/ ------> 所有可支持的Apache2启动配置文件
* sites-enabled/ ------> 默认被使用的Apache2启动配置文件,都是链接到sites-available/的链接文件

7. 更改Trac环境的logo
编辑文件trac/$myproject/conf/trac.ini,相应部分更改如下:

[header_logo]
alt = (logo of ucrobotics)
height = -
link = http://www.ucrobotics.com
src = /themes/garamond/img/header-icon.gif
width = -

8. 添加管理权限

sudo trac-admin /var/www/trac/test permission add $username TRAC_ADMIN 

对于具有管理权限的用户,在通过浏览器访问Trac环境的时候,其导航栏的最右边会有一个“Admin”的链接,进入之后可以对其它用户的权限进行配置。
一般来说,具有管理权限的用户可以通过Web界面进行管理操作了,但若是需要通过命令行进行操作,可参考:wiki:TracAdmin

9. 重启Apache2服务测试

sudo /etc/init.d/apache2 restart 

测试地址:http://localhost/trac

附录一:配置Trac有两种方式:做为CGI(CGI、WSGI、FCGI)以及使用mod-python。

上面展示的是mod-python方式,如果是CGI,可通过如下命令生成CGI文件(供参考):

sudo trac-admin /var/www/trac/test deploy /tmp/deploy
sudo mv /tmp/deploy/cgi-bin /var/www
sudo mv /tmp/deploy/htdocs /var/www/htdocs.trac.bak (暂时没用到这个目录)

注意:这里将生成的CGI文件直接拷贝到/var/www下了,这样一来,以后再创建其它新的Trac环境就不需要再生成新的CGI文件了。
给这些新生成的文件一起赋予权限:

sudo chown -R www-data:www-data trac cgi-bin htdocs.trac.bak
sudo chmod -R g+rsw trac cgi-bin htdocs.trac.bak

附录二:运行过程中遇到的错误解决

错误内容如下:

ERR1: AttributeError: NullTranslationsBabel instance has no attribute 'isactive'
ERR2: AttributeError: 'NullTranslations' object has no attribute 'add'

解决方法是修改文件:/usr/share/pyshared/trac/util/translation.py,修改log如下:

$ diff -Nur translation.py.orig translation.py
--- translation.py.orig -- ::16.130643165 +
+++ translation.py -- ::42.038584449 +
@@ -, +, @@
self._activate_failed = True
return
t = Translations.load(locale_dir, locale or 'en_US')
- if not t or t.__class__ is NullTranslations:
+ #if not t or t.__class__ is NullTranslations:
+ if not isinstance(t, Translations):
t = self._null_translations
else:
t.add(Translations.load(locale_dir, locale or 'en_US',
@@ -, +, @@ @property
def isactive(self):
- if self._current.args is not None:
- get_locale, env_path = self._current.args
- self._current.args = None
- self.activate(get_locale(), env_path)
- # FIXME: The following always returns True: either a translation is
- # active, or activation has failed.
- return self._current.translations is not None \
- or self._activate_failed
+ try:
+ if self._current.args is not None:
+ get_locale, env_path = self._current.args
+ self._current.args = None
+ self.activate(get_locale(), env_path)
+ # FIXME: The following always returns True: either a translation is
+ # active, or activation has failed.
+ return self._current.translations is not None \
+ or self._activate_failed
+ except AttributeError, e:
+ import sys
+ exc_info = sys.exc_info()
+ raise Exception, unicode(e), exc_info[]
+ # Delegated methods

参考:http://webplay.pro/linux/ubuntu/install-trac-1-1-2-dev-on-ubuntu-12-04.html

ubuntu14.04上Trac配置记录的更多相关文章

  1. 【转】Linux(ubuntu14.04)上编译Android4.4源码的环境搭建及编译全过程

    原文网址:http://jileniao.net/linux-android-building.html sublime text让我伤心.本来很信任sublime text的自动保存功能,之前使用一 ...

  2. 菜鸟玩云计算之十六:Ubuntu14.04上创建的虚拟机迁移到RHEL6.4

    菜鸟玩云计算之十六:Ubuntu14.04上创建的RHEL6.4虚拟机迁移到RHEL6.4主机上 RHEL6.4 Server作为虚拟机的HOST,执行以下的命令检查配置和安装相关软件: # egre ...

  3. ubuntu14.04上实现faster rcnn_TF的demo程序及训练过程

    安装环境:Ubuntu14.04.显卡Tesla K40C+GeForce GT 705.tensorflow1.0.0.pycharm5.0 说明:原文见博客园,有问题原文下留言,不定期回复.本文作 ...

  4. 在ubuntu14.04上搭建OpenVPN服务

    简介 在连接了不可信的网络环境后,让手机或者计算机安全的访问互联网,使用虚拟专用网络(Virtual Private Network,VPN)是一个解决办法.OpenVPN是一个SSL VPN完整解决 ...

  5. Ubuntu14.04上深度学习Caffe库安装指南(CUDA7.5 + opencv3.1)

    Ubuntu14.04上Caffe安装指南 安装的准备工作 首先,安装官方版Caffe时.假设要使用Cuda.须要确认自己确实有NVIDIA GPU. 安装Ubuntu时,将/boot 分区分大概20 ...

  6. [译]How to Install Node.js on Ubuntu 14.04 如何在ubuntu14.04上安装node.js

    原文链接为 http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/ 由作者Jacob Nicholson 发表于October ...

  7. Ubuntu14.04上安装pip的方法

    在Ubuntu14.04上,建议通过下面的方法安装,这是一种通用的方法,也适用于Windows,当然在Windows下 手动下载下来就行了 wget https://bootstrap.pypa.io ...

  8. Ubuntu14.04 Tomcat 安装过程记录

    Ubuntu14.04 Tomcat 安装过程记录 检查java的版本 zhousp@ubuntu:~$ sudo java -version [sudo] password for zhousp: ...

  9. Ubuntu14.04上修改主机名

    Ubuntu14.04上修改主机名 author:headsen chen  2017-10-12 15:41:31 个人原创,转载请注明作者,出处,否则依法追击法律责任 查看主机名:hostname ...

随机推荐

  1. 《On Lisp》第四章第三节图4.3中的prune函数fix

    这个函数作者的原意是删除表中test位真的部分,并且表按原样返回. 作者给出的的测试用例如下: (prune #'evenp '(1 2 (3 (4 5) 6) 7 8 (9))) 返回结果是: (1 ...

  2. 限制scrollView的上下移动

    只要把scrollView.contentSize 中的hight高设为0,就不会上下移动了.如果不想水平移动,就把宽设0.

  3. Android_AsyncTaskDemo之QQ记步数(画圆形图片知识)

    今天学习了AsyncTask Android 的异步机制.我简单的实现我的一个小小案例--qq记步数.然后穿插一个画圆形图片的知识点. 由于所学知识有限,目前我计数,还有排名等等我就简单的利用随机数实 ...

  4. ROW_NUMBER over (order by **)

    ROW_NUMBER必须指写over (order by **),有时我根本就不想排序,想按原始顺序 )) AS ROWNUM,* FROM t

  5. -[UIKeyboardLayoutStar release]: message sent to deallocated instance 0x7fbe49120000

    __NSArrayM objectAtIndex: 取消swizzle 只有debug的时候会报错,发布的时候是好的,所以可以不用改

  6. MVC NPOI Linq导出Excel通用类

    之前写了一个模型导出Excel通用类,但是在实际应用中,可能不是直接导出模型,而是通过Linq查询后获取到最终结果再导出 通用类: public enum DataTypeEnum { Int = , ...

  7. 假装这些是MyEclipse的快捷键(1)

    Java快捷键 Alt + / 代码自动补全Alt + Shift + S 功能菜单 Ctrl + 1 代码自动修正Ctrl + / 单行注释/取消Ctrl + O 查看类的所有方法Ctrl + T ...

  8. C#读写XML

    1.根据xml格式的string生成xml文件并保存到本地 /// <summary> /// 保存XML到磁盘 /// </summary> /// <param na ...

  9. Linux下错误的捕获:全局变量errno和strerror()

    经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因.这个时候使用 ...

  10. Android 7.0 UICC 分析(一)

    UICC(Universal Intergrated Circuit Card) 框架 * Following is class diagram for uicc classes: * * UiccC ...