svn服务器搭建和使用:高效安装配置与日常管理教程
最近不少團隊在問版本控制工具,雖然現在Git當道,但有些場景SVN反而更順手。特別是做韌體開發或遊戲資源管理,動輒幾個GB的binary檔,SVN的集中式管理反而穩定。今天直接手把手帶你從裸機建置到日常維運,都是這幾年踩坑總結的經驗。
選CentOS 7不是跟風,而是它的SELinux和firewalld配置最成熟。記得先關SELinux嗎?新手常在這卡關:setenforce 0只是暫時生效,要永久關閉得改/etc/selinux/config裡的SELINUX=disabled,重啟後才算真正搞定。防火牆開3690端口時,很多人漏加--permanent參數,結果重啟服務端口又被封鎖。
安裝環節yum install subversion mod_dav_svn看似簡單,但關鍵在/etc/httpd/conf.d/subversion.conf的配置細節。這個配置檔決定生死:
SVNParentPath和SVNPath差別很大——前者允許動態創建倉庫,後者只能綁定單一倉庫。權限文件用htpasswd -cm /etc/svn-auth-users user1建立時,第一次一定要加-c參數,之後新增用戶就得去掉,否則會覆蓋原有文件!
創建倉庫svnadmin create /var/www/svn/project1後,別急著上傳程式碼。先到倉庫的conf/目錄下,手動編輯svnserve.conf打開anon-access = none和auth-access = write,再把用戶名密碼寫進同目錄的passwd文件。這裡有個坑:帳號密碼別用特殊符號,否則svn update時可能報認證失敗。
日常維運最怕硬碟爆滿。用svnadmin dump備份時,記得加--incremental參數做差異備份,否則幾百GB的倉庫每次全備份會死人。碰到版本庫損毀,先別慌,用svnadmin verify /path/to/repo定位壞塊,再用svnadmin recover修復,八成能救回來。去年我們有個倉庫硬碟壞道,就是靠這招撈回三個月的工作量。
權限管理是大課題。不推薦用svnserve.conf自帶的簡易權限控制,企業級環境一定要整合LDAP。在/etc/httpd/conf.d/subversion.conf裡改用:
搭配AuthzSVNAccessFile指定權限文件,才能實現部門/專案粒度的精細控制。曾經有團隊把財務系統源碼誤開放給全公司,就是權限文件沒寫好。
最後說說效能調優。SVN在處理大量小文件時特別慢,解法是用svnadmin pack壓縮版本庫(1.10版以上支援),能減少30%磁碟I/O。Apache側要調整/etc/httpd/conf.modules.d/00-base.conf中的Timeout和KeepAlive參數,大文件傳輸時才不會斷線。監控用svnlook info看最新提交,svnstat視覺化分析儲存庫健康度,比乾等報錯有效率得多。
評論: