[[PageOutline]]
= Trac on Ubuntu =
== 緣由 ==
由於Jazz大力推薦,使用Trac已經好一陣子,覺得是一個不錯的文件工作管理系統。不過都用Jazz架好的系統,也想要自己試一下怎麼安裝架設。除此之外,trac的預設CSS還有更符合個人瀏覽習慣的改進空間,加上一些trac的plug in也想試試看。 我的安裝環境於 Ubuntu 8.04 & trac 0.11,參考主要是官方網站:
[http://trac.edgewall.org/wiki/TracInstallPlatforms 安裝Trac於各種不同作業系統的HowTo]
[http://gaznjang.blogspot.com/2009/02/setup-svn-with-trac.html 不錯的安裝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
}}}
* 填入此模型的內容
{{{
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
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
# use the following for one authorization for all projects
# (names containing "-" are not detected):
AuthType Basic
AuthName "trac"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
}}}
* 建立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目錄參數
{{{
# Uncomment this to enable the repository,
DAV svn
# Set this to the path to your repository
SVNParentPath /var/lib/svn
}}}
* ps: 關於svn detail請見 References: [http://abbeyworkshop.com/howto/misc/svn01/ Commands populate files into SVN repository]
=== 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 [sqlite: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
}}}
* 在瀏覽器輸入你的網址http://localhost/waue就可以看到Trac網頁內容囉!
'''!http://localhost/waue'''
ps: 更完整的Mod_Python設定,可以看 [http://trac.edgewall.org/wiki/TracModPython 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:
Re-type new password:
Adding password for user admin
}}}
* 增加使用者也是用htpasswd,但不要加參數 "-c"
{{{
$ htpasswd /etc/apache2/dav_svn.passwd waue
New password:
Re-type new password:
Adding password for user waue
}}}
* 設定Trac的login到Apache的模型($ sudo vi /etc/apache2/sites-available/trac):
{{{
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
}}}
=== 多個專案 ===
* 如果你有很多的project要管理,可以用下面的方法來設定多個專案:
{{{
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
}}}
=== 更安全的作法 ===
* 安全因素考量,建立SSL連線;或AuthType用「Digest」代替 「Basic」. 更多 [http://httpd.apache.org/docs/2.0/ Apache HTTPD documentation] 。
{{{
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
}}}
* 新增 .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
}}}