Apache+SVN搭建SVN伺服器
內部伺服器:192.168.1.30 CentOS6.3_x86_64
內部開發:win7 64位
外網伺服器:CentOS5.8_x86_64
1,安裝svn軟體伺服器端(192.168.1.30)
yum install subversion【svnversion,版本 1.6.11 (r934486) 編譯於 Jun 23 2012,00:44:03】
yum install mod_dav_svn【載入模組用的】
yum install httpd【Apache/2.2.15 (Unix) Server built: Feb 22 2013 11:19:58】
都不用去找軟體包,yum直接安裝,也不用配置yum,CentOS是最小化安裝
2,安裝好了以後,會有svn的相關命令,
開啟svn的配置檔案subversion.conf,在/etc/httpd/conf.d/下面,其實大家都知道,/etc/httpd/目錄是apache的目錄,預設安裝svn的時候就把svn的配置檔案放在apache下面,說明這個配置很簡單,事實說明,我配置完了真的很簡單,只是我走了很多彎路。
配置檔案最前面裡有這兩句,載入svn模組,如果沒有,安裝不成功。
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
這個配置檔案裡預設的版本庫在apache的根目錄/var/html/www,裡面還有建立版本庫的步驟。
# To create a new repository "http://localhost/repos/stuff" using
# this configuration, run as root:
#
# # cd /var/www/svn
# # svnadmin create stuff
# # chown -R apache.apache stuff
# # chcon -R -t httpd_sys_content_t stuff
這是預設的,如果要修改版本庫的話,最下面Location有標籤。我把我做的貼出來,做下說明。
應該都能看懂吧。
<Location /svn>----------->這個/svn很重要,名字隨意
DAV svn
# SVNParentPath /data/svn --------->原來有這行,但是沒有用
SVNPath /data/svn ------->這行原來沒有,我自己加進去的,這個目錄就是svn版本庫目錄
#
# # Limit write permission to list of valid users.
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# # Require SSL connection for password protection.
# # SSLRequireSSL
#
AuthType Basic
AuthName "svn for matu" ----------->匯出的時候在對話方塊裡顯示
AuthUserFile /data/passwd.conf ----------->密碼檔案的位置,檔名隨意
AuthzSVNAccessFile /data/authz.conf ----------->許可權檔案,檔名隨意
Require valid-user
# </LimitExcept>
</Location>
所有語句都有#號,把#號去掉表示生效,不去掉表示不生效
3,建立svn版本庫。
mkdir /data/svn -p
svnadmin create /data/svn
Chown apache:apache /data/svn -R
Chmod 777 /data/svn -R ---->許可權問題還有待研究
ls /data/svn -l
建立成功的話會有以下內容
drwxrwxrwx. 2 apache apache 4096 3月 13 17:26 conf
drwxr-xr-x 3 apache apache 4096 3月 14 10:12 dav
drwxrwsrwx. 6 apache apache 4096 3月 14 14:37 db
-rwxrwxrwx. 1 apache apache 2 3月 14 00:53 format
drwxrwxrwx. 2 apache apache 4096 3月 14 00:53 hooks
drwxrwxrwx. 2 apache apache 4096 3月 14 00:53 locks
-rwxrwxrwx. 1 apache apache 229 3月 14 00:53 README.txt
4,新增使用者,分配許可權
給使用者新增密碼:
htpasswd -c /data/passwd.conf username ---->位置跟配置檔案裡的一樣,別搞錯,給第一個使用者新增密碼時要加c,意思是建立這個檔案,以後就不用加了。
開啟許可權檔案:
vim /data/authz.conf ---->這個檔案可以參考/data/svn/conf/authz檔案寫
在下面新增組,名字隨意
[groups]
all = admin,zhangsan,lisi
design = zhangsan
admin = admin
phone = lisi
分配許可權
[/] ---->這個根目錄是指/data/svn
@all = r ----->組名前面加@
admin = rw ----->r讀,w寫
[svn:/design] ---->svn是指配置檔案location標籤裡的svn,design是指版本庫下面的一個資料夾,可以用管理員admin在客戶端建立,同理其他資料夾也一樣
@design = rw
lisi = r
5,至此,svn伺服器端搭建完畢。如果是外網客戶端訪問內部區域網IP用http的80埠,一般IP沒有開放80埠,還需要進httpd.conf修改預設埠,改用別的埠,並進路由器進行埠對映。
我把80埠修改為81,192.168.1.30為svn伺服器IP,開啟httpd.conf
Listen 192.168.1.30:81
ServerName svn.6688.cc ----->內部可以用域名來訪問,但是要在hosts設定
啟動apache
/etc/init.d/httpd start
可以在本地用瀏覽器開啟:http://svn.6688.cc:81/svn,會彈出對話方塊提示輸入使用者名稱和密碼,表示安裝成功。
6,內部安裝svn客戶端
LanguagePack_1.7.10.23359-x64-zh_CN
TortoiseSVN-1.7.10.23359-x64-svn-1.7.7
我安裝的是這兩個包,可以去網上下載,安裝完了要重啟。設定為中文版我就不具體說明了。
7,外網web端使用
首先安裝subversion,跟第2條伺服器端一樣,會有相關命令。
外網要訪問內網的IP,需要在內網的路由器上進行對映轉發,進入內網路由器。一般都是192.168.1.1,登入後開啟轉發規則----虛擬伺服器,新增新條目。我的配置如下:
如果需要用域名方式來訪問內網的svn,需要在客戶端設定hosts,如果不需要直接用公網IP,就是不需要設定,這個公網IP就是內網的路由器用來訪問外網的IP,可以在百度搜索裡搜尋IP。
域名方式訪問:
1)在/etc/hosts中加入:外網IP svn.6688.cc
2)svn checkout http://svn.6688.cc:81/svn /xxx/xxx ----前面為伺服器端目錄,後面會本地目錄,就是把伺服器端的資料匯出到本地目錄。
IP方式訪問:
不用設定hosts,直接svn checkout http://外網IP:81/svn /xxx/xxx
這樣svn伺服器端,開發端,web端就設定完成了