1. 程式人生 > >老伺服器Subversion 升級和與 xampp 整合方法

老伺服器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