整合之前文章, 來做快速建置筆記, 如果有看不懂的步驟, 或遇到任何問題, 可以回到原始文件再看看(下述文件會把較可能出問題的地方列出來).
Debian 的建置 通常是放在 /var/lib 下, 所以下述採用的如下:
- svn : /var/lib/svn/repository (通常我喜歡多設一個 repository, 不然 /var/lib/svn 就夠了)
- trac: /var/lib/trac
# subversion + apache2
- apt-get install libapache2-svn apache2 subversion
- mkdir /var/lib/svn/repository
- svnadmin create /var/lib/svn/repository/PROJECT_NAME
- find /var/lib/svn/repository/PROJECT_NAME -type f -exec chmod 660 {} \;
- find /var/lib/svn/repository/PROJECT_NAME -type d -exec chmod 2770 {} \;
- chown -R root.www-data /var/lib/svn/repository/PROJECT_NAME
- vim /etc/apache2/mods-available/dav_svn.conf
<Location /svn>
DAV svn
SVNParentPath /var/lib/svn/repository
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user
</Location>
vim /etc/apache2/dav_svn.authz
[PROJECT_NAME:/]
* =
ACCOUNT1 = r
ACCOUNT2 = rw
# 建帳號
- /usr/bin/htpasswd -c /etc/apache2/dav_svn.passwd ACCOUNT1
- /usr/bin/htpasswd /etc/apache2/dav_svn.passwd ACCOUNT2
# test & import
- cd /tmp/
- svn co http://DOMAIN_NAME/svn/PROJECT_NAME/
- cd PROJECT_NAME
- mkdir branches tags trunk
- svn import http://DOMAIN_NAME/svn/PROJECT_NAME/ -m 'inintial import'
- # subversion finish.
# trac
- apt-get install trac libapache2-mod-python
- mkdir -p /var/lib/trac/
- trac-admin /var/lib/trac/PROJECT_NAME initenv
My Project => PROJECT_NAME
/path/to/repos => /var/lib/svn/repository/PROJECT_NAME
vim /var/lib/trac/PROJECT_NAME/conf/trac.ini
default_charset = iso-8859-15 => default_charset = utf-8
# test: tracd --port 8000 /var/lib/trac/PROJECT_NAME
# trac-admin 新增帳號這些動作, 會記在 db/trac.db 裡面, 由此處可統一控管所有帳號權限, 和是否可以連進來等.
- trac-admin /var/lib/trac/PROJECT_NAME permission remove anonymous '*'
- # TRAC_ADMIN(需要全部大寫, 設此帳號為管理者, 此 TRAC_ADMIN 不是可代換變數 )
- trac-admin /var/lib/trac/PROJECT_NAME permission add ACCOUNT TRAC_ADMIN
vim /etc/apache2/sites-available/PROJECT_NAME.conf
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/lib/trac
ServerName VIRTUAL_HOST_NAME
ErrorLog /var/log/apache2/trac-error.log
CustomLog /var/log/apache2/trac-access.log combinedSetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv "/var/lib/trac/PROJECT_NAME"
PythonOption TracUriRoot "/trac/PROJECT_NAME"
<LocationMatch "/trac/[^/]+/login">
AuthType Basic
AuthName "Trac"
# 跟 svn account 同一個檔即可.
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</LocationMatch>
</VirtualHost>
再 ln -s /etc/apache2/sites-available/PROJECT_NAME.conf /etc/apache2/sites-enabled/PROJECT_NAME.conf
# test => Virtual Host & Trac
- http://VIRTUAL_HOST_NAME/trac/PROJECT_NAME
賀~ 到此就建置完成囉~
再來的是, 如果還要再加上其它 trac 跟 svn 的時後該如何加上去, 只要下述步驟即可:
# build new PROJECT_NAME in svn
- svnadmin create /var/lib/svn/repository/PROJECT_NAME
- find /var/lib/svn/repository/PROJECT_NAME -type f -exec chmod 660 {} \;
- find /var/lib/svn/repository/PROJECT_NAME -type d -exec chmod 2770 {} \;
- chown -R root.www-data /var/lib/svn/repository/PROJECT_NAME
- vim /etc/apache2/dav_svn.authz # add project & account permission
[PROJECT_NAME:/]
* =
ACCOUNT1 = r
ACCOUNT2 = rw
# 建立帳號
- # htpasswd 在這次記得千萬不要 -c (會蓋掉之前的所有紀錄, 變成只有此新帳號的檔案 XD)
/usr/bin/htpasswd -c /etc/apache2/dav_svn.passwd ACCOUNT1- /usr/bin/htpasswd /etc/apache2/dav_svn.passwd ACCOUNT2
# test & initial import
- cd /tmp/
- svn co http://DOMAIN_NAME/svn/PROJECT_NAME/
- cd PROJECT_NAME
- mkdir branches tags trunk
- svn import http://DOMAIN_NAME/svn/PROJECT_NAME/ -m 'inintial import'
- # subversion finish.
# trac
- trac-admin /var/lib/trac/PROJECT_NAME initenv
My Project => PROJECT_NAME
/path/to/repos => /var/lib/svn/repository/PROJECT_NAME
- vim /var/lib/trac/PROJECT_NAME/conf/trac.ini
default_charset = iso-8859-15 => default_charset = utf-8
- chown www-data:www-data -R /var/lib/trac/PROJECT_NAME
- trac-admin /var/lib/trac/PROJECT_NAME permission remove anonymous '*'
- 注意: TRAC_ADMIN(需要全部大寫, 設此帳號為管理者, 此 TRAC_ADMIN 不是可代換變數)
- trac-admin /var/lib/trac/PROJECT_NAME permission add ACCOUNT TRAC_ADMIN
- vim /etc/apache2/sites-enabled/PROJECT_NAME.conf
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/lib/trac # 這個不重要
ServerName VIRTUAL_HOST_NAME
ErrorLog /var/log/apache2/trac-error.log
CustomLog /var/log/apache2/trac-access.log combinedSetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv "/var/lib/trac/PROJECT_NAME"
PythonOption TracUriRoot "/trac/PROJECT_NAME"
<LocationMatch "/trac/[^/]+/login">
AuthType Basic
AuthName "Trac"
# 跟 svn account 同一個檔即可.
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
</LocationMatch>
</VirtualHost>
# add trac new account
- /usr/bin/htpasswd /etc/apache2/dav_svn.passwd ACCOUNT
- trac-admin /var/lib/trac/PROJECT_NAME permission add ACCOUNT TRAC_ADMIN
# 完成, SVN & TRAC URL
- svn co http://VIRTUAL_HOST_NAME/svn/PROJECT_NAME
- trac http://VIRTUAL_HOST_NAME/trac/PROJECT_NAME/
要備份的話, 直接備份下面三個目錄即可:
- /etc/apache2/conf.d
- /var/lib/svn
- /var/lib/trac
總結快速開帳號流程:
- /usr/bin/htpasswd /etc/apache2/dav_svn.passwd ACCOUNT
- trac-admin /var/lib/trac/PROJECT_NAME permission add ACCOUNT TRAC_ADMIN
- vim /etc/apache2/dav_svn.authz # 把帳號加入
你好~真得好高興看到這篇文章,寫的真得很好!我使用Trac + subversion 三年了!最近剛好有朋友請我幫忙架設一次,幸好有看到你這篇文章,讓我的心應手,在這過程中我發現一個小問題,當我按步驟操作增加第二個trac project的時候,發現只有一個trac會動.當我在 /etc/apache2/sites-enabled 下同時有兩個 Project1_Name.conf Project2_Name.conf時,只會有其中一個可以用 web-browser可以使用,如果要用另為一個,那我必須 rm 另外一個檔案才可以使用,可否有其他人跟我有一樣的問題?
謝謝~
我寫的就是要同時讓多個 trac + svn 架在同一台機器上的囉~ 😛
我想你是不是 Virtual host 沒設好?
你可以試試看, 一個跑 Virtual host, 另一個跑 tracd --port 8000 的看看, 先確定是 trac 設定問題, 還是 Virtual host 設定問題?
您好:
我用您的方法架设了一个svn+一个trac,采用直接存取的方式,ok;采用virtual host时,报404错误。但是在tracd --port 8000的时候又是可以访问的。不知这是为何?谢谢:)
您要不要參考一下 http://plog.longwin.com.tw/my_note-unix/2007/07/03/debian_trac_svn_virtualhost_2007 這篇.
有不用 Virtual 的設法, 先設設看, 是不是 module 沒有 load 進來.
不過我猜想應該是 Virtual host 沒設對(您可以參考最下面我回答別人問題的留言, 有 Virtual Host 該注意的一些事項 🙂
您好!
多trac的问题我已经解决,谢谢你的指点。
现将我遇到的问题写出来跟大家分享。我的问题跟water类似,当有两个.conf时,只能认到后创建的那个。后来参考了Water的方法,将多个Proj写在了一个.conf中。
当我设virtual host时,则报错:files doesn't exists:/var/www/trac, 实际我的trac是安装在 /var/lib/ 目录下。我也确信我的mod_python已经加载。这个一直不知道如何解决。
另:想请教两个问题:
1. 设置virtual host 的目的是什么?
2. 如果我想从网页中查看Development Statistics for Proj(SVN report)。应该如何设置,需要安装什么包?
谢谢!
1. 設 Virtual host 的目的主要在於, 你如果要在同一台 trac 上管多個專案(或者說弄多個 trac), 那就需要設定 Virtual host.(不然目錄結構會一團亂).
2. 我不太懂您這個的意思, 如果要看 Proj 的狀態, 主要就是用 trac 去訂進度, 然後就可以看到專案目前的狀態.(只要裝好 trac 就可以了)
谢谢您的解答。
第二个问题我指的是StatSVN,(http://svn.statsvn.org/statsvnwiki/index.php/Main_Page)。一个开发统计工具,可以从Subversion版本库中取得信息,然后生成描述项目开发的各种表格和图表。如代码行数的时间线;针对每个开发者的代码行数;开发者的活跃程度;开发者最近所提交的;文件数量等等。
StatSVN 我沒用過耶, 這個或許以後有機會研究看看.
最近在研究其它東西說 XD
我最近在debian6上搭建:svn apache trac环境。
我基本是参照你面的办法做的;基本配置如下:
[Demo:/]
* =
test = rw
DAV svn
SVNParentPath /var/lib/svn/repository
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
AuthzSVNAccessFile /etc/apache2/dav_svn.authz
Require valid-user
目录权限我也改了:chmod 775 /var/lib/svn/repository/
结果是这样:
认证领域: Subversion Repository
用户名: test
“test”的密码:
svn: 服务器发送了意外的返回值(403 Forbidden),在响应 “OPTIONS” 的请求 “http://192.168.0.144/svn/repository/Demo” 中
可以提示一下可能是为什么吗?谢谢
谢谢,现在我自己解决了。你这篇blog我受益颇多,谢谢