搭建svn服務器


 

 

 

 

 

SVN Windows版本下載:https://www.open.collab.net/downloads/subversion/rc/

 CollabNetSubversion-server-1.6.0-2.win32.exe

本地已安裝Apache服務器的話,不用選擇第二項。

 

 

 SVN默認端口號是3609,指定資源路徑F:\svn_repository 作為初始的資源庫。這里不推薦設置為WIndows 服務,原因是WIndows 服務使用起來不好用,推薦通過手工的方式啟動和控制SVN服務器,這樣具有更大的靈活性。

最后選擇SVN軟件的安裝路徑,這里設置為D:\Program Files (x86)\CollabNet Subversion Server。

 

 點擊Finish完成安裝。

 

 配置Subversion 服務器

進入cmd命令窗口,執行

svnadmin create F:\svn_repository

其中svnadmin 為svn管理的命令,create表示創建資源庫,F:\svn_repository表示的是資源庫所在的文件夾路徑。

 

創建資源庫后,在F:\svn_repository 下會自動生成一些SVN所使用的文件目錄結構。

 

 其中conf用於資源庫的相關配置信息,可以通過修改這里的文件對SVN資源庫配置相應的信息。其他的文件,盡量不要去修改。

注:可以通過 svnadmin help 命令來茶語相關的說明。

 

設置訪問用戶

只創建了資源庫是不夠的,還需要設置訪問資源庫的用戶以及為其授權,這樣才能保證SVN資源庫的安全。SVN的安全又涉及兩個方面,即用戶的認證和用戶的授權。

1 用戶認證

用戶的認證是創建用戶並為其設置密碼。F:\svn_repository\conf\password 文件增加兩行。

### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
# harry = harryssecret
# sally = sallyssecret
harry = 123
joe = 456

增加了兩個用戶,並設置了各自的密碼。

 

2 用戶授權

每個用戶所能使用的權限是不同的,比如 admin 是管理員,擁有最高的權限,可以讀寫文件,但user 只是個瀏覽用戶,只能讀文件,但不能修改文件。這就涉及到授權的問題。

SVN的授權信息默認保存在資源文件根目錄的conf/authz 文件中。打開文件,

  

### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to:
### - a single user,
### - a group of users defined in a special [groups] section,
### - an alias defined in a special [aliases] section,
### - all authenticated users, using the '$authenticated' token,
### - only anonymous users, using the '$anonymous' token,
### - anyone, using the '*' wildcard.
###
### A match can be inverted by prefixing the rule with '~'. Rules can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe

# [/foo/bar]
# harry = rw
# &joe = r
# * =

# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r

這里的意思是說,SVN不僅可以配置用戶組,也可以針對不同的資源庫路徑配置訪問權限等。

3 配置認證和授權文件

進設置了這些認證信息,並沒有完成安全的配置,還需要修改的SVN的配置信息conf\svnserve.conf文件。

去掉# password-db = passwd這一行的"#"號,則表示,SVN啟動服務后,將使用passwd這個文件作為認證信息。

 

啟動Subversion服務

啟動Subversion需要使用命令 svnserve,例如啟動F:\svn_repository 的資源庫的Subversion服務,則需要在命令行界面輸入以下命令。

svnserve -d -r F:\svn_repository

其中,svnserve為SVN服務管理的命令,-d表示的是該服務是由守護線程方式啟動的,而-r F:\svn_repository 表示的是要啟動服務的資源庫所在的根目錄。

這樣,SVN資源庫的服務就啟動了,只要不關閉這個命令行窗口,SVN的服務就一直存在。

 

安裝Subversion客戶端TortoiseSVN

TortoiseSVN-1.9.1.26747-x64.zip

瀏覽資源庫

安裝完之后,右鍵,在TortoiseSVN快捷菜單中選擇 TortoiseSVN | Repo-browser 菜單項,將彈出輸入資源庫的地址對話框。

這里 “svn://” 為訪問SVN服務器的協議,localhost 為服務器的地址。如果服務器在局域網中,也可以設置為局域網的IP地址或者域名。

另外,如果配置了Apache服務器,還可以通過“http://”來訪問。

點擊OK按鈕,出現以下對話框,這里顯示的是SVN資源庫中的所有文件。

