wiki:waue/TracInstall

Trac on Ubuntu

緣由

由於Jazz大力推薦,使用Trac已經好一陣子,覺得是一個不錯的文件工作管理系統。不過都用Jazz架好的系統,也想要自己試一下怎麼安裝架設。除此之外,trac的預設CSS還有更符合個人瀏覽習慣的改進空間,加上一些trac的plug in也想試試看。 我的安裝環境於 Ubuntu 8.04 & trac 0.11,參考主要是官方網站:

安裝Trac於各種不同作業系統的HowTo

不錯的安裝trac筆記

雖然官網介紹得很詳盡,不過還是有些小細節要注意,安裝方法如下:

環境參數

查看 Ubuntu 機器資訊

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.1"

環境路徑

以下內容會用到的路徑統一在此作說明解釋

名稱 目錄
Trac安裝路徑 /usr/share/trac
Trac專案根目錄 /var/lib/trac
Trac專案子目錄 /var/lib/trac/waue
版本控制根目錄 /var/lib/svn
網址 http://gm1.nchc.org.tw/waue
  • Trac 安裝路徑 包含了原始的trac內容,以及程式碼,然而當你要用trac開一個專案時,Trac會要你裝在其他的路徑以做分離,免得原始的Trac跟你的專案搞混在一起,因此Trac專案根目錄就是你之後會把專案放的目錄囉!

Trac 0.11 安裝

1. 軟體套件

  • 安裝 apache, setuptools 及一些 libraries:
$ sudo apt-get install apache2 libapache2-mod-python \
     libapache2-svn python-setuptools subversion python-subversion
  • 安裝 Easy_install
$ sudo mkdir /opt/setuptools
$ cd /opt/setuptools/
$ sudo svn co http://svn.python.org/projects/sandbox/branches/setuptools-0.6/
$ cd setuptools-0.6/
$ sudo python setup.py install
  • 用easy_install安裝trac (當然也可以直接用apt-get 安裝,只是目前是trac 0.10版)
    $ sudo easy_install Trac
    

2. 建立 Trac 專案根目錄

  • 建立 Trac 專案根目錄並設定apache有讀寫權限
$ sudo mkdir /var/lib/trac
$ sudo chown www-data:www-data /var/lib/trac

3. 整合trac到 Apache2

設定trac整合到apache的步驟

  • 先創立一個trac模型
$ sudo vi /etc/apache2/sites-available/trac
  • 填入此模型的內容
<VirtualHost *>
        ServerAdmin waue0920@gmail.com
        ServerName gm1.nchc.org.tw
        DocumentRoot /var/www
        ErrorLog /var/log/apache2/error.trac.log
        CustomLog /var/log/apache2/access.trac.log combined
        Alias       /template/chrome/common  /usr/share/trac/htdocs

        <Location /waue>
                SetHandler mod_python
                PythonInterpreter main_interpreter
                PythonHandler trac.web.modpython_frontend
                PythonOption TracEnvParentDir /var/lib/trac
                PythonOption TracUriRoot /waue
                PythonOption PYTHON_EGG_CACHE /var/www/.python-eggs
        </Location>

        # use the following for one authorization for all projects
        # (names containing "-" are not detected):
        <LocationMatch "/waue/[[:alnum:]]+/login">
            AuthType Basic
            AuthName "trac"
            AuthUserFile /etc/apache2/dav_svn.passwd
            Require valid-user
        </LocationMatch>

</VirtualHost>
  • 建立python在apache2上用到的cache目錄
    $ sudo mkdir /var/www/.python-eggs
    $ sudo chown www-data.www-data /var/www/.python-eggs
    
  • 然後,取消default模板,換成剛剛的trac模板
    $ sudo a2dissite default
    $ sudo a2ensite trac
    

4. SVN

讓trac有版本控制的功能。

  • 建立 /var/lib/svn 目錄來做同步的資料儲存庫,並用指令 svnadmin create 開啟svn專案
$ sudo mkdir /var/lib/svn
$ sudo svnadmin create /var/lib/svn/waue
$ sudo chown -R www-data /var/lib/svn
$ sudo chown -R www-data /usr/share/trac

修改 /etc/apache2/mods-available/dav_svn.conf 以設定svn目錄參數

<Location /svn>
    # Uncomment this to enable the repository,
    DAV svn

    # Set this to the path to your repository
    SVNParentPath /var/lib/svn
