linux(CentOS4) 環境apache+svn徹底配置(實際配置日記)

linux(CentOS4) 環境apache+svn徹底配置(實際配置日記)
××××××終於完成了,但願看過的朋友給點意見!××××××!


1、使用前的心得

配置前,要知道本身要作什麼,由於不少人是新接觸svn的,對其不是很瞭解,甚至有同窗問我,svn?是幹什麼的?

我此次配置要作的工做,就是要知足咱們開發團隊對代碼管理和共享!因此,要求搭建svn服務器

開始的時候我很困惑,不知道爲什麼linux下搭建svn的時候都和apache配在一塊兒,以致於被兩者的關係弄的cloud the issue!如今我終於明白:(h_oko指點的)apache+svn模式,是有利大團隊遠程協做,經過互聯網訪問的一種解決方案。也就是說要把apache服務器發不到公網上,那樣纔有apache的實際意義!不然。。。!!

那麼,若是有了上面的瞭解,你就要清楚本身到底想要用什麼?也就清楚若是選擇apache+svn了!!

而後,對於操做系統的瞭解也是必要的,好比我是裝在linux系統下,對於linux系統的權限問題頗有必要了解。(這也是後來我解決問題的關鍵!)

最後,再強調一點,svn和apache能夠結合,也能夠單獨使用!!

2、工具包準備

軟件安裝包,在linux系統下,要準備的都是一些.tar.gz等等相似的壓縮包,有關linux的壓縮問題,不清楚的再去補課!
準備的軟件包以下:
httpd-2.2.3.tar.gz  
subversion -1.4.5.tar.gz
apr-1.2.x.tar.gz
apr-util-1.2.x.tar.gz
.......

實際上我就準備了這兩個包,由於個人系統已經在事先更新了全部的 編譯 用的最新的包,包括apr / apr-util /  mod _ dav _svn 這些包,若是你的系統沒有的,那麼就去網上找吧,找不到的來這裏要!
下載 地址 我就再也不重複了!

3、安裝apache

安裝apache沒有什麼特別的,跟正常編譯apache基本相同,唯一要注意的一點:要注意下面的紅色參數
[root@localhost soft]#./ conf igure --prefix=/ usr /local/apache  --enable-so   --enable-dav=share   --enable-dav-fs  --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/

ps:其餘apache參數這裏很少說,多了容易昏厥!這裏dav模塊主要是爲了加載svn的mod_dav_svn,apr和apr-util若是沒有特殊安裝的話,這裏也不用指定!由於系統默認的apr版本若是 >=1.2 就ok了!至於特殊的地方若是須要特殊的版本的apr,再另作研究!!!

[root@localhost soft]# make
[root@localhost soft]# make install

安裝完成apache後,測試一下先
[root@localhost soft]# /usr/local/apache/bin/apachectl start

http://localhost
It Work!!

別問我it work是麼意思!



4、安裝svn

若是你是僅僅安裝svn,那麼在CentOS下,徹底能夠這樣作:
[root@localhost svn]#yum install mod_dav_svn subversion
Dependencies Resolved

=============================================================================
Package                 Arch       Version           Repository         Size
=============================================================================
Installing:
mod_dav_svn             i386       1.1.4-2.ent      base               50 k
subversion              i386       1.1.4-2.ent      base              1.6 M
Installing for dependencies:
apr                     i386       0.9.4-24.5.c4.1  base               88 k
apr-util                i386       0.9.4-21         base               51 k
guile                   i386       5:1.6.4-14       base              746 k
httpd                   i386       2.0.52-22.ent.centos4  base              887 k
httpd-suexec            i386       2.0.52-22.ent.centos4  base               28 k
neon                    i386       0.24.7-4         base               86 k
perl-URI                noarch     1.30-4           base               79 k
swig                    i386       1.3.21-6         base              1.0 M
umb-scheme              i386       3.2-35           base              967 k

Transaction Summary
=============================================================================
Install     11 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 5.5 M
Is this ok [y/N]:yes

ps:可是這樣安裝有個缺點,就是他會和系統默認的httpd綁定!而每每咱們應用apache是要自行安裝的!  

