1. 程式人生 > >Apache+SVN搭建SVN伺服器

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 subversionsvnversion,版本 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端就設定完成了