歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Ubuntu(Mint)下搭建SVN服務器

Ubuntu(Mint)下搭建SVN服務器   1.安裝Subversion 1  www.2cto.com   sudo apt-get install subversion 2.創建倉庫 假定我們倉庫的父目錄為/home/svn   1 2 cd /home/svn sudo svnadmin create /home/svn/test 可以看到/home/svn目錄下面有一個test文件夾,裡面有conf,db,format,hooks,locks,README.txt幾個文件   3.啟動svn服務器 1 sudo svnserve -d -r /home/svn 4.測試svn服務器 1 2 svn co file://localhost/home/svn/test 輸出:Checked out revision 0 說明安裝成功   如果要通過浏覽器訪問的,則需要與apache配合:   1.安裝apache 如果沒有安裝apache,需要先安裝apache以及libapache2-svn   1 sudo apt-get install apache libapache2-svn 2.整合SVN 修改/etc/apache2/mods-available/dav_svn.conf   <Location /svn>     DAV svn     SVNParentPath /home/svn     AuthType Basic     AuthName "Subversion Repository"     AuthUserFile /etc/subversion/dav_svn.passwd     AuthzSVNAccessFile /etc/subversion/dav_svn.authz     Require valid-user </Location> 說明: 1.SVNParentPath表示的所有庫的父級目錄,SVNParentPath與SVNPath只能啟用一個。SVNPath只能創建一個倉庫,SVNParentPath則可以創建多個,由於通常不會只有一個倉庫,所以通常都會選擇SVNParentPath 2.AuthUserFile 是svn的用戶配置文件,位置可以自定義,文件也需要自己創建,不過得保證apache有訪問權限 3.AuthzSVNAccessFile 是svn的權限控制文件,其他同AuthUserFile   3.添加SVN用戶 1 sudo htpasswd -c /etc/subversion2/dav_svn.passwd username 回車之後需要輸入兩次密碼。 據說 -c 參數創建文件會覆蓋原有的信息,但是經過測試,並沒有覆蓋原有的用戶信息,所以,執行   1 2 sudo htpasswd -c /etc/subversion2/dav_svn.passwd user1 sudo htpasswd -c /etc/subversion2/dav_svn.passwd user2 dav_svn.passwd文件中依舊會有user1和user2兩個用戶信息,沒有沖突。 另外,/etc/subversion2/dav_svn.passwd文件需要與第2步中自定義的文件位置一致 完成之後可以看到dav_svn.passwd中有類似   1 xiao:$apr1$wq1l1SCM$lAgKYtQJUzpPZPgvQXTnX1 的片段,xiao是用戶名,後面的是加密後的密碼   4.修改SVN訪問權限 編輯 /etc/apache2/dav_svn.authz 如果想開放所有權限,那麼可以直接   1 2 [/] * = rw 表示用戶都有讀寫權限   5.重啟apache 1 sudo /etc/init.d/apache2 restart 訪問http://127.0.0.1/svn/test/可查看結果   補充說明:   1.整合SVN出錯 出現錯誤:   1 2 Invalid command 'AuthzSVNAccessFile', perhaps misspelled or defined by a module not included in the server configuration Action 'configtest' failed. 原因:沒有導入auth模塊 解決方法: 在   1 /etc/apache2/mods-enabled/dav_svn.load 中加入   1 LoadModule authz_svn_module /usr/lib/apache2/modules/mod_authz_svn.so 2.訪問倉庫列表 如果希望訪問所有的倉庫列表,可以修改/etc/apache2/mods-available/dav_svn.conf如下:   <Location /svn/>     DAV svn     SVNParentPath /home/svn     SVNListParentPath On     AuthType Basic     AuthName "Subversion Repository"     AuthUserFile /etc/subversion/dav_svn.passwd     AuthzSVNAccessFile /etc/subversion/dav_svn.authz     Require valid-user </Location> 注意上面的變化,%lt;Location /svn/>添加了尾部斜線,SVNListParentPath On是新添加的。 重啟apache後訪問http://127.0.0.1/svn/(結尾有個’/')可以看到結果   3.權限控制說明 /etc/apache2/dav_svn.authz 權限控制的一個示例   [groups] #用來分組用戶 group1 = xiao, xe group2 = user1, user2   [test:/] #倉庫名稱,[/]表示所有倉庫 @group1 = rw #表示group1組的用戶(xiao, xe)對test具有讀寫權限 @group2 = r  #表示group2組的用戶(user1, user2)對test只具有讀權限,沒有寫的權限 * = #表示所有用戶都沒有權限,即既不能讀,也不能寫   [test2:/] * = rw #表示所有用戶都具有讀寫權限 4.權限錯誤 出現 Can’t open directory ‘/home/svn’: Permission denied 或者 403 forbidden 錯誤的話,表示apache(通常賬戶是www-data)沒有權限文檔到svn所在目錄的權限,此時需要檢查/home/svn及其子文件夾的權限,比如   1 sudo chown -R www-data /home/svn 然後再訪問http://127.0.0.1/svn/test/查看結果   5.重啟apache的時候如果出現 Permission denied: make_sock: could not bind to address 0.0.0.0:80 等字樣,記得加sudo
Copyright © Linux教程網 All Rights Reserved