伺服器端SVN部署及基本使用
阿新 • • 發佈:2018-11-30
在多人協同開發中,有一個必不可少的工具就是SVN/git,它能幫助我們更好地管理專案程式碼。現在就來學習一下怎麼在服務端部署SVN。
- 系統:centos7.2
- 安裝SVN服務端
yum -y install subversion
- 檢視安裝路徑等資訊
rpm -ql subversion
- 建立版本庫目錄
mkdir /var/svn/svnrepos
- 在這裡僅是建立目錄,用於儲存多個SVN版本庫,與SVN本身無關,和普通目錄一樣
- 建立svn版本庫
svnadmin create /var/svn/svnrepos/robin
- 修改配置
進入版本庫目錄(在我這裡是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"表示帳戶及許可權檔案
(在後面兩句中可以指定其他檔案來儲存帳戶、密碼及許可權,但檔案中的內容仍需按原有格式書寫)
- 關閉防火牆
很多情況下服務端安裝完成,配置好後,無法連線SVN伺服器,均是防火牆問題。
關閉防火牆的命令因作業系統而異,網上有很多教程,這裡就不再一一贅述了。 - 啟動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目錄下檔案:
完成!