天天看點

linux 下 Apache+Svn 伺服器搭建

------本文非原創,是總結了網上的幾個文章--------

(一) 、先介紹一下Subversion和apache,apr,apr-util的關系

很多朋友初次接觸Subversion時不是很了解subversion和apache的關系。

我在這裡簡單說明一下svn伺服器和用戶端的安裝說明。

伺服器

subversion伺服器是不需要apache的,但是可以使用apache,視具體情況來選擇。

1、如果隻要通過file://或svn://來通路,則不需要apache,隻安裝svn即可,使用svnserve來作為服務。

2、如果你要建立一個可以通過http://或https://來通路的版本庫伺服器,則你需要使用apache。

基于apache配置,請看http://bbs.iusesvn.com/thread-158-1-1.html 。

用戶端

在windows下,不管你要通路的是什麼類型的伺服器,隻要安裝一個TortoiseSVN就可以了,開發者已經幫你搞定一切。

在類Linux系統下,如果你通過file://或svn://來通路,則隻要編譯安裝svn就可以,

如果通過http://通路,則要同neon編譯,

如果通過https://通路,則要同帶ssl支援的neon編譯,

不論怎樣,都要同apr和apr-util編譯。

neon、apr、apr-util也很容易獲得,目前釋出的subversion代碼都會有一個叫做subversion-deps-xxx的檔案,比如1.4.3的就是subversion-deps-1.4.3.tar.bz2

對于通路國外網站比較慢的朋友,下載下傳Subversion和用戶端,可以到 http://www.iUseSVN.com ,因帶寬和流量有限,網站隻對注冊使用者開放下載下傳,這點有點麻煩,但是很值得,一是下載下傳速度的确相當快,二是裡面有很多熱于與大家交流的Subversion愛好者

(二)、架設

一 、首先準備好相關的安裝包,我這裡使用的是下列的幾個包

Apr : apr-1.2.12 和 apr-util-1.2.12

Apache : httpd-2.2.4.tar.gz

Subversion: subversion-1.4.5.tar.gz 和 subversion-deps-1.4.5.tar.gz

注意:在安裝過程中可能會提示需要安裝其他的包,根據具體的情況來安裝所需要的包,如果安裝過程很順利則說明你運氣好!

二、安裝和配置步驟:

1、安裝apr-1.2.12

# tar –zvxf apr-1.2.12.tar.gz

# cd apr-1.2.12

# ./configure /* 安裝不指定路徑時 預設安裝到/usr/local/apr

# make ; make install

2、安裝 apr-util-1.2.12

# tar –zvxf apr-util-1.2.12.tar.gz

# cd apr-util-1.2.12

# ./configure - -with-apr=/usr/local/apr

# make ; make install

3、安裝 httpd-2.2.4.tar.gz

# tar –zvxf httpd-2.2.4.tar.gz

# cd httpd-2.2.4

# ./configure

- -prefix=/usr/local/apache

- -with-apr=/usr/local/apr/bin/apr-1-config

- -with-apr-util=/usr/local/apr/bin/apu-1-config

