Trac + SVN + Virtual host 設定一起搞定, 先寫比較清楚的版本, 之後再來改寫簡易版.
首先 Subversion + HTTP(apache2) 存取, 請見: Debian Linux 架設 Subversion(SVN)
假設現(xiàn)在已經可以由 http://DOMAIN_NAME/svn/PROJECT_NAME/ 做 ci/co 等動作, 且 svn 目錄建在 /home/svn/repository.
於是就會產生:
設定 /home/trac/PROJECT_NAME/conf/trac.ini 語系:
設定 apache, 讓 http://DOMAIN_NAME/trac/PROJECT_NAME 可以直接存取.
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv "/home/trac/PROJECT_NAME"
PythonOption TracUriRoot "/trac/PROJECT_NAME"
<LocationMatch "/trac/[^/]+/login">
AuthType Basic
AuthName "Trac"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</LocationMatch>
# 另一種寫法
#<Location "/trac/login">
# AuthType Basic
# AuthName "Trac"
# # 跟 svn account 同一個檔即可.
# AuthUserFile /etc/apache2/dav_svn.passwd
# Require valid-user
#</Location>
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /home/trac
ServerName VIRTUAL_HOST_NAME
ErrorLog /var/log/apache2/trac-error.log
CustomLog /var/log/apache2/trac-access.log combined
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv "/home/trac/PROJECT_NAME"
PythonOption TracUriRoot "/trac/PROJECT_NAME" # 注意: 此處是 URI
<LocationMatch "/trac/[^/]+/login">
AuthType Basic
AuthName "Trac"
# 跟 svn account 同一個檔即可.
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</LocationMatch>
</VirtualHost>
VIRTUAL_HOST_NAME
/trac/PROJECT_NAME 連到了.(主要是要一臺機器控管多個 Trac)往後如果 trac 有升級(apt 升級), 都執(zhí)行 trac-admin /home/trac/PROJECT_NAME upgrade 來升級即可.
附註: (其它功能設定)
Trac 有任何修改都寄信出來:
Trac 安全權限設定:
參考文件:
相關標籤不好意思, 我的 blog spam 判斷 把您的留言都判斷成 spam Orz...
很高興小弟的文章對您有用~ :)
你好~真得好高興看到這篇文章,寫的真得很好!我使用Trac + subversion三年了!最近剛好有朋友請我?guī)兔茉O一次,幸好有看到你這篇文章,讓我的心應手,在這過程中我發(fā)現(xiàn)一個小問題,當我按步驟操作增加第二個tracproject的時候,發(fā)現(xiàn)只有一個trac會動.當我在 /etc/apache2/sites-enabled 下同時有兩個Project1_Name.conf Project2_Name.conf時,只會有其中一個可以用web-browser可以使用,如果要用另為一個,那我必須 rm 另外一個檔案才可以使用,可否有其他人跟我有一樣的問題?
謝謝~
我寫的就是要同時讓多個 trac + svn 架在同一臺機器上的囉~ :P
我想你是不是 Virtual host 沒設好? 你可以試試看, 一個跑 Virtual host, 另一個跑 tracd --port 8000 的看看, 先確定是 trac 設定問題, 還是 Virtual host 設定問題?
謝謝給我的參考~
我用tracd --port 8000 /home/trac/PROJECT_NAME 可以連上
但在virtual host是不可以的我看trac-error.log的訊息
發(fā)現(xiàn) TracUriRoot 已經是上一個project 的Path
for example:
proj1
proj2
TracUriRoot ==> /trac/proj1
但當我用IE連進去連不上去
Check error log => PythonHandler trac.web.modpython_fronted:ValueError: TracUriRoot set to /trac/proj1 but request URL is/favicon.ico
如果你有空幫我看ㄧ下這問題~謝謝
我猜是您的 mod_python 沒裝, 您能不能試試看, 不用 Virtual host, 直接於 Apache 上設定, 上面有寫怎麼設定, 試試看?
(我猜, 不是沒裝就是 apache mod_python 的 module 沒載入?)
謝謝給我得建議~
我試過不用Virtual host,直接在apache上設定
狀況一樣,我已經裝了兩臺了,用最新得debian distrubtion
我確定 mod_python 有裝, 應該也有l(wèi)oading
以下是出狀況的訊息:
Internal Server Error
More information about this error may be available in the server error log.
--------------------------------------------------------------------------------
Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_python/3.2.10 Python/2.4.4 Server at 192.168.241.43 Port 80
我查了很久,覺得好像是TracUriRoot這個問題~
佔用你很多時間,謝謝你熱心的回應~
您的狀況可能是 url 打錯.
ex: http://trac.ozearch.org/ozearch/ 出現(xiàn)跟你一樣的錯誤, http://trac.ozearch.org/trac/ozearch/ 就正確.
PythonOption TracUriRoot "/trac/PROJECT_NAME" # 注意: 此處是 URI, 這個指的是 Domain 後面的值, 如果設這樣子, 你要存取的就是 http://hostname/trac/proj1 唷.
試試看可以嗎?, 如果不行可能需要知道您的 Domain, 或者看看設定檔了. Orz..
應該不會這樣子耶, 有可能是兩個問題,
1. 命名檔名的問題.
/etc/apache2/sites-enabled/000-default, 預設會先讀這個檔案, 然後再去讀你的其它設定檔, 如果你的檔明是設 0000, 就會先讀到你的, 就會有問題.
2. conf 檔的問題
你自己寫的 conf 檔裡面, 一定不能有 "NameVirtualHost *" 這行(這行 default 會幫你 load 進去了).
試試看吧, 很感謝您的分享 :)
Sorry, 參考文件下的 "SVN + Trac + Apache 完整安裝攻略" 的網址已經改為: http://www.vixual.net/blog/archives/232,煩請站長更正,謝謝。