apache+svn部署

1. 前言php

Subversion(簡稱svn)是跨平臺的開源版本控制系統,是cvs的接班人,目前絕大多數開源軟件都使用svn做爲代碼版本管理軟件。Subversion支持linux和windows,但較多安裝在linux下。html

svn服務器有兩種運行方式:獨立服務器和藉助於apache。 svn://    http://linux

svn客戶端:tortoisesvnweb

svn的基本工做思路: 在一臺服務器上創建一個源代碼庫,庫裏能夠存放許多不一樣項目的源程序。有源代碼庫管理員統一管理這些源程序。每一個用戶在使用源代碼庫以前,首先要把源代碼庫裏德項目文件下載到本地,而後開發人員能夠在本地修改,左後用svn命令進行提交,遊源代碼庫統一管理修改。算法

版本控制解決了:代碼管理混亂、解決代碼衝突困難、在代碼整合期間引起bug、沒法對代碼的擁有者進行權限控制、項目不一樣版本的發佈困難apache

配置subversion:windows

dav目錄:是提供apache與mod_dav_svn使用的目錄,讓他們存儲內部數據bash

db目錄:就是全部版本控制的數據存放文件服務器

hooks目錄:放置hook腳本文件的目錄jsp

locks目錄:用來放置subversion見艱苦鎖定數據的目錄,用來追蹤存取文件庫的客戶端

format文件:是一個文本文件,裏面只放了一個整數。表示當前文件庫配置的版本號

conf目錄:是這個倉庫的配置文件(倉庫的用戶訪問帳號.權限等)

2. 安裝

cat /etc/redhat-release        #查看系統版本
CentOS release 5.8 (Final)
uname -r                       #查看內核
2.6.18-308.el5
yum install httpd httpd-devel subversion mod_dav_svn -y
#yum安裝apache、svn,mod_dav_svn是apache+svn結合的模塊

3. 配置

3.1 查看/etc/httpd/conf/httpd.conf中,apache默認啓用用戶是否被註釋,若是註釋,取消註釋

sed -i 's/^#User apache/User apache/g' /etc/httpd/conf/httpd.conf
sed -i 's/^#Group apache/Group apache/g' /etc/httpd/conf/httpd.conf

3.2 Apache服務器配置SVN訪問的目錄

cat >> /etc/httpd/conf.d/subversion.conf << EOF
#####by-hooper-2013-08-28#####
<Location /svn/>
      DAV svn
      SVNParentPath /opt/svn/                     
      AuthType Basic
      AuthName "hooper's svn"
      AuthUserFile /etc/httpd/passwd.conf         
      AuthzSVNAccessFile /opt/svn/authz            
      Require valid-user
</Location>
#####by-hooper-2013-08-28#####
EOF

svn的apache配置文件會自動生成/etc/httpd/conf.d/subversion.conf

配置文件的說明以下:

<Location /svn/>
#在url或svn客戶端上指定的訪問路徑
      DAV svn
#聲明svn
      SVNParentPath /opt/svn/
#svn的根目錄                   
      AuthType Basic
#基礎密碼認證
      AuthName "hooper's svn"
#網站說明文字
      AuthUserFile /etc/httpd/passwd.conf
#apache登錄密碼認證文件        
      AuthzSVNAccessFile /opt/svn/authz
#svn目錄權限           
      Require valid-user
</Location>

3.3 建立svn目錄及項目庫並受權apache用戶

mkdir /opt/svn
svnadmin create /opt/svn/hooper
chown -R apache:apache /opt/svn/hooper

3.4 建立經過apache訪問svn的帳戶和密碼

htpasswd -cm /etc/httpd/passwd.conf  hooper
New password:
Re-type new password:
Adding password for user hooper
htpasswd  /etc/httpd/passwd.conf  nil
New password:
Re-type new password:
Adding password for user nil
htpasswd  /etc/httpd/passwd.conf  hj
New password:
Re-type new password:
Adding password for user hj
# htpasswd -c  建立一個加密文件
# htpasswd -m  默認apache htpassswd命令採用MD5算法對密碼進行加密

3.5 配置svn帳戶訪問庫權限

cat >> /opt/svn/authz << EOF
#####by-hooper-2013-08-28#####
[groups]
admin = hooper,hj
user = nil
[hooper:/]
@admin = rw
@user = r
[/]
#####by-hooper-2013-08-28#####
EOF

配置文件說明以下:

