一、若是僅僅只是搭建 svn 服務器:php
(a)、先檢查 svn 是否已經安裝了html
rpm -qa subversion #輸入這個命令後,會出現 subversion 版本號
(b)、若是沒有安裝,使用下面命令:java
yum install subversion [-y] #這個 -y 命令,是表示在找到包以後,是否自動 選擇 y,全自動。若是沒有,在找到包以後,會詢問 y / n
(c)、安裝 完成後 使用下面命令 查看版本:python
svnserve --version #查看版本號,是 -- 不是 - 這個是要注意的
二、建立 svn 根目錄,下面的命令的意思是 在 /home 文件夾中 建立 svn 文件夾: linux
(a)、mkdir 是 linux 下建立文件夾的命令web
mkdir /home/svn #是 /home/ 下建立 svn 目錄,這個是動態的,看本身喜歡建立在哪裏, svn 是多版本庫的根目錄。
mkdir /home/svn/test #這裏建立一個 test 的目錄,進行一個版本庫的存放
三、建立 使用下面命令 建立版本庫:sql
(a)、使用上面命令後,會生成幾個 文件 和 文件夾,網上常常看到 ls -l 只是列出 文件夾 和 文件 列表,並非建立。數據庫
(b)、文件夾 ---- conf、db、hooks、locksapache
(c)、文件 ---- format、README.txt
vim
(d)、目錄結構的 描述,請跳轉到最下面。
svnadmin create [path] #這裏填寫的是文件夾路徑,若是是當前目錄 寫 ./ 不能省略,我這裏建立的是一個 test 路徑的
四、ls -l 以後,出現的信息圖解:
五、接下來是配置一個版本庫的權限 和 帳號密碼:
(a)、咱們先切換到 上面成功的目錄下 的 conf 文件夾中
(b)、主要修改 三個文件:authz ---- 是權限 配置文件、passwd ---- 是配置 訪問 用戶 的 帳號和密碼、svnserve.conf 是總配置文件
5.一、我在這裏先修改 passwd 文件
(a)、使用 vi / vim passwd 打開文件,在圖形界面中,可使用 gedit。
(b)、在 vi / vim 命令下,使用編輯 按 i 進入編輯模式。
(c)、Ctrl + c 是 切換成命令狀態,:wq 是 保存並退出,若是不保存就退出 使用 :q!。若是修改過了 不能直接用 :q 退出。
# 在 [users] 下面寫 訪問的帳號和密碼,寫法是 帳號 = 密碼 # 例以下面: [users] test = 123456 # 這是第一個帳號和密碼 test1 = 123456 # 這是第二個帳號和密碼
5.二、修改 authz 權限文件:
# 咱們能夠直接 賦值 用戶的權限,帶權限的寫法,應該寫在 [<版本庫名>:<路徑>] 下面,表明那個路徑,那些用戶有權限。 test = rw # 這裏的 test 是在 passwd 文件中定義的用戶,rw 表明 讀和寫的權限。 #若是 有不少 帳號,這個時候,就須要分組了,在 [group] 下寫 [group] vip = test, test1 # 這裏表示,建立一個 分組叫 vip,使用的時候經過 @vip 使用。 # 在 authz 文件最下面 # [<版本庫名>:<路徑>] # 1、下面的表示 版本庫的根目錄下,只有 admin 這個角色纔有 rw 權限 [/] # 這個 / 根目錄 是隻 svnserve 啓動時候,指定的根目錄。 @admin = rw # 這裏的 admin 是 上面 group 下的分組,不是系統自帶的,表示 admin 分組中的用戶,都有 讀寫權限
#我上面只定義了 一個 vip 用戶組,因此只能 是 vip,admin 這個用戶組錯誤的。
5.三、配置 svnserve.conf,修改 了 svnserve.conf 這個文件後是須要重啓 svn 服務的,而修改上面 的 passwd 和 authz 文件是不須要重啓的:
#須要修改的,基本只有5條,這5條本來是本註釋掉的。 #write 是可讀可寫,read 是隻讀,none 是無訪問權限 [general] #控制非鑑權用戶訪問版本庫的權限。 anon-access=none #匿名訪問的權限,能夠是 read, write,none,默認是 read # 控制鑑權用戶訪問版本庫的權限 auth-access=write #使用受權用戶有寫的權限 默認是 write #指定用戶帳號和密碼的文件名,用法 與 下面的 authz 同樣. password-db=passwd #用戶數據庫的路徑 #指定權限配置文件名,經過該文件能夠實現以路徑爲基礎的訪問控制。 除非指定絕對路徑,不然文件位置爲相對conf目錄的相對路徑。 缺省值:authz authz-db=authz #訪問控制文件路徑 #指定版本庫的認證域,即在登陸時提示的認證域名稱。若兩個版本庫的 認證域相同,建議使用相同的用戶名口令數據文件. realm=fist....
六、先殺死 svn 服務,再重啓:
killall svnserve #關閉全部 svn 服務
七、以多庫方式 啓動 svnserve 服務:
svnserve -d -r /home/svn [--listen-port 端口號]
#上面提到,test 是咱們測試用的版本庫,而後,咱們以多庫方式啓動 svn 後,test 版本庫的路徑就是 svn://127.0.0.1/test
#-d 是表示守護線程後臺運行
#-r 表示必定目錄
#--listen-port 是表示監聽的端口號,可選,默認是 3690
Ps:
(1)、這裏須要新手去看,不然很容易浪費時間,菜鳥教程地址:http://www.runoob.com/svn/svn-start-mode.html
(2)、因爲 -r 的配置方式不同,svn 啓動 區分兩種模式
(3)、第一種: -r 直接指定到版本庫(稱爲 單庫 svnserve 方式)
例如這篇文章的例子: -r /home/svn/test 我啓動的時候 在這裏直接指定到了 test 這個目錄下
authz 配置的時候,[/] 直接表示 test 這個根目錄。
客戶端訪問的時候的 URL: svn://127.0.0.1/ 便可訪問到 test 版本庫
(4)、第二種: -r 指定到版本庫的上級目錄(稱爲 多庫 svnserve 方式)
多庫啓動 -r /home/svn
這個時候的 authz 配置的寫法就不用了,應該成 [<版本庫名>:/] 這樣的。
客戶端訪問的URL: svn://127.0.0.1/test 才能夠訪問 到版本庫 test
八、配置完成後,能夠在本地 使用 命令,查看是否啓用成功:
svn co svn://127.0.0.1/[版本庫]
九、有些服務器,須要關閉防火牆: centos 7 默認防火牆:filewalld 文檔:https://blog.csdn.net/wangmx1993328/article/details/80738012
十、有些服務器關閉了防火牆以後,仍是拒絕訪問的,再啓動一次執行一次 svnserve -dr [路徑] 試試
svn客戶端:
(1)、修改配置文件,使下次登陸時不記錄密碼
windows環境,在開始菜單->運行輸入:%appdata%/subversion,找到config文件【反正本身找到便可】;
unix/linux環境,編輯~/.subversion/config文件。這個試過能夠的。
分別對如下兩行取消註釋、而後保存退出;
# store-passwords = no
# store-auth-creds = no
(2)、刪除認證緩存設置
windows環境,刪除:%appdata%/subversion/auth
unix/linux環境執行:rm -rf ~/.subversion/auth
搭建 http 服務器訪問:
一、先安裝 apache 服務
#apache服務器,讓咱們的svn 服務器支持http協議訪問,而不只是svn://協議
yum install -y httpd #apache操做svn模塊 yum install -y mod_dav_svn
二、修改配置文件 /etc/httpd/conf.d/subversion.conf(沒有則新建),內容爲: 不如不行,參考:http://room-bb.iteye.com/blog/2293178
LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNListParentPath on SVNPath /home/svn/test #只支持一個主目錄的SVN版本庫
SVNParentPath /home/svn/ #支持多個相同父目錄的SVN版本庫 AuthType Basic Satisfy Any AuthName "Subversion repos" AuthUserFile /home/svn/conf/accesspwd AuthzSVNAccessFile /home/svn/conf/authz Require valid-user </Location>
三、建立 accesspwd 文件:
htpasswd -c -m /home/svn/conf/accesspwd root # 在/home/svn/conf 下面建立一個叫 accesspwd 的文件 , root 的用戶名
四、設置 權限 目錄
chown -R apache:apache /home/svn/
搭建 websvn :
一、由於 websvn 是 php 寫的,因此要安裝 php
yum install -y php
二、下載 websvn 到 /var/www/html 目錄下面
cd /var/www/html # 切換到 /var/www/html 目錄 wget http://websvn.tigris.org/files/documents/1380/49057/websvn-2.3.3.zip #下載 websvn 包
三、解壓 websvn 包
unzip websvn-2.3.3.zip #解壓 websvn 包
mv websvn-2.3.3 websvn #把 websvn-2.3.3 移動到 websvn 文件夾中
四、配置 文件:
cd /var/www/html/websvn/include #切換到 /var/www/html/websvn/include 目錄 cp distconfig.php config.php #複製 disptcofig.php 文件內容到 config.php vi config.php
#修改的配置以下面:
# 一、這下面的基本是註釋掉,而且修改好路徑就好了,路徑按下面例子填寫就行了。
// Configure these lines if your commands aren't on your path.
//
$config->setSVNCommandPath('/usr/bin');// e.g. c:\\program files\\subversion\\bin
$config->setDiffPath('/usr/bin');
// For syntax colouring, if option enabled...
$config->setEnscriptPath('/usr/bin');
$config->setSedPath('/bin');
// For delivered tarballs, if option enabled...
$config->setTarPath('/bin');
// For delivered GZIP'd files and tarballs, if option enabled...
$config->setGZipPath('/bin');
$config->parentPath('[svn文件路徑]'); #這個是單一版本庫的
$config->parentPath('[svn文件路徑]', 'group'); #這個是多庫的
#三、下面這些直接複製粘貼到 $config->parentPath('/svn/'); 下面就好了
$extEnscript[".pl"]="perl";
$extEnscript[".py"]="python";
$extEnscript[".sql"]="sql";
$extEnscript[".java"]="java";
$extEnscript[".html"]="html";
$extEnscript[".xml"]="html";
$extEnscript[".thtml"]="html";
$extEnscript[".tpl"]="html";
$extEnscript[".sh"]="bash";
五、重啓 httpd 服務
systemctl restart httpd.service
六、在瀏覽器中打開,輸入URL: http:// IP地址/websvn
七、若是遇到 Unable to find "enscript" tool at location "/usr/bin/enscript 這樣的問題,安裝一下 enscript 就能修復了。
yum install enscript
注意:linux 上 svn 用瀏覽器打開的界面都比較醜,若是想要下面的,須要 在 windows 系統上,搭建 VisualSVN server 。