SVN + Trac + Apache 完整安装攻略
SVN + Trac + Apache 完整安装攻略,而原本在 SVN 所欠缺的用户及权限管理接口,也都可以由 Trac 的外挂程式来搞定,可谓两全其美。
本文章适合熟悉 SVN 但没用个任何线上专案管理的人做为参考。
请注意,本人使用的 Linux 是 CentOS 4.x,RHEL 4.x 也适用。
1. 服务器环境及设置
在服务器上,我的设置如下:
- SVN 相关设定档: /etc/svn/
- SVN 档案库的根目录: /var/svn/ (里面可以存放多个档案库)
- Trac 专案的根目录: /var/trac/ (里面可以存放多个专案)
- SVN 用户的帐号密码档: /etc/svn/account
- SVN 用户的权限档: /etc/svn/authz
- 服务器 IP: 192.168.1.10
- SVN 的存取网址: http://192.168.1.10/svn
- Trac 的存取网址: http://192.168.1.10/trac
所以要先建立这些目录及档案:
mkdir /etc/svn mkdir /var/svn mkdir /var/trac touch /etc/svn/account touch /etc/svn/authz chown -R apache /etc/svn
因为“account”及“authz”这两个档案都需要由 Trac 来管理,所以都要把拥有者改为 apache (包含 /etc/svn 这个目录)
2. 增加 yum 的套件服务器
编辑 /etc/yum.repos.d/CentOS-Base.repo,在档案最后加入下列的 yum 套件服务器(来自 dag 及 kbs):
[dag] name=Dag RPM Repository for RHEL baseurl=http://repoforge.cu.be/redhat/el$releasever/en/$basearch/dag/ gpgkey=http://repoforge.cu.be/RPM-GPG-KEY.dag.txt gpgcheck=1 enabled=1 [kbs-CentOS-Misc] name=CentOS.Karan.Org-EL$releasever - Stable baseurl=http://centos.karan.org/el$releasever/misc/stable/$basearch/RPMS/ gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt gpgcheck=1 enabled=1
增加了这两个套件服务器之后,就可以直接用 yum 安装 SVN 及 Trac 了。
3. 安装 SVN 及相关套件
以 yum 轻松安装 SVN 主程式及相关套件:
yum -y install subversion subversion-perl mod_dav_svn apr apr-util
4. 安装 Trac 及相关套件
以 yum 轻松安装 Trac 主程式及相关套件:
yum -y install trac clearsilver python-clearsilver
5. 修改网页配置:
编辑 /etc/httpd/conf/httpd.conf,在最后面加上:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /var/svn
Satisfy Any
# HTTP 用户验证
AuthType Basic
AuthName "SVN Repository"
AuthUserFile /etc/svn/account
AuthzSVNAccessFile /etc/svn/authz
Require valid-user
</Location>
<Location /trac>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnvParentDir /var/trac
PythonOption TracUriRoot /trac
# HTTP 用户验证
# AuthType Basic
# AuthName "Trac Project"
# AuthUserFile /etc/svn/account
# Require valid-user
</Location>
请注意上面注解(#)的部份,因为要用 Trac 的外挂程式来管理用户的登入,所以就不需要 HTTP 用户验证,如果比较喜欢用 HTTP 验证就把下面四行的注解拿掉即可,并且下面 trac.ini 的设定也要把“trac.web.auth.LoginModule”启用。
6. 建立第一个 SVN 的储存库
先在 /var/svn 建立一个名称为“project1”的储存库:
svnadmin create /var/svn/project1 chown -R apache /var/svn/project1
7. 新增一个管理者帐号
先在 /etc/svn/account 新增一个名为“admin”的管理者:
htpasswd /etc/svn/account admin
只要建立这一个管理者用户即可,稍后可以在 Trac 的外挂程式来新增其它用户及管理其权限。
8. 建立第一个 Trac 的专案
继续在 /var/trac 建立一个名为“project1”的专案:
trac-admin /var/trac/project1 initenv
执行时会问你一些东西,你需要输入“Project Name”代表专案名称,而“Path to repository”必须输入“/var/svn/project1”,代表 SVN 储存库的路径,其它选项只要按 Enter 使用默认值即可。这里面的值稍后可以在专案目录底下的 conf/trac.ini 做修改。
接着仍需将专案的拥有者改为“apache”:
chown -R apache /var/trac/project1
9. 安装 Trac 的外挂程式
安装 Trac 的外挂程式前,需安装 python-setuptools 及建立 Python Egg 的快取目录:
cd /tmp wget http://peak.telecommunity.com/dist/ez_setup.py python ez_setup.py mkdir /var/www/.python-eggs chown apache /var/www/.python-eggs
以 easy_install 安装五个实用的 Trac 外挂程式 (安装 for Trac 0.10 的版本):
easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin easy_install http://trac-hacks.org/svn/iniadminplugin/0.10 easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10 easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.10 easy_install http://trac-hacks.org/svn/svnauthzadminplugin/0.10
这五个外挂程式分别为:
- WebAdmin: Trac 的基本管理模组。
- IniAdmin: trac.ini 管理。
- Account Manager: Trac 的用户管理。
- TracWiki WYSIWYG Editor: 让 Wiki 编辑器变成 WYSIWYG 编辑器。
- Svnauthz File Administration: SVN 的帐号及存取权限管理。
然后继续编辑 /var/trac/project1/conf/trac.ini,在最后加上:
[components] #启用 WebAdmin 外挂程式 webadmin.* = enabled #启用 IniAdmin 外挂程式 iniadmin.iniadmin.iniadminplugin = enabled #启用 TracWysiwyg 外挂程式 tracwysiwyg.* = enabled #启用 SvnAuthzAdmin 外挂程式 svnauthz.* = enabled #启用 AccountManager 外挂程式 acct_mgr.api.accountmanager = enabled acct_mgr.htfile.HtPasswdStore = enabled #关闭默认的 Http 登入认证方式,改用 AccountManager 的登入认证 trac.web.auth.LoginModule = disabled acct_mgr.web_ui.LoginModule = enabled #启用帐号管理 acct_mgr.admin.AccountManagerAdminPage = enabled #允许用户变更密码、删除帐号 acct_mgr.web_ui.AccountModule = enabled [account-manager] password_format = htpasswd password_file = /etc/svn/account password_store = HtPasswdStore
另外,你还要到 [trac] 区块找到“authz_file”及“authz_module_name”这两个参数,分别设为:
authz_file = /etc/svn/authz authz_module_name = project1
这两个参数与 SVN 的存取权限有关,“authz_module_name”要设成 SVN 的储存库名称。
最后,你可能还要再修改“default_charset”参数,默认是“iso-8859-15”,请改成与你 Checkin 到 SVN 储存库内的档案相同文字编码。
10. Trac 的用户管理
通常我会先指定 Trac 的管理者、移除访客的权限、增加一个一般用户群组,指令如下:
trac-admin /var/trac/project1 permission add admin TRAC_ADMIN trac-admin /var/trac/project1 permission remove anonymous '*' trac-admin /var/trac/project1 permission add @user LOG_VIEW FILE_VIEW WIKI_VIEW WIKI_CREATE WIKI_MODIFY SEARCH_VIEW REPORT_VIEW REPORT_SQL_VIEW trac-admin /var/trac/project1 permission add @user TICKET_VIEW TICKET_CREATE TICKET_MODIFY BROWSER_VIEW TIMELINE_VIEW CHANGESET_VIEW ROADMAP_VIEW MILESTONE_VIEW
在 Trac 里,用户与群组的命名及管理方式是没有什么区别的,用户也可以是群组,所以,你也可以把第一个用户指定给第二个用户,那第一个用户就会拥有与第二个用户一样的权限。在上面的指令,我新增了一个名称叫“@user”的群组以做为识别,并设定其权限,只要把用户指定给 @user,就可以使用相同的权限。
11. 设定完成
所有的设定都完成了,请重新启动 apache:
service httpd restart
现在该装的都装好了,Trac 的存取位址为“http://192.168.1.10/trac”,SVN 的存取位址为“http://192.168.1.10/svn/project1”。
用浏览器连上 Trac 的存取位址,选择进入“project1”专案后,会显示 Forbidden 说你没有读取权限,因为我们在上一个步骤已经把访客所有的权限给移除了,现在你只能在网页的右上角找到“login”来登入“admin”帐号。
成功登入 admin 之后,你可以从导览列右边的 [Admin] 进入管理接口,其中:
- General 下的“Permissions”是用来管理 Trac 的使用权限
- Account 下的“Users”可以用来管理 Trac 及 SVN 的用户: /etc/svn/account
- Subversion 下的“Subversion Access”才是用来管理 SVN 的路径存取权限及 SVN 的用户群组: /etc/svn/authz
现在你要进行的,除了新增用户(Users)及修改权限(Permissions)之外,你如果点选导览列上的 [Browse Source] 系统也会跟你说权限不足,同样的,现在任何人都还不能存取 SVN 的专案(http://192.168.1.10/svn/project1),因为“/etc/svn/authz”这个档案的内容还是空白的,你必须到 Trac 管理接口的“Subversion Access”去让你的用户拥有读写“/”这个路径的权限才行。
稍后等我有空我再来发表 Trac 的详细使用方式,大家可以先参考下面的网页连结。
参考网页
- Trac 首页 (中文翻译, Configure File)
- SVN 首页 (TortoiseSVN)
- Trac Hacks 外挂程式 (for Trac 0.10, for Trac 0.11)
- 网站制作学习志: 在 Windows 上使用 Trac on Apache - 使用说明篇 (专案建置篇, 安装与设定篇)
- 简睿随笔: Trac 的 Wiki 中文说明 (专案管理工具)
- Tsung’s Blog: Trac 基本功能介绍 (Debian Linux 架设 Trac + Virtual Host, Apache2(Virtual Host) + Subversion(SVN) + Trac 快速建置)
您好!我是第一次安装 trac& svn,我OS使用red hat,
依照步骤安装后,用IE 开启http://myip/trac,却出现下列错误,
请教是我缺那个步骤吗?
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/trac/web/api.py", line 436, in send_error
data, 'text/html')
File "/usr/lib/python2.4/site-packages/trac/web/chrome.py", line 809, in render_template
data = self.populate_data(req, data)
File "/usr/lib/python2.4/site-packages/trac/web/chrome.py", line 719, in populate_data
d.update({
File "/usr/lib/python2.4/site-packages/trac/web/api.py", line 212, in __getattr__
value = self.callbacks[name](self)
File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 306, in _get_locale
available = [locale_id.replace('_', '-') for locale_id in
File "/usr/lib/python2.4/site-packages/trac/util/translation.py", line 328, in get_available_locales
return [dirname for dirname
File "/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg/pkg_resources.py", line 899, in resource_listdir
return get_provider(package_or_requirement).resource_listdir(
File "/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg/pkg_resources.py", line 1191, in resource_listdir
return self._listdir(self._fn(self.module_path,resource_name))
File "/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg/pkg_resources.py", line 1282, in _listdir
return os.listdir(path)
OSError: [Errno 2] No such file or directory: '/usr/lib/python2.4/site-packages/trac/locale'
我用centos安装时也会,后来发现把babel移除就不会出错了。
主要是安装trac的没有附上i18n的语系。最后一行才应该是重点,前面的只是trackback。
我也是...
好像是trac的帐号密码路径错误
....
谢谢你的文章~ 写的很详细^^