這樣安裝後,能夠單獨應用svn服務了
[root@localhost svn]#mkdir /opt/svn
[root@localhost svn]# svnserve  -d --listen-port 3690 --listen-host 172.17.7.230 -r /opt/svn
[root@localhost svn]#cd /opt/svn
[root@localhost svn]#svn admin  create test1
[root@localhost svn]#mkdir /tmp/svnproj
[root@localhost svn]#cd /tmp/svnproj
[root@localhost svnproj]#mkdir 111 123 abc
[root@localhost svnproj]#vi 111/test1.cfg
[root@localhost svnproj]#vi 222/test2.txt
......
.......
[root@localhost svn]#svn  import /tmp/svnproj  [url=file:///opt/svn/test1]file:///opt/svn/test1[/url]

導入成功後:
[root@localhost svn]# svn import /tmp/svntest/ [url=file:///opt/svn/zx_svn_v1.0]file:///opt/svn/zx_svn_v1.0[/url] -m "test2"
Adding         /tmp/svntest/test
Adding         /tmp/svntest/111
Adding         /tmp/svntest/111/test111.txt
Adding         /tmp/svntest/abc
Adding         /tmp/svntest/123
Adding         /tmp/svntest/123/test123.cfg
Adding         /tmp/svntest/svn- commit .tmp
Adding         /tmp/svntest/svn-commit.2.tmp
Committed revision 1.
[root@localhost svn]#

修改配置 文件

authz   用戶 權限文件
[root@localhost svn]#vi test1/conf/authz

.........

[groups]
zx_mld = mld
[test1:/]
@zx_mld = rw
* =
[test1:/111]
@zx_mld = rw
* = r
ps:有關svn的authz文件中 格式 的說明請另行探討

用戶 密碼 文件
[root@localhost svn]# vi conf/passwd
[users]
mld = 123


svn配置文件
[root@localhost svn]#vi conf/svnserve.conf 
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

三個配置文件修改後, 自動 生效!

PS:切忌,這三個配置文件的配置內容前面都不容許出現空格。這裏尤爲容易忽略的是第三個文件, svnserve.conf中,系統默認的上面,若是你只是單純的去掉#號後,後面是有空格的!僅一個空格符也不行!!切忌!


一切配置好後,測試svn服務的 運行 狀況!
客戶端 用tsvn連接,地址輸入:svn://xxx.xxx.xxx.xxx/test1




若是你是安裝apache+svn,那麼在CentOS下,這樣作:
#tar xzvf 
#cd subversion-1.4.5.tar.gz
#./configure --prefix=/usr/local/svn  --with-apxs=/usr/local/apache/bin/apxs  --with-berkeley-db=/usr/local/db-4.3.29/ --with- ssl

PS:以上配置中,紅色的部分必須指定,這個是指定關聯到你本身安裝的apache。其餘的,例如 --prefix  --berkeley-db   --with-ssl  能夠根據實際狀況,不用配置!

#make
#make install

安裝完成後,去檢查你的apache的配置文件,在apache的安裝 目錄 /conf/httpd.conf
看到裏面有這樣的兩行:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

PS:我看到有的文章說,若是沒有這兩行就手動加上,其實我我的感受應該必然會有,若是沒有,那估計是你哪步安裝有問題了

繼續修改配置文件,加入:
<Location /zx_svn>
DAV svn
SVNPath /opt/svn/test1
AuthzSVNAccessFile /etc/svn-acl-conf
AuthType Basic
AuthName "Subversion repos"
AuthUserFile /etc/svn-auth-conf
Require valid-user
</Location>

上面一段配置文件中,涉及到具體目錄的,本身修改一下!不要盲目照搬!
#htpasswd -cm /etc/svn-auth-conf yourusername
New password:
Re-type new password:

Adding password for user yourusername
#htpasswd -m /etc/svn-auth-conf yourusername2

New password:

Re-type new password:

Adding password for user anotherusername
#/usr/local/apache/bin/apachectl

