linux 下subversion安裝
系統環境: centos5
核心:2.6.18-8.el5
apache:2.2.8
www(W@NeiWang0401)
一、安裝apache
 a. tar zxf httpd-2.2.8.tar.gz
 b。安裝apr apr-util
  # cd srclib/apr
  #./configure –prefix=/usr/local/apr
  # make
  # make install
  # cd apr-util/
  #./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr/
  # make
  # make install
 c.安裝apache
  #./configure –prefix=/usr/local/apache2 –enable-module=so –enable-mods-shared=all –enable-cache –enable-file-cache –enable-mem-cache –enable-disk-cache –enable-static-support –enable-static-htpasswd –enable-static-htdigest –enable-static-rotatelogs –enable-static-logresolve –enable-static-htdbm –enable-static-ab –enable-static-checkgid –with-mpm=worker –enable-ssl –enable-deflate –with-included-apr –enable-so –enable-rewrite –enable-proxy=share –enable-proxy-ajp=share –enable-dav=share –enable-dav-fs –with-apr=/usr/local/apr/ –with-apr-util=/usr/local/apr-util/
  #make
  #make install
 (測試一下apache是否安裝成功)
二、安裝php
 下載   ming-0.4.0.beta4.tar.gz
 wget http://downloads.sourceforge.net/ming/ming-0.4.0.beta4.tar.gz?modtime=1174994374&big_mirror=0
 # tar zxf ming-0.4.0.beta4.tar.gz
 # cd ming-0.4.0.beta4
 # ./configure
 # make
 # make install
 # tar zxf php-5.2.5.tar.gz
 # cd ming-0.4.0.beta4/php_ext/
 # cp * /home/web/php-5.2.5/ext/ming/  (出現是否讓覆蓋的提示是選擇否就ok了)
 
 # cd php-5.2.5
 # ./configure –with-apxs2=/usr/local/apache2/bin/apxs –prefix=/usr/local/php –enable-track-var –with-dom –enable-wddx –with-zlib –enable-bcmath –with-bz2 –enable-calendar –with-curl –with-curlwrappers –enable-exif –enable-ftp –with-gettext  –with-mysql=/usr/local/mysql  –with-mysqli=/usr/local/mysql/bin/mysql_config –enable-soap –enable-sockets –with-iconv  –enable-xslt –with-xslt-ablot=/usr/local/sablot/lib –enable-mbstring=all –enable-mbstr-enc-trans –enable-mbregex –with-pdo –with-pdo-mysql –with-pdo-sqlite –with-pdo-pqsql –with-xmlrpc –with-config-file-path=/etc –with-openssl –with-libxml-dir=/usr/include/libxml2/libxml –enable-memory-limit –enable-static –enable-maintainer-zts –enable-zend-multibyte –enable-inline-optimization –enable-zend-multibyte –with-expat-dir –with-xsl –with-gd –with-jpeg-dir –with-zlib-dir –with-png-dir –with-freetype-dir –with-ttf –enable-fastcgi –enable-force-cgi-redirect –disable-cli –enable-cal –with-kerberos –with-ming
 # make
 # make install
 # cp php.ini-dist /etc/php.ini
 在apache配置檔案中新增下面內容
 AddType application/x-httpd-php .php
 AddType application/x-httpd-php-source .phps
 測試apache和php的整合情況
三、安裝subversion
 a. # tar jxf subversion-1.4.5.tar.bz2
 b. # cd subversion-1.4.5
 c. # ./configure –prefix=/usr/local/subversion –with-apxs2=/usr/local/apache/bin/apxs –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util  –with-ssl
 d. # make
 e. # make install
