一步一步搭建Svn+Apache環境(附源碼包)python
看了不少網上的搭建方法,可是由於配置的svn和Apache的版本問題和網上寫的教程的不完整等緣由,阻礙了不少想要學習的朋友!!今天親手搭建了一下Svn+Apache環境,而且詳細記錄了每一步搭建的細節,送給須要的朋友們!linux
軟件版本:
sql
redhat6.4(64位)數據庫
apr-1.5.1.tar.gzapache
apr-util-1.5.3.tar.gzwindows
httpd-2.2.27.tar.gz瀏覽器
sqlite-amalgamation-3.6.17.tar.gzbash
sqlite-amalgamation-3071501.zip服務器
subversion-1.8.10.tar.gzapp
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搭建
一、關閉iptables、selinux
service iptables stop //關閉防火牆 setenforce 0 //臨時關閉selinux vi /etc/selinux/config //永久關閉,要重啓 將SELINUX=enforcing改成SELINUX=disabled
二、建立管理用戶
groupadd sinova mkdir /app useradd -d /app/sinova -g sinova sinova echo "sinova" | passwd --stdinsinova
三、修改/etc/hosts
vi /etc/hosts 追加 192.168.8.88 svn
四、安裝軟件包
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
而後從新安裝sqlite後再configure。
配置SVN與apache
一、建立svn項目倉庫
chmod 777 /app [使用root用戶操做] mkdir -p /app/svnroot/ltzb #建立svn根目錄 /app/sinova/svn/bin/svnadmin create/app/svnroot/ltzb/test
二、建立權限配置文件
vi /app/svnroot/ltzb/authz.conf #添加以下內容 [/] * = r #表示對全部的用戶開放讀的權限 [test:/] lipengfei= rw #表示用戶liyizhen對倉庫test有讀寫權限。
三、建立用戶認證文件
/app/sinova/apache/bin/htpasswd -c/app/svnroot/ltzb/authfile lipengfei
四、加載模塊
svn安裝完成後,會在/app/sinova/svn/libexec目錄下產生mod_authz_svn.so和mod_dav_svn.so這兩個模塊,將這兩個模塊文件拷到apache模塊目錄下。
cp /app/sinova/svn/libexec/* /app/sinova/apache/modules/
#設置到權限問題使用root用戶來操做,而後賦權給相應用戶。
五、編輯apache配置文件
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>
六、啓動apache[使用root用戶,1024如下的端口全要有root權限啓動]
/app/sinova/apache/bin/apachectlstart
使用SVN客戶端測試
一、經過瀏覽器訪問svn,在地址欄中輸入http://192.168.0.105/ltzb/test
二、經過windows下的TortoiseSVN客戶端checkout下載操做
在E盤新建一個目錄test(名稱自定),進入該目錄,鼠標右鍵選擇SVN checkout...
三、經過windows下的TortoiseSVN客戶端commit上傳操做
鼠標右鍵 E盤test目錄,選擇SVN Commit...
四、在windows下的D盤新建lipengfei目錄,並checkout測試第3步測試成功否
在D盤新建一個目錄lipengfei(名稱自定),進入該目錄,鼠標右鍵選擇SVN checkout...
能夠看出第3步在E盤test目錄上傳的1.txt是成功的,我在D盤新建lipengfei目錄能夠成功checkout下載出來!
五、在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客戶端下面進行檢出和提交了。