[Logo]
在CentOS 4.5 Linux上安裝Trac 0.10.4  XML del.icio.us HEMiDEMi funP 收進你的MyShare個人書籤 新增到udn共享書籤 plurk twitter 分享
Forum Index » 軟體開發專案管理 Software Development Project Management
Author Message
andowson

五段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 510
Location: 台北
Offline

Trac是一個用Python程式語言開發出來的軟體開發專案管理程式,可與Subversion版本控制系統整合,也支援PostgreSQL資料庫,可讓開發團隊透過網頁介面來管理專案的Wiki文件及問題追蹤。Trac不但免費且開放原始碼(符合BSD授權),安裝在同樣也是免費的Linux作業系統CentOS上是個非常棒的組合。

通常同一個開發團隊會參與多個專案,在安裝時我們需要考慮支援多專案的管理。對於多專案的管理,我們可以這樣設計:
smilie每個Project一個專屬的Subverstion Repository,但是放在一個共同的根目錄下:
/path/to/repos/project1
/path/to/repos/project2
Repository存取方式:
http://my.domain.name/svn/project1
http://my.domain.name/svn/project2

smilie每個Project一個專屬的Trac Project Environment,但是放在一個共同的根目錄下:
/path/to/projects/project1
/path/to/projects/project2
Trac Project存取方式:
http://my.domain.name/projects/project1
http://my.domain.name/projects/project2

瞭解了設計的理念後,要安裝就很容易了,請將以下的程式碼複製後貼到一個trac_setup.sh檔案內,並修改相關的參數,然後將trac_setup.sh變更為可執行,然後執行即可(假設已安裝好gcc和PostgreSQL)。
#!/bin/bash 
# Name: trac_setup.sh 
# Author: Andowson Chang (andowson [at] gmail [dot] com) 
# Version: 0.9
# Since: 2007-01-10
# Last Modified: 2007-08-31

# 請自行依據實際環境修改這邊的參數
SETUP_DIR=/var/trac/setup
REPOSITORY=/var/trac/repos 
PROJECTS=/var/trac/projects
TRAC_ADMIN_USER=admin
TRAC_ADMIN_PASSWD=admin
APACHE_USER=apache
APACHE_GROUP=tomcat

# 安裝 Python, ClearSilver, pyPgSQL, Subversion, SWIG, mod_python 
# 因為要裝的東西不少,建議是建立一個目錄來存放比較好管理 
mkdir -p ${SETUP_DIR} 
cd ${SETUP_DIR}

# 安裝Python 
yum -y install python python-devel mod_python 
PYTHON_VERSION=`python -V 2>&1 | awk '{print $2}' | cut -d "." -f1-2`

# 安裝ClearSilver 
yum -y install zlib-devel 
wget http://www.clearsilver.net/downloads/clearsilver-0.10.5.tar.gz 
tar zxf clearsilver-0.10.5.tar.gz 
cd clearsilver-0.10.5 
./configure --with-python=/usr/bin/python --prefix=/usr/local --disable-ruby --disable-java --disable-apache --disable-csharp --disable-perl 
make 
make install 
cd .. 

# 安裝pyPgSQL 
yum -y install postgresql-devel 
wget http://nchc.dl.sourceforge.net/sourceforge/pypgsql/pyPgSQL-2.5.1.tar.gz 
tar zxvf pyPgSQL-2.5.1.tar.gz
cd pyPgSQL-2.5.1
python setup.py install 
cd ..

# 安裝Subversion 
yum -y install subversion mod_dav_svn swig 

# 安裝setuptools 
wget http://peak.telecommunity.com/dist/ez_setup.py 
python ez_setup.py 

# 安裝docutils 
wget http://docutils.sourceforge.net/docutils-snapshot.tgz 
tar zxf docutils-snapshot.tgz 
cd docutils 
python setup.py install 
cd tools 
./rst2html.py ../FAQ.txt ../FAQ.html 
cd ../.. 

# 安裝SilverCity 
yum -y install gcc-c++ libstdc++-devel 
wget http://nchc.dl.sourceforge.net/sourceforge/silvercity/SilverCity-0.9.7.tar.gz 
tar zxf SilverCity-0.9.7.tar.gz 
cd SilverCity-0.9.7 
python setup.py install 
cd .. 

