很久很久以前

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            34 隨筆 :: 4 文章 :: 17 評論 :: 0 Trackbacks
          安裝subversion
          基本命令:
          ??$?sudo?apt-get?install?subversion
          ??$?sudo?apt-get?install?libapache2-svn
          可以安裝的包:
          ?apache2
          ?apache2-common
          ?apache2-mpm-prefork
          ?apache2-utils
          ?libapache2-svn
          ?libapache2-mod-auth-pam
          ?libapache2-mod-auth-sys-group
          ?subversion
          ?subversion-tools


          創建一個名為subversion的組:groupadd subversion
          將自己(eg.:user)和www-data(apapch2帳號)用戶添加入subversion組,可以編輯/etc/group文件,在最后找到subversion添加入帳號名(eg:user,www-data),看上去就像這樣:subversion:x:1001:www-data,exp
          然后是創建subversion庫,并賦予subversion組中用戶有讀寫subversion庫的權限:
          ???$?sudo?mkdir?/home/svn??#創建svn庫的父路徑
          ???$?cd?/home/svn
          ???$?sudo?mkdir?myproject??#創建本svn庫的目錄
          ???$?sudo?svnadmin?create?/home/svn/myproject?#使用svn命令,創建svn庫
          ???$?sudo?chown?-R?root:subversion?myproject?#更改本目錄的組
          ???$?sudo?chmod?-R?g+rws?myproject?#給本目錄的組用戶增加讀寫和遞歸增加新加目錄的讀寫權限
          注意上面提到的命令順序,如果最后再執行創建庫的命令(svnadmin create ....)則創建的文件沒有獲得組用戶寫的權限,這樣在外部訪問提交的時候會出錯.
          對于本機,可以直接使用file命令來訪問:
          ??$?svn?co(or?checkout)?file:///home/svn/myproject
          #or
          ??$?svn?co?file://localhost/home/svn/myproject
          注意:如果您并不確定主機的名稱,您必須使用三個斜杠(///),而如果您指定了主機的名稱,則您必須使用兩個斜杠(//).
          此時對svn庫的權限是基于文件系統的,只要是subversion組中的用戶都可以訪問本svn庫。

          接下來,講述如何使用apache服務器來提供對svn庫的訪問
          編輯文件/etc/apache2/mods-available/dav_svn.conf
          增加如下的內容:
          ??<Location?/svn/myproject>
          ?????DAV?svn
          ?????SVNPath?/home/svn/myproject
          ?????AuthType?Basic
          ?????AuthName?"myproject?subversion?repository"
          ?????AuthUserFile?/etc/subversion/passwd
          ?????
          <LimitExcept?GET?PROPFIND?OPTIONS?REPORT>
          ????????Require?valid-user
          ?????
          </LimitExcept>
          ??
          </Location>

          apache會解析url中的/svn/myproject部分,來定位svn庫,當收到此請求時,會查詢svn庫:/home/svn/myproject,這里的認證方式是basic,對于訪問要求valid-user,帳號文件在/etc/subversion/passwd中。
          注意重新設置后要重啟apache2:sudo /etc/init.d/apache2 restart
          編輯生成帳號文件: sudo htpasswd2 -c /etc/subversion/passwd user? #給user帳號創建口令
          這時候可以通過瀏覽器來瀏覽svn庫了
          在我的設置中發現,apache2會自動綁定ipv6地址,可能會有些問題,可以強制apache綁定v4地址,在/etc/apache2/port.conf中改成:Listen [bindedip]:[port]的形式

          通過https來訪問svn庫
          首先生成一個 SSL 簽名,使用命令

          ?# apache2-ssl-certificate

          這里會有一系列關于你的個人隱私的問題,回答完了,自然的簽名也就生成了,然
          后我們就要在 apache2 里面打開 SSL 了,現在要做的是開啟 ssl 模塊

          ?# a2enmod ssl

          然后,使用 apache2 的虛擬主機功能來添加 SSL 的支持,將

          ?/etc/apache2/sites-available/default

          復制一份,叫

          ?/etc/apache2/sites-available/ssl

          好啦

          修改 default 文件的開頭為

          ?NameVirtualHost *:80
          ?<VirtualHost *:80>

          修改 ssl 文件的開頭為

          ?NameVirtualHost *:443
          ?<VirtualHost *:443>

          這里 443 是 SSL 的標準端口。

          并在 ssl 文件中加入如下內容,在<VirtualHost></VirtualHost>內

          ?SSLEngine On
          ?SSLCertificateFile /etc/apache2/ssl/apache.pem

          保存文件后,運行命令

          ?? # a2ensite ssl

          來激活這個虛擬主機

          現在,修改文件

          ?/etc/apache2/ports.conf

          加上一行

          ?Listen 443

          好了,到此為止,SSL 服務器配置完成,重新啟動 apache 吧。

          ?

          一些問題:
          可能出現 RA layer request failed svn: MKACTIVITY of 400 Bad Request 之類的錯誤,這可能是因為使用了代理的原因,代理不支持svn的擴展命令,see:http://subversion.tigris.org/faq.html#proxy
          還有種原因,就是可能是你的客戶端使用的是windowsxp,其他版本的windows我沒試過,也是這樣的錯誤,在linux下正常,解決方法不太清楚。
          RA layer request failed svn: MKACTIVITY of 400 Bad Request,無論什么原因都可以用https代替http來暫時解決這樣的問題。

          參考:
          http://fanqiang.chinaunix.net/app/web/2005-05-18/3257.shtml
          http://wiki.ubuntu.org.cn/SubVersion?highlight=%28subversion%29

          posted on 2006-09-05 17:00 Long Long Ago 閱讀(2996) 評論(0)  編輯  收藏 所屬分類: others
          主站蜘蛛池模板: 新巴尔虎左旗| 称多县| 合江县| 洪江市| 乐陵市| 资源县| 宁远县| 历史| 渭源县| 舟山市| 丽水市| 皮山县| 太仓市| 萝北县| 兖州市| 雷山县| 古交市| 高雄市| 景宁| 黄大仙区| 商南县| 临西县| 昌黎县| 两当县| 淮阳县| 长春市| 宁城县| 万全县| 金昌市| 仙游县| 贵德县| 兴安县| 井陉县| 大新县| 晋江市| 夹江县| 卓尼县| 大兴区| 凤城市| 荆州市| 益阳市|