[[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 }}}