</Location>

5. 創建專案並啟動 Trac

  • 用指令trac-admin /var/lib/trac/waue initenv,在 /var/lib/trac根目錄中建立一個waue專案
$ sudo trac-admin /var/lib/trac/waue initenv
  • 執行trac-admin這個指令會有query詢問環境參數如何設定:
    • Project Name [My Project]> waue
    • Database connection string db/trac.db> [Enter鍵]
    • Repository type [svn]> [Enter鍵]
    • Path to repository path/to/repos> /var/lib/svn/waue
      • Path to repository path/to/repos> 這行要設定的是svn的路徑,設錯會有warning.
  • 接著設定權限並重新啟動apache2
    $ sudo chown -R www-data /var/lib/trac
    $ sudo /etc/init.d/apache2 reload
    

ps: 更完整的Mod_Python設定,可以看 TracModPython

6. Plugin

安裝好用的套件

apt-get trac plugins

$ sudo apt-get install build-essential graphviz htmldoc enscript

Easy_install Trac plugins

  • 官網介紹區
    $ sudo easy_install http://svn.edgewall.org/repos/genshi/trunk/
    $ sudo easy_install http://trac-hacks.org/svn/accountmanagerplugin/trunk
    $ sudo easy_install http://trac-hacks.org/svn/customfieldadminplugin/0.11
    $ sudo easy_install http://trac-hacks.org/svn/eclipsetracplugin/tracrpcext/0.10
    $ sudo easy_install http://trac-hacks.org/svn/iniadminplugin/0.11
    $ sudo easy_install http://trac-hacks.org/svn/masterticketsplugin/0.11
    $ sudo easy_install http://trac-hacks.org/svn/pagetopdfplugin/0.10/
    $ sudo easy_install http://trac-hacks.org/svn/progressmetermacro/0.11
    $ sudo easy_install http://trac-hacks.org/svn/ticketdeleteplugin/0.11
    $ sudo easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.11
    $ sudo easy_install http://wikinotification.ufsoft.org/svn/trunk
    
  • jazz推薦區
    //Redirect
    $ sudo easy_install http://svn.ipd.uka.de/repos/javaparty/JP/trac/plugins/redirect-0.11/
    //AztechCalendar
    $ cd /opt/setuptools/
    $ sudo svn co http://trac-hacks.org/svn/calendarplugin
    $ cd calendarplugin/0.10
    $ python setup.py bdist_egg
    $ sudo easy_install dist/AztechCalendar*.egg
    

7. Adding Authentication

做了權限設定之後,才能夠登入trac,編輯文章等等..

權限設定

  • htpasswd -c 來創建 password 檔:
    $ htpasswd -c /etc/apache2/dav_svn.passwd admin
    New password: <type password>
    Re-type new password: <type password again>
    Adding password for user admin
    
  • 增加使用者也是用htpasswd,但不要加參數 "-c"
    $ htpasswd /etc/apache2/dav_svn.passwd waue
    New password: <type password>
    Re-type new password: <type password again>
    Adding password for user waue
    
  • 設定Trac的login到Apache的模型($ sudo vi /etc/apache2/sites-available/trac):
    <Location "/trac/login">
      AuthType Basic
      AuthName "Trac"
      AuthUserFile /etc/apache2/dav_svn.passwd
      Require valid-user
    </Location>
    

多個專案

  • 如果你有很多的project要管理,可以用下面的方法來設定多個專案:
    <LocationMatch "/trac/[^/]+/login">
      AuthType Basic
      AuthName "Trac"
      AuthUserFile /etc/apache2/dav_svn.passwd
      Require valid-user
    </LocationMatch>
    

更安全的作法

<Location "/trac/login">
    LoadModule auth_digest_module /usr/lib/apache2/modules/mod_auth_digest.so
    AuthType Digest
    AuthName "trac"
    AuthDigestDomain /trac
    AuthUserFile /etc/apache2/dav_svn.passwd
    Require valid-user
</Location>
  • 新增 .htpasswd file with htdigest instead of htpasswd as follows:
    $ sudo htdigest /etc/apache2/dav_svn.passwd trac admin
    
  • where the "trac" parameter above is the same as AuthName above ("Realm" in apache-docs).
$ sudo chown www-data /etc/apache2/dav_svn.passwd 
Last modified 12 years ago Last modified on Feb 10, 2009, 6:00:44 PM