# 安裝enscript 
yum -y install enscript 

# 安裝 mxDateTime 
wget http://downloads.egenix.com/python/egenix-mx-base-3.0.0.linux-i686-py${PYTHON_VERSION}_ucs4.prebuilt.zip
unzip egenix-mx-base-3.0.0.linux-i686-py${PYTHON_VERSION}_ucs4.prebuilt.zip
cd egenix-mx-base-3.0.0.linux-i686-py${PYTHON_VERSION}_ucs4.prebuilt
python setup.py build --skip install
cd .. 

# 安裝Trac
wget http://ftp.edgewall.com/pub/trac/trac-0.10.4.tar.gz 
tar zxf trac-0.10.4.tar.gz 
cd trac-0.10.4 
python setup.py install 
cd .. 

# 安裝WebAdmin管理介面 
easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin/ 

# 安裝AccountManager 
easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10/

# 安裝IniAdmin 
easy_install http://trac-hacks.org/svn/iniadminplugin/0.11/

# 安裝Gantt圖 
wget http://willbarton.com/files/TracGantt-0.3.2a-py${PYTHON_VERSION}.egg 
easy_install TracGantt-0.3.2a-py${PYTHON_VERSION}.egg

# 使用mod_python和Apache整合 
echo "<Location /projects> 
    SetHandler mod_python 
    PythonHandler trac.web.modpython_frontend 
    PythonOption TracEnvParentDir ${PROJECTS} 
    PythonOption TracUriRoot /projects 
    SetEnv PYTHON_EGG_CACHE /tmp 
</Location> 

<LocationMatch \"/projects/[^/]+/login\"> 
    AuthType Basic 
    AuthName \"Trac\" 
    AuthUserFile ${PROJECTS}/.htpasswd 
    Require valid-user 
</LocationMatch>" >> /etc/httpd/conf.d/python.conf 

# 使用mod_dav_svn和Apache整合 
echo "<Location /svn> 
    DAV svn 
    SVNParentPath ${REPOSITORY} 
    AuthType Basic 
    AuthName \"Subversion Repository\" 
    AuthUserFile ${PROJECTS}/.htpasswd 
    AuthzSVNAccessFile ${PROJECTS}/svnaccess
    <LimitExcept GET PROPFIND OPTIONS REPORT> 
        Require valid-user 
    </LimitExcept>
</Location>" >> /etc/httpd/conf.d/subversion.conf

# 新建Subversion Repository Root Directory
mkdir -p ${REPOSITORY} 
chown -R ${APACHE_USER}.${APACHE_GROUP} ${REPOSITORY}
 
# 新建Project Root Directory 
mkdir -p ${PROJECTS} 
chown -R ${APACHE_USER}.${APACHE_GROUP} ${PROJECTS} 

# 建立共用的管理者帳號
htpasswd -bc ${PROJECTS}/.htpasswd ${TRAC_ADMIN_USER} ${TRAC_ADMIN_PASSWD}
chown ${APACHE_USER}.${APACHE_GROUP} ${PROJECTS}/.htpasswd

# 設定Repositoty存取權限
echo "[/]
* = r
${TRAC_ADMIN_USER} = rw" > ${PROJECTS}/svnaccess


至此便安裝好了Trac,由於改了Apache的設定檔,故我們需要重新啟動Apache
service httpd restart


接下來要為每個專案建立一個Trac環境,Trac只需要安裝一套就可以支援多個專案,但是每個專案都要建立一個自己的Trac資料庫,例如我們的專案叫做project1,我們就新建一個叫trac_project1的資料庫(如果還有project2,資料庫名稱便取叫trac_project2)。請將下面的程式碼存成/var/lib/pgsql/newtracdb.sh並設為可執行:
psql -c "create user trac_$1 createdb;" template1
psql -c "create database trac_$1 with encoding 'unicode';" -U trac_$1 template1
psql -c "alter user trac_$1 nocreatedb;" template1
psql -c "alter user trac_$1 with encrypted password 'trac_$1';" template1


使用方式:
su - postgres
./newtracdb.sh project1


建立好了資料庫,我們可以將下面的指令存檔為newproject.sh並設為可執行:
# Name: newproject.sh
# Author: Andowson Chang (andowson [at] gmail [dot] com)
# Version: 0.9
# Last Modified: 2007-08-31

