基於svnserve的SVN伺服器(windows下安裝與配置)

來源:互聯網
上載者:User

基於svnserve的SVN伺服器(windows下安裝與配置)
關鍵字: svn

安裝SVNserve

從http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91得到最新版本的Subversion。
如果你已經安裝了Subversion,svnserve已經運行,你需要在繼續之前把它停下來。

運行Subversion安裝程式,如果你在你的伺服器上運行,可以跳過第4步。

開啟資源管理員,進入Subversion的安裝目錄(通常是C:Program FilesSubversion)的bin目錄,找到檔案svnserve.exe,intl3_svn.dll,libapr.dll,libapriconv.dll,libapriutil.dll,libdb*.dll,libeay32.dll和ssleay32.dll,複製這些檔案,或所有bin目錄內的檔案到你的伺服器目錄,例如c:svnserve。

運行SVNSERVE

現在svnserve已經安裝了,你需要在你的server運行它,最簡單的方法是在DOS視窗或者windows捷徑輸入:

svnserve.exe --daemon
svnserve將會在連接埠3690等待請求,--daemon選項告訴svnserve以守護進程方式運行,這樣在手動終止之前不會退出。

如果你沒有建立一個版本庫,根據下面的Apache伺服器設定指令“配置”一節。

為了驗證svnserve正常工作,使用TortoiseSVN → 版本庫瀏覽器來查看版本庫。

假定你的版本庫位於c:reposTestRepo,你的伺服器叫做localhost,輸入:

svn://localhost/repos/TestRepo
當被版本庫瀏覽器提示輸入。

你也可以使用 --root 選項設定根位置來限制訪問伺服器的目錄,從而增加安全性和節約輸入 svnserve URL 的時間:

svnserve.exe --daemon --root drive:pathtorepositoryroot
以前面的測試為例,svnserve 現在的運行命令為:

svnserve.exe --daemon --root c:repos
然後在 TortoiseSVN 中我們的版本庫瀏覽器 URL 縮短為:

svn://localhost/TestRepo
注意,當 svnserve 和版本庫位於不同分區或盤符時也需要使用 --root 選項。

Svnserve 可以提供任意數量的版本庫服務。只要將這些版本庫放到你剛才定義的根目錄下即可,然後使用相對於根的URL訪問它們。

警告

不要建立和訪問網際網路共用上的 Berkeley DB 版本庫,它不能存在於一個遠端檔案系統,即使是映射到盤符的共用。如果你希望在網際網路共用使用 Berkeley DB,結果難以預料-你可能會立刻看到奇怪的錯誤,也有可能幾個月之後才探索資料庫已經損壞了。

 

以服務形式運行SVNSERVE

 

使用普通使用者直接運行 svnserve 通常不是最好的方法。它意味著你的伺服器必須有一個使用者登入,還要記著重新啟動伺服器後重新啟動 svnserve。最好的方法是將 svnserve 作為 windows 服務運行。從 Subversion 1.4 開始,svnserve 可以安裝為 windows 服務。

為了將 svnserve 安裝為 Windows 服務,在一行內執行下面的命令,建立一個當 Windows 啟動後,自動啟動的服務。

sc create svnserve binpath= "c:svnservesvnserve.exe --service     --root c:repos" displayname= "Subversion" depend= tcpip start= auto
如果任一個路徑包含空格,你必須使用雙引號(逃逸字元)包含路徑,例如:

sc create svnserve binpath= ""C:Program FilesSubversionbinsvnserve.exe"    --service --root c:repos" displayname= "Subversion" depend= tcpip start= auto
在建立服務以後,你還可以增加描述。它在 Windows 服務管理員中顯示。

sc description svnserve "Subversion server (svnserve)"
注意 sc 的命令列很特殊。在 key= value 對中,key 與 = 之間不能有空格,但是在 value 之前,必須有空格。

提示

