CentOS 下 Apache + Subversion 實現版本控制


        首先要說明一點的是Apache並不是必須安裝的,如果你只用在CentOS下本地實現版本控制的話,否則你至少要選擇一種服務器與SNV配合使用才能實現遠程版本控制,比較推崇使用Apache,好處實在太多了,比如多種身份驗證,可配置使用SSI加密等高級功能,當然,Apache也存在一些缺點,比如http本身是無狀態連接的,結果是導致連接速度相對要慢一點,不過本人在實際使用過程中感覺,只要你不是發燒極別的灰骨,基本可以忽略,呵呵.

       CentOS官方有資料專門介紹如何配置SVN的,不過官方都是用yum方式安裝的,確實YUM有時候確實好用,不過對於初學者還是推薦自編譯安裝,在這一過程中出現的問題自已試着解決,其實是一件非常有效的學習方法,也是非常有趣的一件事.

        CentOS官方資料: http://wiki.centos.org/HowTos/Subversion?highlight=(subversion)

安裝步驟:

1.安裝Apache
2.安裝subversion
3.創建版本庫

Apache安裝(原轉載的文章感覺這一塊講的不是很好,就加上了這一塊.先看看了解linux下Apache的編譯過程,不操作!):

1、下載:CentOS Apache
[root@localhost src]# chmod +x httpd-2.2.19.tar.gz
[root@localhost src]# tar -zxvf httpd-2.2.19.tar.gz

2)CentOS Apache設置編譯器的編譯參數
[root@localhost src]# cd httpd-2.2.19
[root@localhost httpd-2.2.19]# ./configure --prefix=/usr/local/apache2 --enable-dav --enable-so --enable-maintainer-mode

3)CentOS Apache編譯和安裝:
[root@localhost httpd-2.2.19]# make; make install
#如果沒有錯誤的話,那麼Apache就已經安裝在/usr/local/apache2目錄中了

4、CentOS Apache啓動服務:
[root@localhost httpd-2.2.19]# /usr/local/apache2/bin/apachectl start

5、CentOS Apache確定啓動狀:
[root@localhost apache2]# netstat -utl
tcp 0 0 *:http *:* LISTEN
#看到上面這行就表示你的Apache已經啓動。
#用瀏覽器訪問,看到It works!,說明apache已經安裝成功了,恭喜您!

+++++++++++++++++++++++++++++++++++++++++

正文開始,嘿嘿

一、準備好安裝包:

①apr-1.4.5.tar.gz   下載地址:http://apr.apache.org/

②apr-util-1.3.12.tar.gz

③subversion-1.6.17.tar.gz 下載地址: http://subversion.tigris.org/

④subversion-deps-1.6.3.tar.gz

⑤httpd-2.2.19.tar.gz 下載地址:http://httpd.apache.org/

注意:apache的版本與subversion版本的兼容問題,官網都有介紹的

二、開始安裝:把以上安裝包上傳至/usr/local/src目錄,cd /usr/local/src 進入該目錄

1、安裝apr

      tar zxvf apr-1.4.5.tar.gz #解壓包

      cd apr-1.4.5

      ./configure --prefix=/usr/local/apr

      make

      make install

2、安裝apr-util

      tar zxvf apr-util-1.3.12.tar.gz

      cd apr-util-1.3.12

      ./configure --with-apr=/usr/local/apr

      make

      make install

3、安裝 apache

      tar zxvf httpd-2.2.19.tar.gz

      cd httpd-2.2.19

      ./configure --prefix=/usr/local/apache2 --enable-dav --enable-so --enable-maintainer-mode --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config #--prefix表示把apache安裝在指定目錄

      make

      make install

4、安裝subversion

      tar zxvf subversion-1.6.17.tar.gz

      tar zxvf subversion-deps-1.6.3.tar.gz

      cd subversion-1.6.3

      ./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr

      make

      make install

      至此,安裝基本完畢,再配置下就可以使用了

      注意:因爲這些安裝包需要gcc編譯,所以要確保linux上裝有gcc程序,否則是沒辦法進行安裝的,在以上編譯過程中可能會出現 configure: error: Subversion requires SQLite,可以http://www.sqlite.org/ 可以下載到最新的Sqlite版本如:sqlite-amalgamation-3.6.13.tar.gz,解壓Sqlite3.6.13
      tar zxvf sqlite-amalgamation-3.6.13.tar.gz
      進入文件夾sqlite-amalgamation找到sqlite3.c將其複製到
    subversion-1.6.17/sqlite-amalgamation/sqlite3.c
      有可能在編譯時缺少zlib編譯不過,需要先編譯zlib,編譯方法同上。