# 請自行依據實際環境修改這邊的參數
REPOSITORY=/var/trac/repos/$1
PROJECTS=/var/trac/projects
PROJECT=${PROJECTS}/$1
PROJECT_NAME="$2"
PROJECT_MANAGER=$3
DBNAME=trac_$1
DBUSER=trac_$1
DBPASSWD=trac_$1
TRAC_ADMIN_USER=admin
APACHE_USER=apache
APACHE_GROUP=tomcat

# 新建Subversion Repository 
svnadmin create --fs-type fsfs ${REPOSITORY} 
mkdir /tmp/$1
mkdir /tmp/$1/branches
mkdir /tmp/$1/tags
mkdir /tmp/$1/trunk
svn import /tmp/$1 file:///${REPOSITORY} --message 'Initial repository layout'
rm -rf /tmp/$1
chown -R ${APACHE_USER}.${APACHE_GROUP} ${REPOSITORY} 

echo "
[$1:/]
* = r
${TRAC_ADMIN_USER} = rw
${PROJECT_MANAGER} = rw" >> ${PROJECTS}/svnaccess

# 新建一個Trac環境
trac-admin ${PROJECT} initenv "${PROJECT_NAME}" postgres://${DBUSER}:${DBPASSWD}@localhost/${DBNAME} svn ${REPOSITORY} /usr/share/trac/templates
chown -R ${APACHE_USER}.${APACHE_GROUP} ${PROJECTS}

# 設定管理者帳號
trac-admin ${PROJECT} permission add ${TRAC_ADMIN_USER} TRAC_ADMIN
trac-admin ${PROJECT} permission add ${PROJECT_MANAGER} TRAC_ADMIN

# 取消匿名使用者的部分寫入權限(以免有人惡意搗蛋)
trac-admin ${PROJECT} permission remove anonymous TICKET_CREATE TICKET_MODIFY WIKI_CREATE WIKI_MODIFY
trac-admin ${PROJECT} permission add authenticated TICKET_CREATE TICKET_MODIFY TICKET_VIEW WIKI_CREATE WIKI_MODIFY

# 啟用 WebAdmin
echo "[components]
webadmin.* = enabled
tracgantt.* = enabled
iniadmin.iniadmin.iniadminplugin = enabled
trac.web.auth.LoginModule = disabled
acct_mgr.* = enabled

[account-manager]
password_format = htpasswd
password_file = ${PROJECTS}/.htpasswd

[ticket-custom]
due_assign = text
due_assign.label = Due to assign
due_assign.value = YYYY/MM/DD

dependencies = text
dependencies.label = Dependencies
dependencies.value =

due_close= text
due_close.label = Due to close
due_close.value = YYYY/MM/DD

include_gantt = checkbox
include_gantt.label = Include in GanttChart
include_gantt.value =

[gantt-charts]
# The format of dates entered by humans in the above ticket fields
date_format = %Y/%m/%d

# Include the ticket summary in the gantt chart display
include_summary = true

# Trim the included summary to the given number of characters
summary_length = 16

# Use the creation date of a ticket as the "due assign" date if no
# assignment date is given
use_creation_date = true

# Show on the gantt chart the date the ticket was opened, to contrast
# with the assignment date.
show_opened = true" >> ${PROJECT}/conf/trac.ini 

# 調整一些共同的參數
sed -i -e "s/max_size = 262144/max_size = 10000000/" -e "s/always_notify_owner = false/always_notify_owner = true/" -e "s/always_notify_reporter = false/always_notify_reporter = true/" -e "s/smtp_enabled = false/smtp_enabled = true/" -e "s/default_charset = iso-8859-15/default_charset = UTF-8/" ${PROJECT}/conf/trac.ini 

trac-admin ${PROJECT} permission add anonymous GANTT_VIEW

執行方式:
./newproject.sh project1 "My Project1" user1


