老服务器Subversion 升级和与 xampp 集成方法
在讲升级与集成方法之前先简要讲一下基本情况,公司原有 Subversion 服务器,相对较老,安装和使用于 2011年,之后沧海桑田,人员人事变动,服务器逐渐没有使用,密码差点都不记得了。现在因公司研发战线拉得越来越大和新业务扩大需要,准备将这个服务器再次利用上,不影响原来代码库的浏览和使用,同时增加文档和 Bug 测试跟踪功能。
服务器原来安装的 Subversion 版本实在有点老(1.6.18),众所周知,Subversion 在 1.7版后与之前的版本有阶段性的质变,代码库内内部文档组织结构都不一样(最明显的表现就是由原来的每个目录下的 .svn目录缩减至根目录下的一个.svn目录),性能也有所提升,所以决定先升级至最新的 1.9.5。
此外,为了满足公司软件项目Bug测试跟踪的要求,考虑安装较成熟稳定的基于Web的 mantis V2.5,服务器系统已安装具备Apache 2.2.4,仅能满足 Subversion 库浏览和静态页面的简单要求,无法满足 mantis 所需的 Apache/PHP/MySQL 这些复杂环境和高版本,如果自己逐个下载、配置和安装,实在有点烦琐,所以也不多做考虑直接使用xampp,一键搞定。
一般情况下,图省事可以直接安装xampp,配置它集成的Apache Webserver的端口不与原来的80端口冲突,再调整xampp和服务器系统中 Apache 的启动顺序(必须先启动 xampp,再启动httpctrl -k start),就可以与原来的Subversion、Apache和谐集成在一起。然而,这样相当于服务器启动了两个 Apache 服务器,而且还必须分端口访问,实际使用的时候不方便。对于有强迫症的人来说,当然还是多个集成且只使用一个Apache Webserver并通过常规的80端口访问和操作更优。
(本文内容主要记录在已有的旧版本 Subversion 基本上升级且与xampp搭配使用,至于 mantis 的安装和配置不在此文之列)
废话不多说,开撸!
一、已有软件环境
- RHEL 6.1 32bit
- Subversion 1.6.18
- Apache 2.2.4
二、实现目标
升级安装完后,实现版本升级和完美集成。
- subversion 1.9.5(the latest version due to Jun 24,2017)
- Apache 2.4.17
- Mantis 2.5
三、实现过程和方法
1.下载
subversion
http://apache.fayea.com/subversion/subversion-1.9.5.tar.gz (从1.7版本 后,subversion直接集成成一个package里, 不再区分 subversion和subversion-deps)
xampp-linux-5.6.14-0-installer.run
本来以上两个包足够,奈何原来的subversion 使用的sqlite数据库较老(V3.7.17),如果用其它的,不停的报错,甚是麻烦。为了兼容它还是重新使用它的老版本吧(sqlite-amalgamation-3071700.zip,请直接在网上搜索下载),简单实用错误少。
2.编译和安装
# chmod 777 xampp-linux-5.6.14-0-installer.run
# ./xampp-linux-5.6.14-0-installer.run
按提示进行安装即可。
# tar zxvf subversion-1.9.5.tar.gz
# cd subversion-1.9.5
# unzip sqlite-amalgamation-3071700.zip
# ./configure --prefix=/opt/svn --with-apr=/opt/lampp/bin/apr-1-config --with-apr-util=/opt/lampp/bin/apu-1-config --with-apxs=/opt/lampp/bin/apxs --with-zlib=/usr/local/zlib --enable-maintainer-mode --with-apache-libexecdir=/opt/lampp/modules
# make; make install
为了编译生成的 Subversion 可以与 xampp 中的 Apache 版本匹配并集成使用,必须注意 configure 中的链接库等指向目录,即 –with-apr, –with-apr-util,–with-apxs,–with-apache-libexecdir这几项尤其重要!
3.配置
将 subversion 目录下的两个动态库拷贝到 /opt/lammp/moduels 目录下,供 Apache 享用。
# cp ./subversion/mod_dav_svn/.libs/mod_dav_svn.so /opt/lampp/modules
# cp ./subversion/mod_authz_svn/.libs/mod_authz_svn.so /opt/lampp/modules
修改 /opt/lampp/etc/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 /home/svnroot
SVNListParentPath on
AuthType Basic
AuthName " Welcome to xxxx SVN Server... "
AuthUserFile /home/svnroot/passwd
AuthzSVNAccessFile /home/svnroot/authz
Require valid-user
</Location>
4.其它
subversion 生成多库的方法不再多说,直接在网上找度娘。
经配置后,可以直接不修改和改变原来的 Subversion 代码库,且和apache完美集成,代码提交和测试两不耽误。
四、题外话
在安装完成后,可以访问Apache的mantis,但Subversion一直提示出错:
Checkout from http://192.168.1.200/svn/tmp_repos, revision HEAD, Fully recursive, Externals included
Unable to connect to a repository at URL 'http://10.10.1.242/svn/tmp_repos'
Access to '/svn/tmp_repos' forbidden
调试了多次也没找到问题原因所在,结果查看Apache的Log才发现是项目配置文件 /home/svnroot/authz 中有的项目配置有错,导致无法访问!可见查看日志真的是很重要啊!
# vi /opt/lampp/logs/error_log