工作需要,在自己笔记本上安装Subversion+Apache2+Swig+Viewvc开发环境。
由于对python和Apache网络服务器不太懂,折腾了一天半,才算配置成功。
因为配置过程有些复杂,下面简要整理一下过程,以供自己备忘,也让后来者参考,少走些弯路。
鄙人才疏学浅,错误之处在所难免,望海涵!Open-mouthed
------------
1.安装Apache2的HTTP服务器
Apache2不需要自己编译,可以直接用apt-get自动下载安装:
$sudo apt-get install apache2
编辑/etc/apache2/apache2.conf文件,最后一行输入你喜欢的IP地址,如:
ServerName 127.0.0.1
重启Apache服务:
$ sudo /etc/init.d/apache2 restart
在你的浏览器中键入 http://127.0.0.1, 如果没有问题就说明安装好了!
------------
2.编译安装swig1.3.36
SWIG (简单封装和接口生成器)是一个开放源代码系统,由Dave Beazley创建,现由其社群开发,很像Python. 它利用C和C++类型声明来生成完整的C扩展模块,生成的C扩展模块可以集成到现有库中供Python脚本使用。生成的C(和C++)扩展模块是完整的:它们自动处理数据转换,错误处理,引用计数,等等[3]。
下载地址:http://www.swig.org/。 解压并安装
$./configure --with-python=/python的安装目录/
$make
$sudo make install
默认安装到/usr/local下
------------
3.编译安装Subversion1.5
这里要注意,很重要的一点,不能直接用apt-get下载安装。原因应该是在源里面编译好的binary文件中没有作python绑定的配置。
Subversion Python绑定是一些访问Subversion功能的Python模块,在Subversion的每个主要版本发布时都会发布相应的Python绑定。
APR, APRUTIL和Subversion 源代码都可以从这里下载。当前最新版本为1.5:
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=260&expandFolder=74
下载subversion-1.5.0.tar.bz2 和subversion-deps-1.5.0.tar.gz 。
subversion-deps-1.5.0.tar.gz 包含APR APRUTIL neon serf zlib,如果没有安装,可以从这里编译安装。我的经验是
APR, APRUTIL 需要自己编译。而且要和subversion同一个版本,否则svn使用会有问题,无法用https,http通讯。
安装好以后开始安装Subversion, 还是鲁班三板斧:
$./configure --with-apxs=/usr/local/apache2/bin/apxs \
--with-apr=/usr/local/apr/ \
--with-apr-util=/usr/local/apr/ \
--with-swig=/usr/local/bin/swig \
PYTHON=/usr/bin/python2.5 \
PERL=/usr/bin/perl5.8.8 \
--with-ssl
$make
$sudo make install
./configure 等号右侧的路径根据自己的配置修改。具体含义可用
$./congfigure -h
来查看。这样配置,安装后会自动将mod_dav_svn.so 和mod_authz_svn.so将会复制到/usr/lib/apache2/modules/下,
并在/etc/apache2/httpd.conf中增加
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
记Apache从启动时调用这两个模块。
上面的选项一个都不能少,否则后面会出问题。
接下来为Subversion作Swig Python绑定。先要安装python的开发包
$sudo apt-get install python-dev
然后,
$make swig-py
$sudo make install-swig-py
目的应该是将svn的swig-py包编译安装到/usr/local/lib/svn-python/下。然后 符号联接到python的package中。
$ cd /usr/local/lib/python2.5/site-packages/
$ sudo ln -s /usr/local/lib/svn-python/libsvn .
$ sudo ln -s /usr/local/lib/svn-python/svn .
现在测试一下,是否绑好了
$python
>>>import svn.repos
>>>exit()
如果没有报错,就说明OK了。
再测试一下svn是否安装好了
$ svn --version
svn,版本 1.5.0 (r31699)
编译于 Jul 1 2008,18:38:06
Copyright (C) 2000-2008 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
可使用以下的版本库访问模块:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- 处理“http”方案
- 处理“https”方案
* ra_svn : 使用 svn 网络协议访问版本库的模块。
- 处理“svn”方案
* ra_local : 访问本地磁盘的版本库模块。
- 处理“file”方案
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
- 处理“http”方案
- 处理“https”方案
这说明客户端可以用file://, svn://,http://和https://和svn 的repository 通讯了
在/etc/apache2/httpd.conf 中增加:
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /var/local/repos
AuthType Basic
AuthName "Yang's Subversion Repository"
AuthUserFile /etc/svntrac.htpasswd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
$sudo /etc/init.d/apache2 restart
就可以用在浏览器上用http://127.0.0.1/repos访问了。
------------
4.安装配置viewvc
下载地址http://www.viewvc.org/, 当前版本是1.0.5,还很年轻!
$./viewvc-install
修改/usr/local/viewvc-1.0.5/viewvc.conf,参考其中的说明。
我的配置是:
#cvs_roots = cvs: /home/cvsroot
svn_roots = svn: /var/local/repos
svn_path = /usr/local/bin
default_root = svn
address = <a href="mailto:
[email protected]"></a>
然后在/etc/apache2/httpd.conf 中增加:
ScriptAlias /viewvc /usr/local/viewvc-1.0.5/bin/cgi/viewvc.cgi
最后,在我的Ubuntu 8.04 LTS中,需要刷新一下动态链接库配置文件,在别的Linux发布中可能不需要。
$ ldconfig
否则用浏览器打开http://127.0.0.1/viewvc时会可能出现下面错误:
An Exception Has Occurred
Python Traceback
Traceback (most recent call last):
File "/usr/local/viewvc-1.0.5/lib/viewvc.py", line 3766, in main
request.run_viewvc()
File "/usr/local/viewvc-1.0.5/lib/viewvc.py", line 253, in run_viewvc
import vclib.svn
File "/usr/local/viewvc-1.0.5/lib/vclib/svn/__init__.py", line 27, in <module>
from svn import fs, repos, core, delta
File "/usr/local/lib/svn-python/svn/fs.py", line 19, in <module>
from libsvn.fs import *
File "/usr/local/lib/svn-python/libsvn/fs.py", line 7, in <module>
import _fs
ImportError: libsvn_swig_py-1.so.0: cannot open shared object file: No such file or directory
我折腾了半天,最后还是在Achim同志的帮助下才发现的。
最后,再重启一下Apache:
$sudo /etc/init.d/apache2 restart
现在就可以在浏览器上用http://127.0.0.1/viewvc访问你的SVN仓库了,效果见下图。
----------
参考文献:
1. svnbook 中文版, http://svndoc.iusesvn.com/
2. http://cache.qihoo.com/wenda.php?do=snap&m=374ead4b0238829e99bd4e79c6a2e162&surl=http%3A%2F%2Fwww.scmlife.com%2Fdp-bbsthread-5993.html&act=fetchHtmlsnap&kw=ViewVC
3. http://blog.csdn.net/jq0123/archive/2007/04/16/1566157.aspx
4. 程序安装说明