在Fedora 11上通過apache搭建SVN服務器(Subversion)

1. 安裝SVN所需module:
        #yum install mod_dav_svn
    安裝完畢之後發現,在/etc/httpd/conf.d下多出了subversion.conf,以及/etc/httpd/modules下多出了 mod_dav_svn.so和mod_authz_svn.so兩個文件,這正是subversion.conf中所需要的。

2. 修改subversion.conf,取消一下幾行的註釋,使之成爲:
    <Location /repos>
         DAV svn
         SVNParentPath /var/www/svn/
    #
    #   # Limit write permission to list of valid users.
    #   <LimitExcept GET PROPFIND OPTIONS REPORT>
    #      # Require SSL connection for password protection.
    #      # SSLRequireSSL
    #
    #      AuthzSVNAccessFile /etc/httpd/authz.conf
    #      AuthType Basic
    #      AuthName "Please enter your name and password"
    #      AuthUserFile /etc/httpd/conf.d/authfile
    #      Require valid-user
    #   </LimitExcept>
    </Location>

    其中,SVNParentPath是所有Repository的上層目錄,此處並沒有對訪問SVN的Repository進行限制,就像google code一樣,無須用戶名密碼即可查看,甚至checkout源代碼。

3. 在/var/www/下創建一個svn/的文件夾,並在此目錄下創建subversion版本庫:

    $ svnadmin create your_repo_name

4. 進入該repository,修改配置文件,位於your_repo_name/conf下,首先修改svnserve.conf,找到並去掉以下幾行的註釋:
    anon-access = read             #匿名訪問的權限,可以是read,write,none,默認爲read
    auth-access = write             #認證用戶的權限,可以是read,write,none,默認爲write
    password-db = passwd       #密碼數據庫的路徑
    authz-db = authz                #用戶操作權限

5. 修改passwd文件,其格式爲:
    [users]
    user1 = password1
    user2 = password2

6. 修改authz文件,格式爲:針對每一個repo_name下的目錄,指定每一個用戶應該具有怎樣的權限(注意每行前面不能有空格):
    [repo_name:/directory1]
    user1 = rw        #user1具有read和write權限
    [repo_name:/directory2]
    user2 = r          #user2只具有read權限

7. 在windows下用TortoiseSVN導入項目:
    將項目初始文件,建立成包含以下三個文件夾的形式,其中項目根目錄放入trunk下:
    svn_temp/trunk                    #包含項目整體的,穩定的代碼
    svn_temp/branch                 #包含項目的一個分支,如一個子功能
    svn_temp/tag                       #標誌項目的一個milestone,如一個release
    然後使用TortoiseSVN的import功能,這時可能會出現Permission denied的問題,這是因爲上傳文件的目錄的owner是root,需要修改目錄的owner:
    Can't open file '/var/www/svn/repo_name/db/txn-current-lock': Permission denied
    $ cd /var/www/svn
    $ chown -R apache.apache repo_name
    # chcon -R -t -t http_sys_content_rw_t repo_name       #這一步不需要,因爲已經關閉了selinux

    這樣可能存在問題,就是任意用戶如果知道了SVN的地址,都可以import任意文件到repository中。這可能需要引入訪問控制(to be continued)。

8. 通過http查看repository中的文件:
    http://your_ip_address:port/repos/your_repo_name

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