啓動apache後,執行上面的創建svn 版本庫 、導入的過程(此處若是和上面結合一塊兒的話,只安裝一次便可。不用重複安裝!)。
完成後,在 瀏覽器 地址欄裏輸入: http://xxx.xxx.xxx.xxx/test1

能經過瀏覽器看到以前導入的頁面,即表示成功了!

而後根據接入版本苦的用戶的權限,修改權限管理文件:/etc/svn-acl-conf


5、測試
svn 模式:
用客戶端TSVN測試,在tsvn瀏覽的地址欄中輸入:svn://xxx.xxx.xxx.xxx/你的版本庫名字
apache模式:
在瀏覽器地址欄內輸入: http://xxx.xxx.xxx.xxx/ 你的版本庫名字

commit,  update  若是遇到問題,那麼首先去檢查權限控制文件內用戶的權限,而後若是是權限控制文件的配置沒有問題,那麼再去檢查對應的配置中目錄的權限!處了這兩天權限問題,若是你還不能訪問,那頗有多是你服務沒啓動、地址輸入錯誤、 用戶名 密碼錯誤等等低級錯誤了!

另外,強調一點,linux下對於端口的要求不少,svn默認的是3690,apache默認的是80,這兩個端口你要是修改了的話,經過http://訪問的時候,後面要加上端口號!svn的好像不用,能夠測試一下,這裏我懶了,沒測試過svn的!

同時,若是你的linux服務器有防火牆,記着開放對應端口!



6、須要注意的地方:
1.svn和apache+svn不要混了,只是兩種不一樣模式,兩種不一樣服務的結合!
2.linux下面權限的問題,好比,我開始創建svn庫的時候,創建在/var/目錄下面,後來弄了好久,發現是這個目錄下對於用戶的權限要求比較嚴格,以致於我沒有權限,而連接異常!後來我改到/opt目錄下,或者/tmp目錄下,都是能夠了,固然,這個也不能把權限放的太寬,當你選好了一個目錄後,仍是要把權限限制在必定用戶使用範圍內的,由於這是你的倉庫哦:)
3.端口、防火強問題,切忌該開的必定要開,不應開的必定纔不開!
4.版本庫的規劃,合併
5.對於版本庫的管理方面,中文亂碼方面也是個問題,稍後使用中會不斷總結和你們分享的!


7、心得
多實踐,多動手!

8、附錄--svn經常使用基本命令
SVN 基本 功能 :
Import: 將整個 project_directory 的資料 import 到 svn 裏
  • svn import project_directory http://DOMAIN/svn_project
  • svn import project_directory file:///SVN_PATH/svn_project
Checkout: ( check out 可簡寫成 co), 將資料 checkout 出來
  • svn co http://SVN_PATH/svn_project
  • svn co file:///SVN_PATH/svn_project
  • svn co -r 12 file:///var/lib/svn/dev/projects # checkout出第12版的 projcets code
List: (list 可簡寫成 ls), 列表,查看有上面有哪些資料
  • svn ls http://SVN_PATH/svn_project
  • svn ls file:///SVN_PATH/svn_project
Update: (update 簡寫 up), 更新
  • SVN_CHECKOUT_DIR$ svn up
Commit: (commit 簡寫 ci), 提交到svn
  • SVN_CHECKOUT_DIR$ svn ci
Status: (status 簡寫 st), 查看目前本地版本/結構跟 svn 上的有哪些不一樣
  • SVN_CHECKOUT_DIR$ svn st
Add: 新增長到 svn
  • SVN_CHECKOUT_DIR$ svn add filename 或 svn add directory
MV: 修改檔案名,且保留此檔案以前的名字
  • SVN_CHECKOUT_DIR$ svn mv filename new_filename
Revert: 還願此次的修改,回到前一個狀態(未 commit 前可用)
  • SVN_CHECKOUT_DIR$  svn revert [file | directory]
SVN 檔案狀態信息:
  • ?: 此檔案不存在 SVN 裏面
  • A: 本次新增的檔案
  • C: 此檔案有人修改過,合併不成功,須要手動介入
  • D: 這次移除的檔案
  • M: 此檔案有修改過
  • U: 此檔案有被更新過
相關文章
相關標籤/搜索