Linux-CentOS 6.5 x64服務器下VisualSVN環境搭建
背景
本公司項目部原多個項目都是用的是VisualSVN Server部署在windows系統下。本身在使用中系統硬件存在問題,使用中存在系統卡頓現象嚴重。之後遷移辦公區後直接無法開機,還好有塊相同型號的主板,才避免了重裝系統,數據丟失的風險。
所以,決定
1.將原所有項目信息遷移到linux服務器下
2.對遷移到linux服務器下的SVN進行,定期本地和異地備份
那麼,需要先進行linux服務器上的svn搭建,然後VisualSVN數據的備份以及導入,最後自動備份腳本的創建
其中svn搭建主要涉及到SVN庫和用戶配置信息的規劃。
SVN環境信息說明
CentOS 6.5 x64
subversion-1.9.4
sqlite-amalgamation-3080700
apr-1.5.1
apr-util-1.5.4
pcre-8.33
zlib-1.2.8
SVN環境規劃
在安裝SVN時,因環境不同導致需求會出現不同。比如有的需要https形式的訪問,有的需要有認證證書,有的需要通過tomcat來進行運行,有的需要對多個版本庫進行管理。
以下內容主要說明在工作環境中,對訪問安全方面要求不高,僅僅以”svn://“方式訪問即可,需要對多個版本庫進行管理、及自動備份的過程記錄。
SVN帳號配置
為啟動SVN服務特定的帳號,不使用root帳號啟動,避免安全隱患。
SVN安裝包準備
安裝是通過手動編譯安裝的,如果你對svn熟悉的話,直接使用yum等方式去進行安裝好了。
上傳subversion安裝包
切換到svn帳號,上傳subversion和sqlite-amalgamation 到svn帳號的home目錄下,並將sqlite包解壓後放入到subversion根目錄中
那麼,subversion的安裝包已經準備好了,現在將subversion 需要的相關安裝包進行安裝
相關安裝包準備
相關包的安裝都是通過root用戶進行安裝,所以切換回root帳號,約定將所有的相關安裝包都存儲在svn的home目錄下
安裝apr
Apache Portable Runtime Library
Apache可移植運行時(Apache Portable Runtime Library,簡稱APR)是ApacheHTTP服務器的支持庫,提供了一組映射到下層操作系統的API。
如果操作系統不支持某個特定的功能,APR將提供一個模擬的實現。這樣程序員使用APR編寫真正可在不同平臺上移植的程序。
獲取地址
https://apr.apache.org/download.cgi
安裝步驟
在編譯安裝時提示configure: error: no acceptable C compiler found in $PATH時,安裝gcc即可,即:yum -y install gcc
安裝apr-util
Apache可移植運行實用程序庫
獲取地址
https://apr.apache.org/
安裝
安裝PCRE
Perl Compatible Regular Expressions
perl語言兼容正則表達式是一個用C語言編寫的正則表達式函數庫
獲取地址
http://www.pcre.org/
安裝
若提示configure: error: You need a C++ compiler for C++ support,則先安裝gcc-c++
安裝Zlib
Zlib
是提供數據壓縮用的函式庫,系統默認自帶,
獲取地址
http://www.zlib.net/
安裝
SVN編譯安裝
進入到subver1.9.4 目錄下進行configure、make、makeinstall
SVN環境變量配置
為svn帳號配置環境變量便於今後的命令操作的執行
SVN版本庫創建
因為之前已經將svn的bin目錄添加到環境變量,所有其bin目錄下的所有命令都可以使用了.
那麼創建版本庫使用svnadmin命令進行創建。
svnadmin命令使用
使用方式 : svnadmin SUBCOMMAND REPOS_PATH [ ARGS & OPTIONS …]
常用的SUBCOMMAND有
create | svnadmin create REPOS_PATH | 在REPOS_PATH 下創建一個新的且空的版本庫 |
info | svnadmin info REPOS_PATH | 打印REPOS_PATH目錄下的版本庫的信息 |
dump | svnadmin dump REPOS_PATH [-r LOWER[:UPPER] [--incremental]] | 是否增量、高低版本間的備份REPOS_PATH目錄下的版本庫內容 |
load | svnadmin load REPOS_PATH | |
lock | svnadmin lock REPOS_PATH PATH USERNAME COMMENT-FILE [TOKEN] | 對REPOS_PATH下的版本庫進行鎖操作 |
所以創建多個版本庫只需要:
這樣的話,就創建了四個版本庫,都存儲在/data/svn/目錄下
svn命令使用
使用方式: svn <subcommand> [options] [args]
常用的subcommand有
add | svn --help add | svn add PATH | Put files and directories under version control, scheduling them for addition to repository. They will be added in next commit |
import | svn --help import | svn import [PATH] URL | Recursively commit a copy of PATH to URL. |
通過svn命令初始化SVN目錄
在svn的home目錄下創建project文件夾及相應的子文件夾。然後通過svn命令導入到Education版本庫中
SVN用戶信息配置
svn用戶信息是通過版本庫存儲目錄下的conf文件夾中svnserve.conf 文件進行配置svn用戶的帳號密碼和用戶的訪問權限
svnserve.conf
svnserve 配置文件基本上可以不用修改什麼配置信息,默認情況下用戶信息是讀取同一目錄下的paswd和authz文件中的內容。如果存在多個版本庫共用一個svn服務的話,那麼最好的用戶信息管理方式當然是讀取同一份用戶配置信息是最好的。這樣的情況下就需要對svnserve.conf文件中的password-db和authz-db配置項修改指向到共用的配置文件中
passwd
用戶帳號密碼信息,以明文方式存儲,存儲格式為每行一個帳號和密碼信息,以"user1 = user1passwd "這種形式組成
authz
主要用戶配置用戶的訪問權限,主要分為aliases、groups 、svn路徑三個部分
groups部分,通過"groupName= user1,user2"的方式來定義各個組
svn路徑部分中,可以指定的svn版本庫和指定的目錄進行權限定義。
比如project版本庫中的/server目錄的權限定義,則可以通過如下方式進行定義
[project:/server]
@Admin= rw
@Server = rw
* = r
相應的用戶組對這個版本庫目錄的訪問權限則通過@+用戶組的方式來定義。具體的讀寫權限則用r w 進行配置
上面的配置含義指:project項目下的server目錄,Admin和Server用戶組具有讀寫權限,其他用戶組成員擁有讀取權限
SVN啟動
svn正常的啟動命令為(因為環境變量已經配置,所以不需要指定svnserve的完全路徑了)
svnserve -d -r /data/svn
如果僅啟動單個庫則-r 參數後面的路徑指定到對應庫的路徑即可,因為多個版本庫都存放在/data/svn目錄下,所以通過這個命令就可以啟動多個庫了
svnserve的使用方式
Usage: svnserve [-d | -i | -t | -X] [options]
-d 以daemon模式啟動
-i 以inetd模式啟動
-t 以tunnel模式啟動
-X 單次監聽模式(常用於調試)
options常用的有 --log-file ARG 、--listen-port ARG
所以修改監聽端口以及配置日誌信息以Daemon方式進行啟動的命令為
svnserve -d -r /date/svn --listen-port=3660 --log-file=/var/log/svn.log
SVN備份
svn的備份使用svnadmin dump命令進行備份.
備份分為增量備份和全量備份.
備份規則為:
每週六凌晨2點進行增量備份
每月1日凌成2點進行全量備份
歷史備份包每月2日進行刪除,僅保留一個月內的增量和全量備份信息,暫由人工先驗證一個月內的備份包有效後再進行手動刪除
增量備份shell
全量備份shell
crontab設置
SVN還原
svn的還原暫由人工進行操作驗證,每月2日進行人工驗證
還原命令為svnadmin load 要恢復的版本庫路徑及名稱 < 導出備份包名稱