接著編輯一個/var/lib/pgsql/session_attribute.sql檔案,將小組成員的姓名和email填寫好:
insert into session_attribute(sid, authenticated, name, value) values('admin', 1, 'email', 'admin@example.org');
insert into session_attribute(sid, authenticated, name, value) values('admin', 1, 'name', 'Andowson Chang');
insert into session_attribute(sid, authenticated, name, value) values('user1', 1, 'email', 'user1@example.org');
insert into session_attribute(sid, authenticated, name, value) values('user1', 1, 'name', 'John Doe');
insert into session_attribute(sid, authenticated, name, value) values('user2', 1, 'email', 'user2@example.org');
insert into session_attribute(sid, authenticated, name, value) values('user2', 1, 'name', 'Mary Doe');


將小組成員的資料加到這個新開好的專案
su - postgres
psql trac_project1 trac_project1 -f session_attribute.sql


要加入小組成員的寫入權限時,可以請他先透過Trac網頁介面register,然後再把帳號加到svnaccess去; 或者透過htpasswd幫他開好帳號及密碼,然後再把帳號加到svnaccess去。

htpasswd -b /var/trac/projects/.htpasswd user1 user1pwd
htpasswd -b /var/trac/projects/.htpasswd user2 user2pwd


vi /var/trac/projects/svnaccess
[/]
* = r
admin = rw

[project1:/]
* = r
admin = rw
user1 = rw
user2 = rw

參考資料:
Version Control with Subversion中譯版
Debian Linux: Apache2(Virtual Host) + Subversion(SVN) + Trac 快速建置
 Filename session_attribute.sql [Disk] Download
 Description 開發團隊成員姓名及email
 Filesize 665 bytes
 Downloaded:  21 time(s)

 Filename newtracdb.sh [Disk] Download
 Description 新增PostgreSQL資料庫程式
 Filesize 259 bytes
 Downloaded:  19 time(s)

 Filename newproject.sh [Disk] Download
 Description 新增Trac專案程式
 Filesize 3 Kbytes
 Downloaded:  25 time(s)

 Filename trac_setup.sh [Disk] Download
 Description Trac自動安裝程式
 Filesize 4 Kbytes
 Downloaded:  17 time(s)

This message was edited 87 times. Last update was at 2009-11-12 21:50:58


分享經驗 累積智慧
[WWW] [MSN]
andowson

五段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 510
Location: 台北
Offline

Trac的中文化(尚未完整)

cd /var/trac/setup
wget http://taipedia.selfip.info/templates.zh_TW.UTF-8.tar.gz 
tar zxvf templates.zh_TW.UTF-8.tar.gz
mv /usr/share/trac/templates /usr/share/trac/templates.orig
mv /var/trac/setup/templates.zh_TW.UTF-8 /usr/share/trac/templates


參考資料:
http://b6s.blogspot.com/2007/01/trac.html

This message was edited 11 times. Last update was at 2008-07-19 20:04:19


分享經驗 累積智慧
[WWW] [MSN]
andowson

五段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 510
Location: 台北
Offline

升級到新版的Trac 0.10.4->0.11,一定要記得做資料庫備份!
cd /var/trac/setup
easy_install Genshi
easy_install psycopg2
easy_install docutils
easy_install Pygments
easy_install pytz
easy_install Trac
su - postgres
psql -l
pg_dump trac_project1 > /tmp/trac_project1.bak
exit
trac-admin /var/trac/projects/project1 upgrade --no-backup
trac-admin /var/trac/projects/project1 wiki upgrade


升級後刪除舊的版本(for 0.11)
cd /usr/lib/python2.3/site-packages
rm -rf trac
easy_install -m TracWebAdmin
rm -rf TracWebAdmin*

解決升級後不顯示Login的問題
vi /var/trac/projects/project1/conf/trac.ini
...
[components]
trac.web.auth.loginmodule = enabled
webadmin.* = enabled
...

This message was edited 7 times. Last update was at 2008-07-19 21:59:45


分享經驗 累積智慧
[WWW] [MSN]
andowson

五段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 510
Location: 台北
Offline

