老伺服器Subversion 升級和與 xampp 整合方法
老伺服器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