左側是資源庫中的所有文件,右側是文佳佳和文件的詳細信息。

 

在資源庫中增加文件夾

在左側的瀏覽窗口中右擊,子啊彈出的快捷菜單中選擇Create folder選項,在彈出的對話框中輸入SVN服務器上新建的文件夾名trunk。

 

單擊OK按鈕,彈出一個輸入提交日志的對話框,

 

使用harry 123管理創建,這樣可以重復創建多個文件夾。

 

 

 導入文件到資源庫(import)

下面有這樣一個場景,用戶harry在Eclipse中創建了一個名為FirstJava的Java項目,現在,他將與用戶joe組成一個團隊(Team),共同開發這個Java應用,那么該如何做呢?

整個過程要分為兩個步驟:

(1)用戶harry將java項目的代碼導入(Import)到資源庫中,與其他用戶共享。

(2)用戶joe將資源庫中的Java項目代碼遷出(chexkout)到自己的電腦中。

這樣,用戶harry和用戶joe就可以一塊開發這個Java項目了,首先看一下用戶harry如何將代碼導入到資源庫。

(1)harry在自己的電腦上,打開FirstJava項目所在的文件目錄,然后在FirstJava文件夾上右擊,在彈出的快捷菜單中選擇TortoiseSVN | Import命令。

(2)在踏出的對話框中輸入資源庫所要導入的文件目錄svn://localhost/trunk/FirstJava

 

導入完成窗口

 

 導入資源后的資源庫目錄結構

 注:SVN服務器版本庫有兩種格式,一種為FSFS,一種為BDB把文件上傳到SVN版本庫后,上傳的文件不再以文件原來的格式存儲,而是被svn以它自定義的格式壓縮成版本庫數據,存放在版本庫中。如果是FSFS格式,這些數據存放在版本庫的db目錄中,里面的revs和revprops分別存放着每次提交的差異數據和日志等信息 。

 

 從資源庫中遷出(checkout)

被導入的資源庫中的文件便成為了共享的文件,其他的用戶就可以通過客戶端獲得這些共享文件了。下面joe將進行資源獲取操作。

 

 

 

 

 

 

 

 svn://localhost/trunk/FirstJava

F:\test\FirstJava

 

 

 沒有圖標顯示,

解決圖標顏色問題:

接着。對這9個文件重命名即可:

下面就可以看到顏色了:

圖標顯示問題與TortoiseSVN相關,可參考 TortoiseSVN客戶端圖標覆蓋問題 。http://blog.csdn.net/zzfenglin/article/details/51979569

 

 

 

 

 

 

 