- -enable-modules=so /* DSO模式安裝apache (或 --enable-so)

- -enable-dav

- -enable-maintainer-mode

- - enable-rewrite

# make ; make install

安裝好後啟動apache

# /usr/local/apache/bin/apachectl –k start

用浏覽器檢視http://localhost/,得到it works,說明apache已經配置成功了。

4、安裝和配置 subversion

#tar –zvxf subversion-1.4.5.tar.gz

#tar –zvxf subversion-deps-1.4.5.tar.gz /*這兩個自動解壓成一個包 subversion-1.4.5

#cd subversion-1.4.5

#rm –rf apr

#rm -rf apr-util

注意:SVN 依賴的APR版本要正确。如果Apache為2.0.x,對應的APR版本應為0.9.x;Apache為2.2.x,對應的APR版本應為1.2.x。由于subversion-deps包裡的APR是0.9.x的,是以編譯svn時要删除從deps裡解壓出來的apr, apr-util,改而使用apache 2.2裡提供的。(這裡指定為開始安裝的apr目錄),這一點知識非常重要,自己之前多次安裝都沒成功,現在才明白是在這一點被卡住了,但最終還是被我解決了, 學習,和不斷實踐 會使你不斷成長!

#./configure

--prefix=/usr/local/svn

--with-apxs=/usr/local/apache/bin/apxs

--with-apr=/usr/local/apr/bin/apr-1-config

--with-apr-util=/usr/local/apr/bin/apu-1-config

--with-ssl

--with-zlib

--enable-maintainer-mode

#make

#make install

确定一下svn有沒有安裝成功

#/usr/local/svn/bin/svnserve - -version

會看到相關版本資訊!

完了再看看apache 的相關子產品有沒有加載!如下!

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

到此如果一直都順利的話就基本沒什麼問題!繼續往下!

開始建立版本庫

#/usr/local/svn/bin/svnadmin create /svn/project/www /*建立倉庫"www"

#ls /svn/project/www /*檢視有沒有建立好,如果多了一些檔案則說明版本庫已經建立好

導入項目檔案到版本庫

下面這條語句将把路徑/share/www下找到的項目檔案導入到你建立的/svn/project/www 倉庫中去,

送出後的修訂版為1

#/usr/local/svn/bin/svn import /share/www file:///svn/project/www -m “注釋”

配置提高svn版本庫的安全性

#chmod –R 700 /svn/project /*不讓其他人有該目錄的權限

注意: 直接這麼chmod會導緻svn用戶端無法通路,同時需要修改apache配置檔案./conf/httpd.conf檔案,(如果你的水準不夠高的話,這一步可以先跳過,以免給自己找麻煩!等把服務完全搞定後再來進一步提高安全性) 在httpd.conf檔案中有這麼一段内容:

User daemon

Group daemon

把上述内容改成:

User apache

Group apache

(我的系統在安裝apache的時候,自動增加了apache使用者和apache組,如果你系統沒有這個使用者群組,則請自己添加該使用者群組)

修改svn倉庫的所有者

#chown -R apache:apache /svn/project

5、配置apache支援svn

#vi /usr/local/apache/conf/httpd.conf

在檔案末尾添加

 <Location /svn>

DAV svn

SVNParentPath /svn/project (此處配置你的版本庫根目錄) --注意這裡不要是svnpath

AuthType Basic (連接配接類型設定 基本驗證)

AuthName "Hello welcome to here" (此處字元串内容修改為提示對話框标題)

AuthUserFile /svn/passwd (此處修改為通路版本庫使用者的檔案,用apache 的htpasswd指令生成)

AuthzSVNAccessFile /svn/auth.conf (此處修改為通路版本庫權限的檔案)

Require valid-user ("Require valid-user"告訴apache在authfile中所有的使用者都可以通路。

</Location> 

如果沒有它,則隻能第一個使用者可以通路建立庫)

儲存檔案退出!

重新啟動apache

# /usr/local/apache/bin/apachectl –k restart

先使用浏覽器檢測一下

打開浏覽器通路http://192.168.0.1/svn/www 會提示輸入使用者名密碼

等到完成下面步驟就可以進去通路了,進去後如果有東西顯示就說明成功。

下面就是對svn的使用者和權限配置管理

6、配置svn權限管理(即authz.conf的配置)

1 . 添加使用者:

# /usr/local/apache/bin/htpasswd –c /svn/passwd user1

第一次設定使用者時使用-c表示建立一個使用者檔案。回車後輸入使用者密碼,完成對使用者的增加

第二次添加使用者不需要帶 –c 參數 如:

# /usr/local/apache/bin/htpasswd /svn/passwd user2

2 . 權限配置設定:

#vi /svn/auth.conf

[groups] /*這個表示群組設定

Admin=usr1,user2 /*這個表示admin群組裡的成員 user1,user2

Develop=u1, u2 /*這個表示Develop群組裡的成員 u1,u2

[www:/] /*這表示,倉庫www的根目錄下的通路權限

user1 = rw /*www倉庫user1使用者具有讀和寫權限

user2 = r /* www倉庫userl使用者具隻有讀權限

@develop=rw /*這表示 群 develop的成員都具有讀寫權限

[/] /*這個表示在所有倉庫的根目錄下

* = r /*這個表示對所有的使用者都具有讀權限

注意:在編輯authz.conf檔案時,所有行都必須要頂頭寫,不能有縮行出現,否則會報錯:"Access denied: 'user1' ",裡面的内容可以根據自己的需要自行添加,不必與我上面所寫的相同!

7、重新開機apache服務和啟動svn服務

#/usr/local/apache/bin/apachectl –k restart

就可以通過 http://192.168.0.1/svn/www 這個URL來通路倉庫了,當然,受權限的限制,必須是合法使用者才能通路且具有相應的權限

最後啟動svn

#/usr/local/svn/bin/svn -d -r /svn/project

-d 表示以 daemon 方式(背景運作)運作

-r /svn/project 指定根目錄是/svn/project

檢查伺服器是否啟動正常:

#ps –ef|grep svnserve

如果顯示如下,即為啟動成功:

Root  6941   1 0 15:07 ?  00:00:00 svnserve -d ——listen-port 9999 -r /svn

接下來用戶端TortoiseSVN直接安裝,重新開機用戶端計算機。

OK.到此 APACHE+SVN伺服器的架設已經完成。 (linux客戶 需要在/etc/profile中添加  export SVN_EDITOR=vim )

繼續閱讀