小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

博客園 - Java, Python, Jython and .NET. - Subversion配置安裝教程(二)

 ekylin 2006-06-22

Subversion配置安裝教程(二)

    今天接著昨天的內(nèi)容講Subversion的安全配置。在上一講中我們在Apachehttpd.conf文件里加入了這樣一節(jié):
<Location /svn>
DAV svn
SVNParentPath e:\SVN
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile passwd
#AuthzSVNAccessFile svnaccessfile
Require valid-user
</Location> 
    下面我來解釋一下這些配置信息用途:

<Location /svn>

說明我們所有的代碼倉庫在/svn這個虛擬目錄下

DAV svn

說明Apache會使用svn這個module來解析這個虛擬目錄

SVNParentPath e:\SVN

說明所有的代碼倉庫都在本地硬盤的e:\SVN

AuthType Basic

使用最基本的認(rèn)證校驗,用戶名/密碼

AuthName "Subversion repositories"

說明在認(rèn)證對話框彈出的時候,對話框的標(biāo)題顯示,你可以把它修改成你想要的任何提示信息,比如:AuthName "Warning"等等

AuthUserFile passwd

說明我們使用的access list文件的名字,在上一講中我們建立的文件名字是passwd,所以這里是passwd。如果你建立的文件名字是其他的,這里要作相應(yīng)的改動

AuthzSVNAccessFile

說明svn自己控制的access list文件,這個文件很重要,可以豐富svn的安全配置,在下面會講到

Require valid-user

說明只有輸入正確的用戶名/密碼才能訪問


上述的配置只能是最簡單的安全配置,如果你想擁有更強(qiáng)大的安全配置,就需要加入一些東西了。比如:

  1. 如果你想讓所有的匿名用戶能訪問代碼倉庫,對某些特定用戶才開放可寫的權(quán)限,則需要把 
    Require valid-user
    改成
    <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
    </LimitExcept>
  2. 如果你對于代碼倉庫里面某些目錄還有更細(xì)致的訪問控制,只用passwd就沒辦法啦,這個時候我們就需要AuthzSVNAccessFile文件了,去掉#AuthzSVNAccessFile svnaccessfile這一行前面的注釋。Apache首先會使用passwd校驗用戶名和密碼,然后會認(rèn)證信息傳給SubversionAuthzSVNAccessFile模塊,由這個模塊作更進(jìn)一步的權(quán)限控制。首先我們來新建一個文件svnaccessfile,內(nèi)容如下:
    [groups]
    developers = user1,user2,user3,user4
    docs = user5,user6,user7
    #to allow everyone read access
    [/]
    * = r
    #allow all developers complete access
    @developers = rw
    #give the doc people write access to the docs folder
    [/project/trunk/doc]
    @docs = rw
    首先我們定義了兩個group,一個是developer,代表開發(fā)組,另外一個是docs,代表文檔撰寫組,然后
    [/]
    * = r
    意思是對于所有的用戶開放可讀的權(quán)限。注意這里的[/],表示是對根目錄下的所有代碼倉庫賦予權(quán)限。接著是
    @developers = rw
    [/project/trunk/doc]
    @docs=rw                                                                                                                                                                                                                                                                  
    這這里的@應(yīng)該代表的是group的意思(這個還沒有確認(rèn),是我自己猜測的,因為如果是直接給單一用戶賦予權(quán)限,則不需要前面的@,哪位大俠可以證實(shí)一下我的猜測?歡迎指教)注意這里對于docs這個組,我們一樣指定了目錄路徑,而不是對于整個代碼倉庫。

    這里再說說SVNParentPath,配置了SVNParentPath,以后每次在根目錄下面加入新的repository就不需要再重新配置SubversionApache了,自動獲取了根目錄的配置信息,很方便。然而這也引發(fā)了另外一個問題,當(dāng)你在瀏覽器地址欄里輸入http://youserver/svn/的時候,服務(wù)器會報錯,提示你沒有權(quán)限訪問訪問這個url,我們想要的效果是瀏覽到這個url時能夠把根目錄下的所有的repository列出來。完成這個工作需要寫點(diǎn)代碼了,使用的工具可以是很多,這里使用php,當(dāng)然我想用perl或者python一定是沒有問題。首先要安裝php,使apache支持php. 以下是參考了shg918的文檔,在此表示感謝!


  1. 首先去http://www3./soft/9122.html 下載php4.3.1,接下來我們來手動配置一下apache
  2. 將下載的php壓縮文件解壓,文件夾改名為php復(fù)制到你想放置的目錄路徑下,注意目錄名不能有空格,否則apache會找不到相關(guān)的module,比如D:/php-4.3.10RC1-Win32
  3. 打開剛才解壓的PHP目錄,你會發(fā)現(xiàn)有一個叫做"php.ini-dist"的文件,這就是PHP的配置文件了,你需要把它改名成"php.ini",然后復(fù)制到系統(tǒng)目錄windows2K應(yīng)該是winnt)下。打開這個配置文件,把; cgi.force_redirect = 1改成 cgi.force_redirect = 0,這樣做是強(qiáng)迫不運(yùn)行在cgi模式下,我們希望php工作在Apachemodule模式下。
  4. PHP安裝目錄下的"php4ts.dll"必須要復(fù)制到windows系統(tǒng)的system32目錄下。
  5. dllsextensions目錄里的所有文件拷到system32里。(我猜測這里是為了支持mysql等才需要作的,可能對我們來說并不需要。)
  6. 打開Apache的配置文件http.conf,在module配置節(jié)末尾加上LoadModule php4_module D:/php-4.3.10RC1-Win32/sapi/php4apache2.dllAddType application/x-httpd-php .php .php3 .php4

