1. 程式人生 > >伺服器端SVN部署及基本使用

伺服器端SVN部署及基本使用

	在多人協同開發中,有一個必不可少的工具就是SVN/git,它能幫助我們更好地管理專案程式碼。現在就來學習一下怎麼在服務端部署SVN。
  • 系統:centos7.2
  1. 安裝SVN服務端
yum -y install subversion
  1. 檢視安裝路徑等資訊
rpm -ql subversion
  1. 建立版本庫目錄
mkdir /var/svn/svnrepos
  • 在這裡僅是建立目錄,用於儲存多個SVN版本庫,與SVN本身無關,和普通目錄一樣
  1. 建立svn版本庫
svnadmin create /var/svn/svnrepos/robin
  1. 修改配置
    進入版本庫目錄(在我這裡是robin), 可以看見如下檔案資訊:
    在這裡插入圖片描述
    進入到配置目錄conf下 ,可以看見如下檔案資訊:
    在這裡插入圖片描述
    authz:負責帳號許可權的管理,控制帳號讀寫許可權,也可以帳號進行分組
    passwd:負責帳號和密碼的使用者名稱單管理
    svnserve.conf:svn伺服器配置檔案
    1)、設定分組、許可權及帳戶名
    具體修改如下:
    在這裡插入圖片描述
    第一部分在groups區建立分組admin,other各包含使用者root1,root2和robin1,robin2
    第二部分設定許可權:admin組內使用者在當前版本庫下擁有讀寫許可權
    第三部分設定許可權:other組內使用者在當前版本庫的test目錄下擁有讀寫許可權,則對應的svn地址為svn://svn域名/版本庫/test
  • 加@時表示設定分組使用者的許可權,不加@表示設定單個使用者的許可權

     2)、設定完許可權後,設定帳戶密碼
    

    在這裡插入圖片描述
    等號左邊表示帳戶,右邊表示密碼
    3)、修改SVN伺服器配置
    vim svnserve.conf在這裡插入圖片描述
    解開圖中四句的註釋即可:
    “anon-access = read auth-access=write”表示開放匿名使用者請求許可權,即預設情況下,任何人只要知道了你的SVN地址就可以從倉庫中獲取檔案和寫入檔案,這當然應該禁止,解開註釋即表示開啟讀寫許可權驗證。
    "password-db = passwd"表示指定帳戶密碼檔案
    "authz-db = authz"表示帳戶及許可權檔案
    (在後面兩句中可以指定其他檔案來儲存帳戶、密碼及許可權,但檔案中的內容仍需按原有格式書寫)

  1. 關閉防火牆
    很多情況下服務端安裝完成,配置好後,無法連線SVN伺服器,均是防火牆問題。
    關閉防火牆的命令因作業系統而異,網上有很多教程,這裡就不再一一贅述了。
  2. 啟動SVN服務
svnserve -d -r /var/svn/svnrepos

如報錯,切換至根目錄下執行該命令
在這裡插入圖片描述
檢視svnserve程序

ps aux|grep svnserve

在這裡插入圖片描述
嘗試本地檢出:
在這裡插入圖片描述
8. 配置服務端版本庫更新至web目錄
在這裡插入圖片描述
由於我之前已經設定過一次,下面報錯了。下面還是以之前設定的版本庫繼續
在這裡插入圖片描述
9. 使用鉤子進行SVN自動更新到WEB目錄
1)、cd var/svn/svnrepos/1.0/hooks
在這裡插入圖片描述
2)、cp post-commit.tmpl post-commit #將原檔案複製出來,以作備份,svn將要執行的是post-commit檔案
在這裡插入圖片描述
3)、vim post-commit
編輯如下:
註釋最後三行:
在這裡插入圖片描述
加上自己要執行的同步的命令:

export LANG=zh_CN.UTF-8				#若客戶端和伺服器編碼不一樣會出現同步失敗
WEB=/usr/local/apache/htdocs/			#目標web專案路徑
svn update $WEB								#yum安裝或已註冊為svn服務的情況下可這樣使用,否則需要輸入完整路徑,如:/usr/bin/svn $WEB即上一行所定義的web專案路徑

設定post-commit檔案許可權:

chmod 777 post-commit

在這裡插入圖片描述
10. 將SVN設定開機自啟動
先查詢svn命令地址

which svnserve

在這裡插入圖片描述
在這裡插入圖片描述
檢驗一下:
本地倉庫編輯一份test.php
在這裡插入圖片描述
檢視Web目錄下檔案:
在這裡插入圖片描述
完成!