Microsoft 現在建議服務程式使用本地服務或網路服務帳戶運行,參考 The Services and Service Accounts Security Planning Guide。以本地服務帳戶建立服務,需要在上面的例子裡追加下面幾行。

obj= "NT AUTHORITYLocalService"
請注意需要給本地服務帳戶一些目錄的適當許可權,包括的 Subversion 和你的版本庫,還有所有鉤子指令碼使用的應用。此帳號的內建群組名是"LOCAL SERVICE"。

服務安裝完畢後,你需要在服務管理員中啟動它(僅此一次;當伺服器重啟後它會自動啟動)。

為了得到更詳細的資訊,可參考 Windows Service Support for Svnserve。

如果你已經使用 SvnService 封裝安裝了早期的 svnserve,現在想使用內建服務,那麼你需要將其從服務中刪除(切記先停止服務!)。使用簡單的命令

svnservice -remove
即可刪除服務。

SVNSERVE的認證

預設的 svnserve 配置提供了匿名的唯讀訪問。這意味著你可以使用 svn:// 的 URL 進行檢出和更新,或者使用 TortoiseSVN 的版本庫瀏覽器查看版本庫,但是不能提交任何修改。

為了開啟對版本庫的寫訪問,你可以編輯版本庫目錄的conf/svnserve.conf檔案,這個檔案控制了svnserve守護進程的配置,也提供了有用的文檔。

為了開啟匿名的寫訪問,只需要簡單得設定:

[general]anon-access = write
然而,你不會知道誰修改了版本庫,因為svn:author屬性是空的,你也不能控制誰來修改版本庫,這是一個很危險的設定。

解決這個問題的一個方法是建立密碼資料庫:

[general]anon-access = noneauth-access = writepassword-db = userfile
這裡的 userfile 與 svnserve.conf 檔案在同一個目錄,這個檔案也可以存在於檔案系統的其他地方(當多個版本庫使用相同的存取權限時尤其有用),可以使用絕對路徑,或者是 conf 的相對目錄,使用 或盤符不能工作。userfile 的結構如下:

[general]anon-access = noneauth-access = writepassword-db = userfile
這個例子拒絕所有的未認證使用者(匿名)訪問,給 userfile 中的使用者讀寫權限。

提示

如果使用相同的密碼資料庫維護多個版本庫,使用一個認證域將讓使用者的工作更加簡單,因為 TortoiseSVN 可以緩衝你的憑證,所以你只需要輸入一次,更多的資訊可以參考 Subversion 手冊的 建立使用者檔案和域 和 用戶端憑證緩衝。

使用SVN+SSH認證

另一種svnserve認證的方法是使用SSH來建立請求通道。

通過此方法,svnserve不會作為守護進程啟動,而是SSH為你啟動svnserve,以SSH授權使用者運行,為此,你需要在你的伺服器上有SSH守護進程。

It is beyond the scope of this documentation to detail the installation and setup of a secure shell, however you can find further information in the TortoiseSVN FAQ, SSH How-To. You can find other SSH topics within the FAQ by searching for “SSH”.

更多的關於svnserve的資訊可以看《使用 Subversion 進行版本管理》。

SVNSERVE基於路徑的授權
從Subversion1.3開始,svnserve支援與mod_authz_svn相同的路徑為基礎的授權模式,你需要編輯版本庫路徑下的conf/svnserve.conf引用的授權檔案。
[general]authz-db = authz
在這裡,authz是你建立用來定義存取權限的檔案,你可以為每一個版本庫使用單獨的檔案,或者為所有的版本庫使用相同的檔案,關於此檔案的格式可以查看“路徑為基礎的授權”一節。

支援SASL

從 Subversion 1.5.0 開始,svnserve 和 TortoiseSVN 支援 svn:// 協議的 Cyrus SASL(簡單認證和安全層)。你可以在 Subversion 程式筆記中找到更多資訊:在 Subversion 中使用 Cyrus SASL 認證。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.