Ok,配置完畢,現(xiàn)在Apache可以支持php了?,F(xiàn)在用文本編輯器編寫一個php文件,保存為svn_index.php,內(nèi)容如下:

 

<html>

<head>

<title>Subversion Repositories</title>

</head>

<body>

 

<h2>Subversion Repositories</h2>

<p>

<?php

    $svnparentpath = "e:/svn";

    $svnparenturl = "/svn";

 

    $dh = opendir( $svnparentpath );

    if( $dh ) {

        while( $dir = readdir( $dh ) ) {

            $svndir = $svnparentpath . "/" . $dir;

            $svndbdir = $svndir . "/db";

            $svnfstypefile = $svndbdir . "/fs-type";

            if( is_dir( $svndir ) && is_dir( $svndbdir ) ) {

                echo "<a href=\"" . $svnparenturl . "/" .

                        $dir . "\">" . $dir . "</a>\n";

                if( file_exists( $svnfstypefile ) ) {

                    $handle = fopen ("$svnfstypefile", "r");

                    $buffer = fgets($handle, 4096);

                    fclose( $handle );

                    $buffer = chop( $buffer );

                    if( strcmp( $buffer, "fsfs" )==0 ) {

                        echo " (FSFS) <br />\n";

                    } else {

                        echo " (BDB) <br />\n";

                    }

                } else {

                    echo " (BDB) <br />\n";

                }

            }

        }

        closedir( $dh );

    }

?>

</p>

</body>

</html>


上述php文件中svnparentpath = "e:/svn";需要注意,你的subversion的代碼倉庫的根目錄可能并不在e:/svn,請修改和你自己設(shè)置一樣的路徑。更改Apache的配置文件http.conf文件,把#LoadModule rewrite_module modules/mod_rewrite.so前面的注釋去掉。然后在文件末尾加上如下幾句:

RewriteEngine on

RewriteRule ^/svn$ /svn_index.php [PT]

RewriteRule ^/svn/$ /svn_index.php [PT]

RewriteRule ^/svn/index.html$ /svn_index.php [PT]

好了,請從新在瀏覽器地址欄中輸入http://youserver/svn ,你會發(fā)現(xiàn)Apache會把當(dāng)前Subversion根目錄下的所有代碼倉庫列出來了。如圖:

今天就講到這里吧,明天繼續(xù)講解Subversion的SSL加密連接的設(shè)置。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多