[groups]
#羣組設置
admin = hooper,hj
#admin組中的用戶,多個用戶用「,」隔開
user = nil
#user組中的用戶
[hooper:/]
#hooper項目庫
@admin = rw
#admin組對hooper這個庫有讀寫權限
@user = r
#user組對hooper這個庫有讀的權限
[/]
#PS:「* = r 表示對全部的用戶都具備讀權限」

3.6 啓動svn及apache

svnserve -d -r /opt/svn/
apachectl -t
#Syntax OK
apachectl start

3.7 檢查進程及端口

ps -ef|egrep "svn|httpd"|grep -v grep
netstat -ltnp|egrep "80|3690"

至此apache+svn部署完成。

4. 在客戶端查看時候部署完成

4.1 在客戶端安裝tortoisesvn(安裝過程略過)

URL:http://tortoisesvn.net/downloads.html

4.2 設置

新建一個文件夾,右鍵SVN checkout

在URL裏輸入:http://192.168.10.166/svn/hooper 點擊「OK」

輸入用戶及密碼:hooper,點擊「ok」

顯示登陸成功

這樣就可使用了

5. SVN管理命令

5.1 svn命令

導入數據到版本庫

# svnadmin create /data/svndata/pro1

# svn import /www/shop file:///data/svndata/pro1 -m 「import」

查看版本庫下的內容

# svn list file:///data/svndata/pro1

注:在導入倉庫後,原來的目錄樹並無轉化成一個工做副本,須要使用checkout手動導出一個工做副本。


從版本庫導出數據

# svn checkout file:///data/svndata/pro1

取出任意深度的數據

# svn checkout file:///data/svndata/pro1/ad/html

將數據放到新目錄

# svn checkout file:///data/svndata/pro1 testweb

//將pro1工做副本放到testweb中,而不是默認生成的pro1目錄

# svn co file:///data/svn/my_xywy_com/ /www/other/my.xywy.com

// 導出my_xywy_com所有文件,到/www/other/my.xywy.com下

它能夠顯示工做副本中的全部項目

# svn status -u -v


18       16 sum          fff.txt

18        1 root         index2.php

18       10 sum          index20090416.html

18       17 sum          111/fff.txt

18       17 sum          111/index2.php

18       17 sum          111/index20090416.html

18       17 sum          111/index.jsp


5.2 svnlook命令

查看當前的版本倉庫內容

# svnlook info 版本倉庫


Sum//做者

2009-09-10 11:51:17 +0800 (Thu, 10 Sep 2009)//提交時間

0//最後一次提交參數信息


查看最近一次更新的修訂號

# svnlook youngest 版本倉庫


顯示一個版本倉庫中文件和目錄的樹形結構圖

# svnlook tree /data/svndata/pro2/ --show-ids


jytk.html <0-1.0.r1/232049>

gallery.php <3-1.0.r1/232223>

gywm.html <5-1.0.r1/232402>

database.php <7-1.0.r1/232579>

lxyp.html <b-1.0.r1/232979>


查看倉庫中某一個文件內容

#svnlook cat /data/svndata/pro2/ index.html//查看pro2項目的index.html文件中的內容


顯示被修改的文件

# svnlook diff /data/svndata/pro2/


Added: 11.txt//顯示增長了11.txt文件

5.3 導出svn版本庫中的文件夾

若要完全刪除SVN版本庫某文件夾,可使用下面的方法。

查看項目sumitest中的列表

# svn list file:///data/svn/sumitest


fxywy/

fxywy/src

jxywy/

jxywy/src

src/

要把fxywy/src文件夾刪除,從新導入到新的項目sumitest2中,方法以下:

# svnadmin dump /data/svn/sumitest > sumi1.dump

// 導出sumitest整個項目到sumi1.dump

# cat sumi1.dump | /usr/local/svn/bin/svndumpfilter exclude /fxywy/src > sumi2.dump

// 從sumi1.dump過濾出/fxywy/src目錄。Windows中cat換成type

# svnadmin create /data/svn/sumitest2

// 建立新的項目庫

# svnadmin load /data/svn/sumitest2 < sumi2.dump

//導出/fxywy/src 到sumitest2庫

5.4 刪除svn版本庫中的文件夾

svn delete 能夠從工做拷貝或版本庫刪除一個項目。

# svn delete -m 「Deleting file」file:///data/svn/sumitest2/fxywy/

// 刪除sumitest2下的/fxywy目錄

相關文章
相關標籤/搜索