下面將在centos中進行SVN服務器環境的搭建。(參考:https://help.aliyun.com/document_detail/52864.html)

完整依賴安裝:https://zhidao.baidu.com/question/556347129706975492.html

完整安裝:http://www.linuxidc.com/Linux/2012-12/75992.htm

 

yum install subversion

 

Total 2.3 MB/s | 2.3 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : apr-1.4.8-3.el7.x86_64 1/6
Installing : apr-util-1.5.2-6.el7.x86_64 2/6
Installing : pakchois-0.4-10.el7.x86_64 3/6
Installing : neon-0.30.0-3.el7.x86_64 4/6
Installing : subversion-libs-1.7.14-10.el7.x86_64 5/6
Installing : subversion-1.7.14-10.el7.x86_64 6/6
Verifying : neon-0.30.0-3.el7.x86_64 1/6
Verifying : apr-1.4.8-3.el7.x86_64 2/6
Verifying : subversion-1.7.14-10.el7.x86_64 3/6
Verifying : apr-util-1.5.2-6.el7.x86_64 4/6
Verifying : pakchois-0.4-10.el7.x86_64 5/6
Verifying : subversion-libs-1.7.14-10.el7.x86_64 6/6

Installed:
subversion.x86_64 0:1.7.14-10.el7

Dependency Installed:
apr.x86_64 0:1.4.8-3.el7 apr-util.x86_64 0:1.5.2-6.el7 neon.x86_64 0:0.30.0-3.el7 pakchois.x86_64 0:0.4-10.el7 subversion-libs.x86_64 0:1.7.14-10.el7

Complete!

 配置目錄:/etc/httpd/conf/httpd.conf

 

 

svnserve --version
mkdir /var/svn

 

cd /var/svn
svnadmin create /var/svn/svnrepos
cd svnrepos會看到自動生成的版本庫文件:
conf db format hooks locks README.txt

 

 

 

 

阿帕奇服務器的安裝

 

手動安裝(繁瑣)

 http://jingyan.baidu.com/article/7e4409533d7f0f2fc0e2ef91.html

wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.2.34.tar.gz

 

(自動安裝)

http://jingyan.baidu.com/article/c14654138f12920bfcfc4c01.html

 

(1)登錄到阿里雲服務器上,在控制終端輸入以下命令:

yum install httpd httpd-devel 

(2)然后開始下載安裝,下載過程會提示以下信息,只需要輸入y即可繼續安裝。

(3)當出現complete!字樣時即表示安裝完成,如下圖所示。

(4)然后我們設置成開機自啟動,命令如下:

chkconfig --levels 235 httpd on

(5)配置完畢,啟動 Apache:

systemctl start httpd

 (6)此時已經可以訪問你的服務器,l輸入ip地址,不出意外的話,能夠看到 “Testing 123.." 的測試頁面。

(7)如果其他機器訪問這台服務無法顯示這個頁面,而直接在這台服務器上可以訪問的話,可能是 CentOS 自帶的防火牆禁止了。只需要進入防火牆,將 “WWW” 對應的 “80” 端口打開即可。

注意事項:

默認根目錄是 /var/www/html
配置文件 /etc/httpd/conf/httpd.conf
其他配置存儲在 /etc/httpd/conf.d/ 目錄

注:使用 --prefix 可指定安裝目錄。

 默認html目錄為空,根據/etc/httpd/conf.d/welcome.conf中的配置,跳轉到Alias /.noindex.html /usr/share/httpd/noindex/index.html 頁面。

 

 

阿帕奇+SVN =》 http 方式訪問 SVN 服務器(參考:https://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/ )

 

 

 

第一步:實現http://ip/repo_name 訪問SVN

這里thhp訪問是代表通過apche訪問,因此不會進行svn驗證

<Location /svnrepos>
DAV svn
SVNPath /var/svn/svnrepos
</Location>

 

點進去看看

 第二步:添加用戶登錄驗證基本功能

 /etc/httpd/modules

systemctl restart httpd.service

service httpd restart

systemctl start httpd

killall httpd

killall svnserve

svnserve -d -r /var/svn/svnrepos

 

chcon -R -h -t httpd_sys_content_t /var/svn/

chown -R apache:apache /var/svn/repo1 

解決  could not begin a transaction

 

svnserve -d -r /mnt/westos --listen-port 3691

解決 svnserve: E000098: Can't bind server socket: Address already in use

導入文件到svnrepos

svn import -m "New import" myproj http://svn.red-bean.com/repos/trunk/misc/myproj

 

<Location /svnrepos>
DAV svn
SVNPath /var/svn/svnrepos
AuthType Basic
AuthName "svn repos"
AuthUserFile /var/svn/svnrepos/conf/passwd
Require valid-user
</Location>

 

密碼是對,就是無法登錄。

制作密碼驗證文件:http://lansgg.blog.51cto.com/5675165/1602593

 也就是說,apache的驗證需要加密。

 

 第三步:用 mod_authz_svn 進行目錄訪問控制

上一步僅僅只是擁有了用戶的基本驗證功能,比較單一,這里采用用戶驗證策略,比較綜合靈活。AuthzSVNAccessFile 指向的是 authz 的策略文件,詳細的權限控制可以在這個策略文件中指定。

httpd.conf的location中需要添加一行:

AuthzSVNAccessFile /etc/svn/accesspolicy
 
 

第四步:添加https訪問功能

這里就不適用Apache來處理SSL問題了,直接使用Nginx代理就好。

 參考:http://www.linuxidc.com/Linux/2014-02/96985.htm

 

http://www.cnblogs.com/fuqiang88/p/4727257.html

 

 

可視化:可以安裝 Trac   or  Viewvc[http://www.viewvc.org/]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM