Linux下SVN服務器的搭建與配置
一、準備
OS:Linux
二、安裝
- #cd /usr/local/src/tarbag
- #tar –xzvf subversion-1.6.6.tar.gz –C ../software/
- #cd /usr/local/src/software/subversion-1.6.6
- #./configure /
- --prefix=/usr/local/subversion / //設置安裝目錄
- --with-apr=/usr/local/apache2.2.15 / //指向apr配置文件所在目錄,爲了和apache同步所以指到這
- --with-apr-util=/usr/local/apache2.2.15 / //同上
- --with-apxs=/usr/local/apache2.2.15/bin/apxs /
- --with-ssl / //ssl加密
- --with-zlib /
- --enable-maintainer-mode
- #make && make install //編譯安裝
- ( 如果./configure編譯出錯:
- get the sqlite 3.6.13 amalgamation from:
- http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
- unpack the archive using tar/gunzip and copy sqlite3.c from the
- resulting directory to:
- This file also ships as part of the subversion-deps distribution.
- configure: error: Subversion requires SQLite
- 按照以上提示下載sqlite-amalgamation-3.6.13.tar.gz
- #cd /usr/local/src/tarbag
- #wget http://www.sqlite.org/sqlite-amalgamation-3.6.13.tar.gz
- #tar zxvf sqlite-amalgamation-3.6.13.tar.gz -C ../software
- # mkdir /usr/local/src/software/subversion-1.6.6/sqlite-amalgamation
- # cp /usr/local/src/software/sqlite-3.6.13/sqlite3.c /usr/local/software/subversion-1.6.6/sqlite-amalgamation/
- #cd /usr/local/src/software/subversion-1.6.6
- 再次configure,報錯如下:
- configure: maintainer-mode: adding GCC warning flags
- configure: error: –with-zlib requires an argument.
- 安裝zlib,下載subversion-deps-1.6.6.tar.bz2
- #cd /usr/local/src/tarbag
- #wget http://subversion.tigris.org/downloads/subversion-deps-1.6.6.tar.bz2
- #tar jxvf subversion-deps-1.6.6.tar.bz2 -C ../software
- # cd ../software/subversion-1.6.6/zlib/
- # ./configure –shared
- # make
- #cd /usr/local/src/software/subversion-1.6.6
- 再次configure:
- #./configure /
- --prefix=/usr/local/subversion / //設置安裝目錄
- --with-apr=/usr/local/apache2 / //指向apr配置文件所在目錄,爲了和apache同步所以指到這
- --with-apr-util=/usr/local/apache2 / //同上
- --with-apxs=/usr/local/apache2/bin/apxs /
- --with-ssl / //ssl加密
- --with-zlib--with-zlib=/usr/local/src/software/subversion-1.6.6/zlib/ / //指定剛剛安裝的zlib目錄
- --enable-maintainer-mode
- # make && make install )
- #mkdir /usr/local/subversion/repos //把所有的庫建在repos這個目錄中
- #/usr/local/subversion/svnadmin create /usr/local/subversion/repos/garden //建garden庫
//把data下的garden文件全部倒入庫garden中
- #./svn import /data/garden file://usr/local/subversion/repos/garden –m "註釋"
//先前svn有個庫名叫php,具體目錄是/www/svn/php
- #./svnadmin hotcopy /www/svn/php /usr/local/subversion/repos/php
apache編譯時候需要加 "--enable-dav" "--enable-dav-fs" "--enable-dav-lock"這三個選項.
- #vi http.conf
- LoadModule dav_svn_module modules/mod_dav_svn.so
- LoadModule authz_svn_module modules/mod_authz_svn.so //這兩編譯時候會自己添加的
- Include conf/extra/httpd-dav.conf //將這行的註釋去掉.
- <Location /svn/ > //注意svn後面要加 "/" 不然不能顯示主目錄
- Dav svn
- SVNListParentPath on
- SVNPathAuthz off
- SVNParentPath /usr/local/subversion/repos/ //此處配置你的版本庫根目錄.
- Options Indexes FollowSymLinks
- Order Allow,Deny
- Allow from all
- AuthType Basic
- AuthName "Subversion repository" //提示對話框標題
- AuthzSVNAccessFile "/usr/local/subversion/conf/authz" //用戶權限配置文件
- AuthUserFile "/usr/local/subversion/conf/passwd" //訪問版本庫用戶的文件,須用apache 的 htpasswd命令生成
- Require valid-user
- </Location>
第一次添加用戶需要加上-c參數,以後都不需要參數
- # htpasswd -c /usr/local/subversion/conf/passwd
- # cd /usr/local/subversion/conf
- # vi authz
- [groups]
- administrator = svnadmin #定義組,一個組內可以包括多個用戶
- garden = gardenuser,gardenuser1,testuser
- php = phpuser,phpuser2,phpuser3 #
- [garden:/]
- @administrator = rw #administrator 這個組對garden整個庫有讀寫(rw)權限
- @garden = rw #這個組也是讀寫,設定組的話,前面要加上“@”符號。
- Phpuser = rw #不帶@,表示它爲用戶,phpuser這個用戶對這個庫有讀寫權限
- * = r #"*"表示其他任何用戶,而且只讀
- //以下是對garden庫下的tip目錄的權限配置
- [garden:/tip]
- @administrator = rw
- @garden = rw
- * = r
- //以下是對php這個庫做的權限配置
- [php:/]
- @administrator = rw
- @php = rw
- * = r
//打開http://192.168.50.203/svn/garden,在認證框中輸入用戶名。如果看到garden - Revision 0: /,說明成功了.
//或者打開http://192.168.50.203/svn/php,在認證框中輸入用戶名。如果看到garden - Revision 11: /,說明成功了.
十、常見錯誤
1、 服務器發送了意外的返回值(403 Forbidden),在響應 OPTIONS 的請求
檢查apache日誌/usr/local/apache/logs/error_log.如果出現類似" Failed to load the AuthzSVNAccessFile: An authz rule refers to group '@deployers', which is undefined" 的錯誤代碼。請仔細檢查你的authz文件中是否有定義@deployers這個組(group).
十一、庫的簡單備份.導入
- 備份: /usr/local/subversion/bin/svnadmin dump /usr/local/subversion/repos/garden/ > /tmp/garden.dump
- 導入:/usr/local/subversion/bin/svnadmin load /usr/local/subversion/repos/garden/ < /tmp/garden.dump