一步一步搭建Svn+Apache環境

                    一步一步搭建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方式安裝相應包即可。

               驗證正確的如下: 

wKioL1T4IM_S-1iYAAGzJKhXGsU065.jpg

./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模塊目錄下。

wKiom1T4IIWT5luNAACEacnkrY4008.jpg

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

wKioL1T4IgajSdjxAAEVozJqVNA096.jpg

        2、通過windows下的TortoiseSVN客戶端checkout下載操作

        在E盤新建一個目錄test(名稱自定),進入該目錄,鼠標右鍵選擇SVN checkout...

wKioL1T4IkqDOKRcAAFOzFAxngI745.jpg



wKioL1T4IoKhflr5AAF-ObkUie4849.jpg

        3、通過windows下的TortoiseSVN客戶端commit上傳操作

        鼠標右鍵 E盤test目錄,選擇SVN Commit...

wKiom1T4Ib7T4-1vAAEE5LB3Eyw920.jpg


wKioL1T4Iw_DULNcAAFhpwmjTEU253.jpg

        4、在windows下的D盤新建lipengfei目錄,並checkout測試第3步測試成功否

        在D盤新建一個目錄lipengfei(名稱自定),進入該目錄,鼠標右鍵選擇SVN checkout...

wKiom1T4ImCwY89lAAFN-7mVhn0916.jpg

wKioL1T4I5my5Z6gAADDM-u3HDo236.jpg

    可以看出第3步在E盤test目錄上傳的1.txt是成功的,我在D盤新建lipengfei目錄可以成功checkout下載出來!

  5、在windows下的D盤新建lipengfei目錄,增加2.txt,測試E盤test目錄的SVN update

在D盤lipengfei目錄增加2.txt,鼠標右鍵該目錄選擇SVN Commit...

wKioL1T4I-PAvQhBAADGZZ6INLs656.jpg

wKiom1T4IuqxSdUrAAF_k3Q5pt4411.jpg

wKioL1T4JEWjmZkbAAEy4o6KiZk624.jpg

    進入E盤,鼠標右鍵test目錄選擇SVN Update...

wKioL1T4JGTSqUIKAAEjDVeYo7s038.jpg


wKiom1T4I3Gw7Y4oAADiRSuex-w126.jpg

   可以看出在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客戶端下面進行檢出和提交了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章