一步一步搭建Svn+Apache環境(附源碼包)
看了很多網上的搭建方法,但是因爲配置的svn和Apache的版本問題和網上寫的教程的不完整等原因,阻礙了很多想要學習的朋友!!今天親手搭建了一下Svn+Apache環境,並且詳細記錄了每一步搭建的細節,送給需要的朋友們!
軟件版本:
redhat6.4(64位)
apr-1.5.1.tar.gz
apr-util-1.5.3.tar.gz
httpd-2.2.27.tar.gz
sqlite-amalgamation-3.6.17.tar.gz
sqlite-amalgamation-3071501.zip
subversion-1.8.10.tar.gz
TortoiseSVN_1.8.6.25419_x64_XiaZaiBa.zip(windows客戶端)
點擊 下載所有源碼包(免費下載,送給需要的朋友們)
SVN介紹
SVN是一個版本控制工具,Subversion的版本庫(repository),就是位於服務器,統一管理和儲存數據的地方。
題外話,搭建SVN服務器apache是必須的嗎?
Subversion(SVN)作爲一個單獨的版本管理軟件是不具備網頁瀏覽功能的。就是說,你可以用版本管理的客戶端比如:TotoriseSVN來和 SVN服務器進行連接。這樣如果你的電腦沒有安裝SVN客戶端就不能使用SVN服務器提供的服務了。爲了實現請客戶端的目標,就想通過網頁來進行訪問瀏 覽。所以就將網頁瀏覽的功能通過Apache服務器來實現。而通過Apache的插件來和SVN進行連接後,用戶可以通過瀏覽 器:IE,Firefox,NetScape等,訪問SVN服務器。這樣很方便了。現在有不少的SVN服務器軟件直接提供網頁功能,而且支持圖形界面。我 個人使用的是VisualSVN,感覺不錯,很容易管理,圖形化的界面。你可以嘗試下,至於SVN客戶端你可以用TotoriseSVN。 NetBeans,Eclipse等開發IDE都內置了SVN插件,很容易用的。
SVN數據存儲方式
在Subversion中,版本庫的數據存儲有兩種方式:一種是在Berkeley DB數據庫中存放數據;另一種是普通文件,採用自定義的格式來存儲,稱爲FSFS。
SVN搭建
1、關閉iptables、selinux
service iptables stop #關閉防火牆 setenforce 0 #臨時關閉selinux vi /etc/selinux/config #永久關閉,要重啓 將SELINUX=enforcing改爲SELINUX=disabled
2、創建管理用戶
groupadd sinova mkdir /app useradd -d /app/sinova -g sinova sinova echo "sinova" | passwd --stdinsinova
3、修改/etc/hosts
vi /etc/hosts 追加 192.168.8.88 svn
4、安裝軟件包
4.1安裝apache
tar zxf httpd-2.2.27.tar.gz cd httpd-2.2.27 ./configure --prefix=/app/sinova/apache--enable-dav --enable-so --enable-modules=most make make install
4.2 安裝apr、apr-util
tar zxf apr-1.5.1.tar.gz cd apr-1.5.1 ./buildconf #驗證系統是否已經安裝python、autoconf、libtool,如果沒有安裝,使用yum或rpm方式安裝相應包即可。
驗證正確的如下:
./configure --prefix=/app/sinova/apr make make install
tar zxf apr-util-1.5.3.tar.gz cd apr-util-1.5.3 ./configure --prefix=/app/sinova/apr-util--with-apr=/app/sinova/apr make && make install
4.3 安裝sqlite
tar zxf sqlite-amalgamation-3.6.17.tar.gz cd sqlite-3.6.17/ ./configure --prefix=/app/sinova/sqlite make make install
4.4 安裝svn
tar zxf subversion-1.8.10.tar.gz cd subversion-1.8.10 ./configure --prefix=/app/sinova/svn --with-apxs=/app/sinova/apache/bin/apxs \ --with-apr=/app/sinova/apr/bin/apr-1-config \ --with-apr-util=/app/sinova/apr-util/bin/apu-1-config \ --with-sqlite=/app/sinova/sqlite/ --with-openssl \ --with-zlib--enable-maintainer-mod make make install
configure時遇到錯誤:
get the sqlite 3.7.15.1amalgamation from:
http://www.sqlite.org/sqlite-amalgamation-3071501.zip
unpack the archive usingunzip and rename the resulting
directory to:
/app/soft/subversion-1.8.10/sqlite-amalgamation
configure: error:Subversion requires SQLite
解決辦法:
如果服務器不能聯網,下載http://www.sqlite.org/sqlite-amalgamation-3071501.zip,然後上傳至服務器。解壓
unzip sqlite-amalgamation-3071501.zip cp sqlite-amalgamation-3071501/* sqlite-3.6.17
配置SVN與apache 然後重新安裝sqlite後再configure。
1、創建svn項目倉庫
chmod 777 /app [使用root用戶操作] mkdir -p /app/svnroot/ltzb #創建svn根目錄 /app/sinova/svn/bin/svnadmin create /app/svnroot/ltzb/test
2、創建權限配置文件
vi /app/svnroot/ltzb/authz.conf #添加如下內容 [/] * = r #表示對所有的用戶開放讀的權限 [test:/] lipengfei= rw #表示用戶liyizhen對倉庫test有讀寫權限。
3、創建用戶認證文件
/app/sinova/apache/bin/htpasswd -c/app/svnroot/ltzb/authfile lipengfei
4、加載模塊
svn安裝完成後,會在/app/sinova/svn/libexec目錄下產生mod_authz_svn.so和mod_dav_svn.so這兩個模塊,將這兩個模塊文件拷到apache模塊目錄下。
cp /app/sinova/svn/libexec/* /app/sinova/apache/modules/
5、編輯apache配置文件 #設置到權限問題使用root用戶來操作,然後賦權給相應用戶。
vi /app/sinova/apache/conf/httpd.conf文件,修改如下內容: User sinova #修改 【66行】 Group sinova #修改 【67行】 ServerName www.example.com:80 #去掉本行前面的註釋 # LoadModule foo_module modules/mod_foo.so 添加 LoadModule dav_svn_module modules/mod_dav_svn.so #添加 LoadModule authz_svn_module modules/mod_authz_svn.so #添加
以下內容在最後添加:
<Location /ltzb> DAV svn SVNParentPath "/app/svnroot/ltzb" AuthzSVNAccessFile"/app/svnroot/ltzb/authz.conf" AuthType Basic AuthName "Subversion.zoneyump" AuthUserFile"/app/svnroot/ltzb/authfile" Require valid-user </location>
6、啓動apache[使用root用戶,1024以下的端口全要有root權限啓動]
/app/sinova/apache/bin/apachectlstart
使用SVN客戶端測試
1、通過瀏覽器訪問svn,在地址欄中輸入http://192.168.0.105/ltzb/test
2、通過windows下的TortoiseSVN客戶端checkout下載操作
在E盤新建一個目錄test(名稱自定),進入該目錄,鼠標右鍵選擇SVN checkout...
3、通過windows下的TortoiseSVN客戶端commit上傳操作
鼠標右鍵 E盤test目錄,選擇SVN Commit...
4、在windows下的D盤新建lipengfei目錄,並checkout測試第3步測試成功否
在D盤新建一個目錄lipengfei(名稱自定),進入該目錄,鼠標右鍵選擇SVN checkout...
可以看出第3步在E盤test目錄上傳的1.txt是成功的,我在D盤新建lipengfei目錄可以成功checkout下載出來!
5、在windows下的D盤新建lipengfei目錄,增加2.txt,測試E盤test目錄的SVN update
在D盤lipengfei目錄增加2.txt,鼠標右鍵該目錄選擇SVN Commit...
進入E盤,鼠標右鍵test目錄選擇SVN Update...
可以看出在D盤lipengfei目錄上傳的2.txt是成功的,我在E盤test目錄可以成功update出來!
在Linux環境下安裝好SVN服務器後,在Linux環境下可以正常地檢出、提交,在Windows PC上把已有的Repository檢出後,結果在提交的時候出現以下錯誤:
svn: Can’t open file ‘/home/svn/db/txn-current-lock’: Permission denied
出現這種問題的原因在於搭建SVN服務器,包括創建Repository目錄/home/svn目錄下的一切子目錄和文件都是在root用戶下進行的,所以在root用戶下檢出、提交都沒有問題。可在Windows PC上從客戶端訪問就有問題了,因爲是隻有擁有管理器權限的人才能對Repository目錄進行完全控制,而在Windows從客戶端訪問的話,因爲是Users用戶組的,對Repository沒有修改權限,所以不能提交。
解決辦法:在服務器上把Users對Repository的完全控制權限加上就可以了,執行如下命令對/app/svnroot/ltzb目錄下的所有文件和子目錄添加Users的讀寫權限
chmod -R o+rw /app/svnroot/ltzb/test
現在可以正常地從Windows客戶端下面進行檢出和提交了。