【Centos】搭建 SVN 服務器

一、若是僅僅只是搭建 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 。

相關文章
相關標籤/搜索