• ubuntu14.04上Trac配置记录


    系统环境: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 = -1
    link = http://www.ucrobotics.com
    src = /themes/garamond/img/header-icon.gif
    width = -1

    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    2014-07-14 13:09:16.130643165 +0800
    +++ translation.py    2014-07-14 13:26:42.038584449 +0800
    @@ -146,7 +146,8 @@
                     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',
    @@ -175,14 +176,20 @@
     
             @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[2] 
    +
     
             # Delegated methods

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

  • 相关阅读:
    【java8】慎用java8的foreach循环(作废)
    【Java并发系列03】ThreadLocal详解
    【Java并发系列04】线程锁synchronized和Lock和volatile和Condition
    【Java并发系列02】Object的wait()、notify()、notifyAll()方法使用
    【Java并发系列01】Thread及ThreadGroup杂谈
    java安全管理器SecurityManager入门
    【DWR系列06】- DWR日志及js压缩
    时间插件
    springMVC中Restful支持
    面向接口编程
  • 原文地址:https://www.cnblogs.com/wzc0066/p/3842613.html
Copyright © 2020-2023  润新知