三、在apache中配置SVN

      vi /usr/local/apache2/conf/httpd.conf

     ① 如果你看到如下兩句,說明安裝是成功的

      LoadModule dav_svn_module     modules/mod_dav_svn.so
      LoadModule authz_svn_module   modules/mod_authz_svn.so

      如果沒有以上兩句,請查看 /usr/local/apache2/modules/下有沒有mod_dav_svn.so,mod_authz_svn.so有則在#LoadModule foo_module modules/mod_foo.so下加入以上兩句。

      如果有下面一句就用#註釋掉

      #LoadModule foo_module modules/mod_foo.so


     ② 定義apache訪問svn配置:
      <Location /svn>
              DAV svn
      #      SVNPath /data/svn/repos
              SVNParentPath /data/svn
              AuthzSVNAccessFile /usr/local/svn/conf/authz.conf
              AuthType Basic
              AuthName "Subversion repository"
              AuthUserFile /usr/local/svn/conf/passwd.conf
              Require valid-user
      </Location>

    SVNPath 是SVN版本庫的路徑(這裏註釋了)。
    SVNParentPath 是SVN版本庫的根目錄路徑。
    AuthzSVNAccessFile SVN用戶的權限文件,配置用戶的權限就在這個文件,爲這方便管理把authz.conf文件放在SVN的conf目錄下
    AuthType 訪問的類型
    AuthName
    AuthUserFile SVN用戶的密碼保存文件,爲這方便管理同authz.conf文件放在SVN的conf目錄下



四、配置svn

      ①建立svn版本庫目錄

      mkdir -p /data/svn/repos #可以多建版本庫目錄

      ②建立svn版本庫

      svnadmin create /data/svn/repos

      mkdir -p /data/svn/repos #可以多建版本庫

      ③建立本地訪問控制文件,第一次創建加 -c 參數,就是第一次沒有passwd.conf文件, "-c"參數不是創建passwd.conf文件

      mkdir /usr/local/svn/conf

      /usr/local/apache2/bin/htpasswd -c /usr/local/svn/conf/passwd.conf admin

      然後輸入密碼即可,默認是MD5加密的

      /usr/local/apache2/bin/htpasswd /usr/local/svn/conf/passwd.conf svnusername #追加用戶

      ④建立本地項目控制文件

      touch /usr/local/svn/conf/authz.conf


      本例authz.conf內容爲:

      [groups]
      #<groupname1>=<username1>,<username2>
      admin=admin

      #[<versionLib>:projectName/directory]
      #@<groupsname>=<authorities>
      #<username>=<authorities>

      [/]
      @admin = rw      #指定用戶組成員可以讀寫根目錄所有應用

      [repos:/abc/aaa]
      svnusername= rw      #指定用戶svnusername可以讀寫:/abc/aaa目錄的文件

至此,整個安裝過程完成了!

五、測試連接

     ① 啓動apache

      /usr/local/apache2/bin/apachectl start

     ② 打開瀏覽器,輸入http://127.0.0.1/svn/repos #本例服務器ip是192.168.1.107

      使用剛纔創建的權限用戶名與密碼登錄即可訪問

      注意:在你上傳文件的時候可能會有如下權限不足的提示

      Permission denied
      svn: Commit failed (details follow):
      svn: Can't create directory '/data/svn/repos/db/transactions/0-1.txn': Permission denied

      這是因爲apache在線程用戶沒有權限訪問svn的倉庫,兩者分別屬於不同的用戶者

      本例apache屬於daemon擁有者,而svn倉庫屬於svn擁有者

      解決方法:

      chown -R daemon /data/svn/repos

      chmod -R 755 /data/svn/repos



       重啓下apache:

       /usr/local/apache2/bin/apachectl stop

       /usr/local/apache2/bin/apachectl start

    3. “Could not open the requested SVN filesystem” errorcode=2

        如果出現這個錯誤你就得看一下Apache的httpd.conf文件裏面相關版本庫路徑是不是正確,請確保使用的是絕對路徑.
發佈了44 篇原創文章 · 獲贊 3 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章