四、配置
 a.建立庫檔案所在的目錄
  # mkdir -p /usr/local/svnroot/repository
 b.進入subversion的bin目錄
  # cd /usr/local/subversion/bin
 c.建立倉庫”bjso”
  # ./svnadmin create /usr/local/svnroot/repository/bjso
  # cd /usr/local/svnroot/repository/bjso
  # ls
   conf  dav  db  format  hooks  locks  README.txt(看看是不是多了些檔案,如果是則說明Subversion安裝成功了)
  # cd /usr/local/subversion/bin/
  下面這條語句將把路徑/home/user/import下找到的檔案匯入到你建立的Subversion倉庫中去,提交後的修訂版為1。
  ./svn import -m “New import” /usr/local/www/ file:///usr/local/svnroot/repository/bjso/
   Adding         /home/cuijie/web/index.html
   Committed revision 1.
  下面語句為修改倉庫許可權
  # chown -R www:www /usr/local/svnroot/repository
 d。修改版本庫配置檔案
  # vi /usr/local/svnroot/repository/bjso/conf/svnserve.conf
  [general]
  anon-access = none
  auth-access = write
  password-db = /usr/local/svnroot/repository/authfile
  authz-db = /usr/local/svnroot/repository/authz.conf
  realm = bjso
 e.修改Apache配置檔案
  # vi /usr/local/apache2/conf/httpd.conf
   確認下面2個模組是否存在
   LoadModule dav_svn_module     modules/mod_dav_svn.so
   LoadModule authz_svn_module   modules/mod_authz_svn.so
  在最後面新增下面內容
  NameVirtualHost 192.168.0.150
  <VirtualHost 192.168.0.150>
  ServerAdmin cuijie@beijingso.com
  DocumentRoot /usr/local/www/
  ServerName svn.bjso.com
  <Location />
        DAV svn
        SVNParentPath /usr/local/svnroot/repository/
        AuthzSVNAccessFile /usr/local/svnroot/repository/authz.conf
        AuthType Basic
        AuthName “Subversion”
        AuthUserFile /usr/local/svnroot/repository/authfile
       Require valid-user
  </Location>
  </VirtualHost>
  //SVNParentPath /usr/local/svnroot/repository/ 目錄不能與DocumentRoot目錄一樣,否則會出現使用瀏覽器訪問svn倉庫正常,但是當用客戶端svn命令check out的時候提示錯誤: 301 Moved Permanently subversion
  //其中authfile是通過
  htpasswd -b -c /usr/local/svnroot/repository/authfile cuijie cuijie@bjso
  //來建立的 -c  Create a new file.   -b  Use the password from the command line rather than prompting for it.
  //”Require valid-user”告訴apache在authfile中所有的使用者都可以訪問。
  //下面這一部分是用來配置一個虛擬主機,用subversion的鉤子來建立同步測試伺服器。
  <VirtualHost 192.168.0.150>
  ServerAdmin cuijie@beijingso.com
  DocumentRoot /home/cuijie/
  ServerName cuijie.bjso.com
  ErrorLog logs/192.168.0.150-error_log
  CustomLog logs/192.168.0.150-access_log common
  </VirtualHost>
五、許可權管理
 a。增加使用者
  //由於htpasswd是apache的內建命令,所以先進入apache的命令目錄
  #/usr/local/apache2/bin/htpasswd  /usr/local/svnroot/repository/authfile username
  //第一次設定使用者時使用-c表示新建一個使用者檔案。回車後輸入使用者密碼,完成對使用者的增加,再增加別的使用者時,不用加c
 b.許可權分配
  配置使用者訪問許可權,用於定義使用者組和版本庫目錄許可權
  # vi /usr/local/svnroot/repository/authz.conf
  注意:
   * 許可權配置檔案中出現的使用者名稱必須已在使用者配置檔案中定義。也就是在前面用htpasswd新增的使用者
   * 對許可權配置檔案的修改立即生效,不必重啟svn。
 
  使用者組格式:
   [groups]
   admin = 使用者1,使用者2
   其中,1個使用者組可以包含1個或多個使用者,使用者間以逗號分隔。
  版本庫目錄格式:
   [版本庫:/專案目錄]
   @使用者組名 = 許可權
   使用者名稱 = 許可權
   其中,方框號內部分可以有多種寫法:
   /,表示根目錄及以下。根目錄是svnserve啟動時指定的,我們指定為/usr/local/svnroot/repository。這樣,/就是表示對全部版本庫設定許可權。
   bjso:/,表示對版本庫bjso設定許可權
   [groups]
   admin = wanglei liguang duanhaibo liangzhongzheng lijing suiliang gaoyueqiu zhangchuanming zhouanning cuijie
   [/]
   @admin = rw
   [bjso:/]
   @admin = rw
 c.刪除Subversion預設安裝庫檔案許可權檔案authz,passwd
  # rm /usr/local/svnroot/repository/bjso/conf/authz
  # rm /usr/local/svnroot/repository/bjso/conf/passwd
六、測試
 測試
 如果順利的話,就可以通過http://192.168.0.150/bjso訪問了,GoodLuck!
七、建立一個subversion的同步測試伺服器
 原理: 基於subversion的鉤子,即hook。在subversion執行一個操作時,那會相應的首先去呼叫相關的鉤子程式(如果存在的話)。那麼實現一個同步的測試伺服器,我們只需要在一個使用者執行完畢一個commit操作之後,讓鉤子程式去自動更新測試伺服器的檔案即可。通過這個思路,我們需要作的就是建立一個post-commit的鉤子。
 a。使用checkout建立一個工作副本
  #mkdir /usr/local/www
  # chown -R www:www /usr/local/www/
  //apache執行使用者對此目錄有完全的可讀寫操作許可權
  # svn checkout file:///usr/local/svnroot/repository/bjso/ /usr/local/www/
  //取出subversion上的檔案,可能需要密碼
  //如果成功則會提示類似下面輸出
   A    /usr/local/www/新建資料夾
   A    /usr/local/www/新建 文字文件.txt
   A    /usr/local/www/新建資料夾 (2)
   A    /usr/local/www/index.php
   取出修訂版 6
  
  請保證執行checkout語句的使用者是daemon,否則在以後鉤子呼叫update時會出現無法建立或修改檔案的錯誤
 b。設定apache,把你需要的域名指向這個資料夾。
  開啟http://192.168.1.251 用來進行同步測試。
 c。建立鉤子。
  # cd /usr/local/svnroot/repository/bjso/hooks/
  # vi post-commit (以www使用者身份)
   #!/bin/sh
   svn update /usr/local/www/ >>/usr/local/svnroot/repository/bjso/hooks/svn_hook_log.txt
完成