SVN + Trac 环境升级

原来:Apache 2.0.x + Python 2.4.x + Subversion 1.4.x + Trac 0.10.x/0.11.x,配套 mod-python, svn-python, pysqlite …差不多已经使用了三年,仅小版本升过级。

现在:Apache 2.2.x + Python 2.6.x + Subversion 1.6.x + Trac 0.12.1,配套 mod-wsgi, svn-python …终于与时俱进啦!

过程:

1. 基础软件安装:Apache + Python,没啥好说,下载&安装。

2. Subversion

2.1 安装

自从 SVN 被移交给 Apache 基金会后,官网上就只能下载源代码包,虽然也引用了一些第三方制作的安装包,但和原来 Tigris.org 提供的版本不同,大都是内含了 Web 服务器,单独使用的话确实方便一些,但考虑到我的 Trac 也需要寄托在 Apache 下,倒是更倾向原来那种版本,所幸昨天发现了 http://alagazam.net/,不但提供了原始风格的安装包,也提供了针对 Python 2.6 的接口(这也是之前一直没有升级的主要原因)。

从上面那个网站下载 Windows 版的安装包,默认安装即可。

2.2 配置

安装包已经把 Subversion 的 bin 目录加入到系统路径,然后需要把 bin 目录下的 mod_dav_svn.so 和 mod_authz_svn.so 放到 Apache 的 modules 目录下,并修改 httpd.conf,下面两行要取消注释:

#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_module modules/mod_dav.so

再加入下面的内容(后一段请根据自己的情况进行配置):

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /svn>
DAV svn
SVNParentPath D:/Work/SVNRoot
SVNListParentPath on
AuthType Basic
AuthName “Subversion repository”
AuthUserFile conf/user.conf
Require valid-user
</Location>

然后应该就可以从浏览器访问 svn 版本库了。

3. Trac

3.1 准备

a. Apache 的 Python 接口

原来的 mod_python 已经没有新版本可以用,那就改用据说性能更好的 mod_wsgi 吧,下载后放到 Apache 的 modules 目录下,并在 httpd.conf 中加入:

LoadModule wsgi_module modules/mod_wsgi.so

b. Subversion 的 Python 接口

从 2.1 提到的网站下载后,将压缩内的 svn 和 libsvn 解压到 Python 的 Lib/site-packages 目录下,并将 libsvn 目录下所有类似 _*.dll 的文件名改为 _*.pyd,注意 libsvn_swig_py-1.dll 不用改!这一段在 Trac 官网的安装文档中都有提到,如果不修改的话,会产生类似下面的错误提示信息:

Warning: Can’t synchronize with repository “(default)” (Unsupported version control system “svn”: No module named _fs). Look in the Trac log for more information.

c. Python 的软件包管理工具

下载对应版本的 setuptools,默认安装即可。

3.2 安装

有了 setuptools 真方便,安装 Trac 时会自动安装 Genshi,安装 Babel 后 Trac 就有中文界面(Trac 的插件也能用 setuptools 安装):

C:\Python26\Scripts>easy-install Trac
C:\Python26\Scripts>easy-install Babel

3.3 配置

a. 升级旧的 Trac 实例

C:\Python26\Scripts>trac-admin.exe D:\Work\TracRoot\juno upgrade
C:\Python26\Scripts>trac-admin.exe D:\Work\TracRoot\juno wiki upgrade

b. 设置 Apache 的虚拟路径(httpd.conf)

WSGIScriptAlias /trac D:/Work/TracRoot/trac.wsgi

<Directory D:/Work/TracRoot>
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>

其中 trac.wsgi 需要手工创建,内容如下(允许 TracRoot 下有多个 Trac 实例):

import os

os.environ[‘TRAC_ENV_PARENT_DIR’] = ‘D:\Work\TracRoot’
os.environ[‘PYTHON_EGG_CACHE’] = ‘D:\Work\TracRoot\.egg-cache’

import trac.web.main
application = trac.web.main.dispatch_request

Trac 的用户认证设置和原来一样,就不多说了。

This entry was posted in 软件开发 and tagged , . Bookmark the permalink.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s