最近遇到這個問題
Traceback (most recent call last):
File "/usr/lib/python2.3/site-packages/trac/web/main.py", line 406, in dispatch_request
dispatcher.dispatch(req)
File "/usr/lib/python2.3/site-packages/trac/web/main.py", line 206, in dispatch
req.hdf = HDFWrapper(loadpaths=chrome.get_all_templates_dirs())
File "/usr/lib/python2.3/site-packages/trac/web/chrome.py", line 263, in get_all_templates_dirs
dirs += provider.get_templates_dirs()
File "build/bdist.linux-i686/egg/acct_mgr/web_ui.py", line 252, in get_templates_dirs
File "/usr/lib/python2.3/site-packages/setuptools-0.6c3-py2.3.egg/pkg_resources.py", line 799, in resource_filename
return get_provider(package_or_requirement).get_resource_filename(
File "/usr/lib/python2.3/site-packages/setuptools-0.6c3-py2.3.egg/pkg_resources.py", line 1229, in get_resource_filename
return self._extract_resource(manager, zip_path)
File "/usr/lib/python2.3/site-packages/setuptools-0.6c3-py2.3.egg/pkg_resources.py", line 1235, in _extract_resource
last = self._extract_resource(
File "/usr/lib/python2.3/site-packages/setuptools-0.6c3-py2.3.egg/pkg_resources.py", line 1249, in _extract_resource
real_path = manager.get_cache_path(
File "/usr/lib/python2.3/site-packages/setuptools-0.6c3-py2.3.egg/pkg_resources.py", line 880, in get_cache_path
self.extraction_error()
File "/usr/lib/python2.3/site-packages/setuptools-0.6c3-py2.3.egg/pkg_resources.py", line 846, in extraction_error
raise err
ExtractionError: Can't extract file(s) to egg cache

The following error occurred while trying to extract file(s) to the Python egg
cache:

[Errno 13] Permission denied: '/.python-eggs'

The Python egg cache directory is currently set to:

/.python-eggs

Perhaps your account does not have write access to this directory? You can
change the cache directory by setting the PYTHON_EGG_CACHE environment
variable to point to an accessible directory.


參考了下面這個網址, 主要是需要修改PYTHON_EGG_CACHE的設定
http://projects.edgewall.com/trac/wiki/TracPlugins#SettingupthePluginCache

修改/etc/httpd/conf.d/python.conf:
<Location /projects>
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /var/trac/projects
  PythonOption TracUriRoot /projects
  SetEnv PYTHON_EGG_CACHE /tmp
</Location>


重新啟動Apache即可

This message was edited 6 times. Last update was at 2007-08-29 07:51:56


分享經驗 累積智慧
[WWW] [MSN]
andowson

五段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 510
Location: 台北
Offline

如果安裝Trac+Subversion的Apache主機本身也跟Tomcat整合起來的話, 要再修改一下mod_jk的設定, 例如/etc/httpd/conf.d/mod_jk.conf:
JkUnMount /projects/* loadbalancer
JkMount /*.jsp loadbalancer

# Deny direct access to WEB-INF
<LocationMatch ".*WEB-INF.*">
    Deny from all
</LocationMatch>

# Allow direct access to WEB-INF directory under /projects and /svn 
<LocationMatch "[/projects/ /svn/].*/WEB-INF.*">
    Allow from all
</LocationMatch>


這樣子就可看到JSP和WEB-INF底下檔案的原始碼了.

This message was edited 5 times. Last update was at 2007-09-19 17:03:24


分享經驗 累積智慧
[WWW] [MSN]
andowson

五段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 510
Location: 台北
Offline

修正
Report execution failed: 錯誤: 欄位"modified"不存在

用具有TRAC_ADMIN權限的帳號如admin登入,點選View Tickets->點選{6} All Tickets By Milestone (Including closed)
點選Edit Report按鈕,替換為下方的程式碼:
SELECT p.value AS __color__,
   t.milestone AS __group__,
   (CASE status 
      WHEN 'closed' THEN 'color: #777; background: #ddd; border-color: #ccc;'
      ELSE 
        (CASE owner WHEN $USER THEN 'font-weight: bold' END)
    END) AS __style__,
   id AS ticket, summary, component, status, 
   resolution,version, t.type AS type, priority, owner,
   changetime AS modified,
   time AS _time,reporter AS _reporter
  FROM ticket t
  LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
  ORDER BY (milestone IS NULL), milestone DESC, (status = 'closed'), 
        (CASE status WHEN 'closed' THEN changetime ELSE (-1)* CAST(p.value AS numeric) END) DESC

This message was edited 1 time. Last update was at 2009-11-12 21:49:35


分享經驗 累積智慧
[WWW] [MSN]
wtom

九級學員

Joined: 2008-07-19 16:03:23
Messages: 12
Offline

客戶端能改密碼嗎?
andowson

五段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 510
Location: 台北
Offline

在0.10.4是可以的,登入後選擇My Account功能即可修改密碼。
升級到0.11後,webadmin改為內建,之前安裝的TracAccountManager Plugin變成失效,因此註冊register和修改密碼的My Account功能都消失了。

This message was edited 1 time. Last update was at 2008-07-19 21:07:42


分享經驗 累積智慧
[WWW] [MSN]
andowson

五段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 510
Location: 台北
Offline

降級trac 0.11->0.10.5
cd /var/trac/setup
wget http://ftp.edgewall.com/pub/trac/trac-0.10.5.tar.gz
tar zxvf trac-0.10.5.tar.gz
cd trac-0.10.5
python setup.py install
easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin/
cd /usr/lib/python2.3/site-packages
rm -rf Trac-0.11-py2.3.egg/
vi easy-install.pth
刪除Trac-0.11
service httpd stop
su - postgres
pg_dump trac_project1 > /tmp/trac_project1-0.11.bak
dropdb trac_project1
dropuser trac_project1
./newtracdb.sh project1
psql trac_project1 < /tmp/trac_project1.bak
exit
trac-admin /var/trac/projects/project1 upgrade --no-backup
trac-admin /var/trac/projects/project1 wiki upgrade
service httpd start

分享經驗 累積智慧
[WWW] [MSN]
wtom

九級學員

Joined: 2008-07-19 16:03:23
Messages: 12
Offline

请问代码用什么提交比较好?在trac上没有找到
andowson

五段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 510
Location: 台北
Offline

程式碼提交可以使用Subversion Client來進行,例如TortoiseSVN或安裝開發工具的plug-in,例Subclipse for Eclipse,可以參考這篇文章
http://www.andowson.com/posts/list/57.page

This message was edited 2 times. Last update was at 2008-07-26 19:31:29


分享經驗 累積智慧
[WWW] [MSN]
wtom

九級學員

Joined: 2008-07-19 16:03:23
Messages: 12
Offline

谢谢你的回复,我在执行完trac_setup.sh中的过程(大部分采用RHEL5中的RPM包安装)以及执行 1. ./newproject.sh project1 "My Project1" user1 没有出问题,之后访问http://localhost/svn/project1出现:Forbidden
You don't have permission to access /svn/project1 on this server.
是什么问题?
执行http://localhost/projects/project1时出现:
Environment not found
andowson

五段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 510
Location: 台北
Offline

請問您的svnaccess(依您實際安裝位置而定,本文是位於/var/trac/projects/svnaccess)內的設定為何?
有無加入* = r的設定在[/]及[project1:/]下?
另外您可以執行一下psql -l來確認一下trac_project1這個資料庫存在嗎?如果存在您可以將它刪除(dropdb trac_project1;dropuser trac_project1)再重新建立一次(newtracdb.sh),然後再執行一次newproject.sh,完成後再重新啟動一次Apache(service httpd restart)。

This message was edited 1 time. Last update was at 2008-07-28 01:09:22


分享經驗 累積智慧
[WWW] [MSN]
wtom

九級學員

Joined: 2008-07-19 16:03:23
Messages: 12
Offline

按照您的说法我试了一下,问题依旧。您回复:

“請問您的svnaccess(依您實際安裝位置而定,本文是位於/var/trac/projects/svnaccess)內的設定為何?
有無加入* = r的設定在[/]及[project1:/]下?
另外您可以執行一下psql -l來確認一下trac_project1這個資料庫存在嗎?如果存在您可以將它刪除(dropdb trac_project1;dropuser trac_project1)再重新建立一次(newtracdb.sh),然後再執行一次newproject.sh,完成後再重新啟動一次Apache(service httpd restart)。”

我实际的位置“/home/trac/projects/svnaccess”,经检查svnaccess文件内容无错误,其内容如下:
[/]
admin =rw

[project1:/]
* = r
admin = rw
user1 = rw
user2 =rw

使用psql –l后发现数据库已经存在了,按上述要求重建在执行上述删除和创建过程后,依然如故。

下面我介绍一下我的安装过程:
因为我安装的是RHEL5.0,没有REDHAT的安装好因此无法使用yum 命令从redhat 升级,因此我考虑使用安装光盘内的rpm 安装文件。
1、 在安装RRHEL5.0 时选择安装SUBVERSION、PostgreSQL、python-2.4.3
2、 从光盘中拷贝出mod_python-3.2.8-3.1.i386.rpm、libxml2-python-2.6.26-2.1.2.i386.rpm、mod_python-3.2.8-3.1.i386.rpm、swig-1.3.29-2.el5.i386.rpm、python-devel-2.4.3-19.el5.i386.rpm并用rpm –ivh 指令安装。
3、 安装后检查系统内的软件安装情况:

httpd Version : 2.2.3 Release : 6.el5
python Version : 2.4.3 Release : 19.el5
python-devel Version : 2.4.3 Release : 19.el5
mod_python Version : 3.2.8 Release : 3.1
subversion Version : 1.4.2 Release : 2.el5
mod_dav_svn Version : 1.4.2 Release : 2.el5
swig Version : 1.3.29 Release :2.el5

4、 从网络上下载的软件包如下:

clearsilver-0.10.5.tar.gz
docutils-snapshot.tgz
egenix-mx-base-3.0.0.linux-i686-py2.4_ucs4.prebuilt.zip
egenix-mx-base-3.1.0.linux-i686-py2.4_ucs4.prebuilt.zip
enscript-1.6.4.tar.gz
ez_setup.py
pyPgSQL-2.5.1.tar.gz
SilverCity-0.9.7.tar.gz
TracGantt-0.3.2a-py2.4.egg
Trac0.10.4zh3

5、 按照您文章中的顺序进行安装,区别在于第2点中的安装包是用rpm安装,不是您文中使用的yum 指令

6、 安装完trac_setup.sh中的软件后,再执行./newtracdb.sh project1(有点小问题,我在postgres下一条一条执行的,也创建了数据库和用户), 再执行./newproject.sh project1 "My Project1" user1 并得到trac成功信息

至此,我觉得可以用http://localhost/svn/project1来查看源码,而结果就是上面的情况,用http://localhost/ projects /project1 来查看TRAC时出现Environment not found,
andowson

五段學員
[Avatar]

Joined: 2007-01-02 22:20:40
Messages: 510
Location: 台北
Offline

1.請加上* = r到/home/trac/projects/svnaccess的[/]下,如下:
[/]
* = r
admin = rw

[project1:/]
* = r
admin = rw
user1 = rw
user2 =rw

2.請問您有沒有執行trac_setup.sh的98-142行部分,可否檢視一下這幾個設定檔:
/etc/httpd/conf.d/python.conf
/etc/httpd/conf.d/subversion.conf

smilie 檢查/etc/httpd/conf.d/python.conf的檔尾有沒有下列設定:
<Location /projects>
  SetHandler mod_python
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /home/trac/projects
  PythonOption TracUriRoot /projects
  SetEnv PYTHON_EGG_CACHE /tmp
</Location>

<LocationMatch "/projects/[^/]+/login">
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /home/trac/projects/.htpasswd
  Require valid-user
</LocationMatch>


smilie 檢查/etc/httpd/conf.d/subversion.conf的檔尾有沒有下列設定:
<Location /svn>
    DAV svn
    SVNParentPath /home/trac/repos
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        AuthType Basic
        AuthName "Subversion repository"
        AuthUserFile /home/trac/projects/.htpasswd
        AuthzSVNAccessFile /home/trac/projects/svnaccess
        Require valid-user
    </LimitExcept>
</Location>

This message was edited 2 times. Last update was at 2008-08-09 17:31:59


分享經驗 累積智慧
[WWW] [MSN]
 
Forum Index » 軟體開發專案管理 Software Development Project Management
Go to:   

交換連結乌托邦博客 
在本站刊登廣告
練功房推薦書單
SCJP 6.0認證教戰手冊 (附光碟) 雲端策略:雲端運算與虛擬化技術 SCJP Java 6專業認證手冊 Java認證SCJP 6.0/5.0--猛虎出閘 SCWCD 5 猛虎出閘:Java Web 應用程式專業認證 SCWCD專業認證手冊 Head First Servlets and JSP
[版權說明] 本站授權方式:創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款
Creative Commons License
Powered by JForum 2.2.0 © JForum Team