Centos6.3下apache+svn部署web版本同步

來源:互聯網
上載者:User

     前段時間一直忙項目,所以項目初期的svn服務就一直沒來得及更新,今天剛好忙完就將自己之前的配置重新總結了下,供大家參考。

     svn(subversion)作為一款開源的代碼版本管理軟體,目前普遍用在項目開發人員將本地的原始碼上傳到web測試伺服器的一種同步軟體。

     其儲存版本資料有2種方式:BDB(一種事務安全型表類型)和預設的FSFS(一種不需要資料庫的儲存系統)。因為BDB方式在伺服器中斷時,有可能鎖住資料,所以還是FSFS方式相對安全一些。

     本篇博文就是為了實現開發人員使用windows下的svn用戶端將原始碼上傳到服務端svn版本庫,並利用svn的hock指令碼將庫資料同步到apache目錄,達到即時測試web頁面的功能。


我的部落格新站已經建好,更多新的內容即將在新站更新。。

歡迎訪問     http://www.showerlee.com



解決方案:


一.環境部署


作業系統:        centos6.3 x64

SVN:              subversion-1.8.0

apache:           httpd-2.4.4


650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1135114333-0.jpg" title="svn+apache.jpg" />


svn server(centos6.3 x64): 192.168.7.74  

svn client(win7 x64): 192.168.7.129    


1.關閉iptables和SELINUX

# service iptables stop

註:如需開啟防火牆,則添加如下一條規則開啟svn 3690連接埠

# iptables -A INPUT -p tcp  --dport 3690 -j ACCEPT

# setenforce 0

# vi /etc/sysconfig/selinux

---------------

SELINUX=disabled

---------------


2.同步時間

# ntpdate asia.pool.ntp.org


3.安裝apache

傳送門:http://showerlee.blog.51cto.com/2047005/1174141


4.關閉系統內建svnserve

# service svnserve stop

# chkconfig svnserve off

註:本文檔為了與apache2.4.4配合不發生相容問題,所以使用了最新編譯版本的svn,這裡關閉是為了保證與rpm的版本不衝突.


二.svn安裝配置:

(svn server)


1.下載svn源碼包並安裝

# wget http://mirrors.tuna.tsinghua.edu.cn/apache/subversion/subversion-1.8.0.tar.bz2

# tar jxvf subversion-1.8.0.tar.bz2

# cd subversion-1.8.0

建立安裝目錄

# mkdir -p /usr/local/svn


2.安裝svn依賴包並解壓模組到svn根目錄:

# wget http://www.sqlite.org/sqlite-amalgamation-3071501.zip

# unzip sqlite-amalgamation-3071501.zip

# mv sqlite-amalgamation-3071501 sqlite-amalgamation

編譯安裝

# ./configure --prefix=/usr/local/svn

# make && make install


測試安裝是否成功

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

-----------------------------

svnserve,版本 1.8.0 (r1490375)

  編譯於 Jun 29 2013,04:08:41 在 x86_64-unknown-linux-gnu

-----------------------------

注:centos6.3預設裝有svn服務端,版本為為1.6.11,其中svn命令在/usr/bin/svn下被環境變數載入,本文檔編譯的版本為1.8.0,不推薦使用低版本svn指令執行以下操作,可能會有報錯。這裡為了區分建議直接全路徑訪問編譯後的高版本svn指令執行以下操作。


3.配置svn

1).建立版本庫目錄這個需安裝目錄區分開)

# mkdir -p /data/svndata/www.example.com


2).建立svn版本庫

# svnadmin create /data/svndata/www.example.com

註:執行此命令後svn自動在/data/svndata/目錄下添加必須的設定檔.

# ls /data/svndata/www.example.com

--------------------

conf db format hooks locks README.txt

--------------------

注:版本庫不同於一般的檔案夾, 直接在作業系統上建立檔案無法被SVN識別, 必須使用import等命令將檔案匯入版本庫.此為svn內部指令,create用於建立版本庫。請使用svn help查看詳細說明。


3).修改版本庫設定檔

# vi /data/svndata/www.example.com/conf/svnserve.conf

修改如下配置

-------------------------------

[general]

# 使非授權使用者無法訪問

anon-access = none

# 使授權使用者有寫入權限

auth-access = write

# 指明密碼檔案路徑

password-db = passwd

# 存取控制檔案

authz-db = authz

# 認證命名空間,subversion會在認證提示裡顯示,並且作為憑證緩衝的關鍵字。

realm = /data/svndata/www.example.com

--------------------------------


4).配置使用者

# vi /data/svndata/www.example.com/conf/passwd

添加如下內容

-----------------

[users]


user01 = 123456

user02 = 123456

-----------------

註:可以添加多個svn賬戶,=前後為使用者名稱和密碼


5).配置許可權

# vi /data/svndata/www.example.com/conf/authz

添加以下內容

-------------

[/]

user01 = rw

user02 = r

------------

註:列出對各使用者的授權。包括唯讀r,讀寫rw。沒有列出的使用者,則不允許訪問


6).啟動svn服務

# /usr/local/svn/bin/svnserve -d -r /data/svndata/


註:此指令用於啟動svn服務,-d指明以守護模式運行,svn自動在3690連接埠監聽。3690是預設連接埠,可以使用“--listen-port=”或者“--listen-host=”來指定其它連接埠以及非本地主機。-r選項用來指定svn服務的根目錄,這樣使用者就可以使用相對路徑訪問,而不用提供完整路徑。


7).檢查連接埠

# lsof -i:3690

----------------------------

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

svnserve 65371 root    3u  IPv4  82329      0t0  TCP *:svn (LISTEN)

----------------------------


8).設定開機啟動

# echo "/usr/local/svn/bin/svnserve -d -r /data/svndata/" >> /etc/rc.local


到此svn初步搭建完畢


三.svn同步apache配置:

1.添加apache的svn模組

# cd ~/subversion-1.8.0

# cp ./subversion/mod_dav_svn/.libs/mod_dav_svn.so  /usr/local/apache2/modules/

# cp ./subversion/mod_authz_svn/.libs/mod_authz_svn.so  /usr/local/apache2/modules/

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

末行添加如下內容:

---------------------

LoadModule dav_module modules/mod_dav.so

LoadModule dav_svn_module modules/mod_dav_svn.so

---------------------

重啟apache服務:

# /usr/local/apache2/bin/apachectl restart


2.設定svn同步指令碼

建立apache虛擬目錄

# mkdir -p /usr/local/apache2/htdocs/www.example.com    

設定apache預設使用者為該虛擬目錄宿主

# chown -R daemon.daemon /usr/local/apache2/htdocs/www.example.com

建立指令碼,將svn該版本庫資料同步到apache虛擬目錄

# cd /data/svndata/www.example.com/

# vi post-commit

------------------------

#!/bin/sh

export LANG=zh_CN.UTF-8

SVN=/usr/local/svn/bin/svn

WEB=/usr/local/apache2/htdocs/www.example.com

#預設無需輸入帳號密碼

#USERNAME=user01

#PASSWORD=123456

# SVN update $WEB --username $USERNAME --password $PASSWORD --no-auth-cache

$SVN update $WEB

------------------------

註:該指令碼會在用戶端執行svn commit同時被觸發,從而將版本庫的資料同步到apache虛擬目錄

設定指令碼可執行許可權

# chmod a+x post-commit


使用checkout建立一個工作複本

# /usr/local/svn/bin/svn co svn://localhost/www.example.com    /usr/local/apache2/htdocs/www.example.com/

按照提示操作

==============================================

認證領域: <svn://localhost:3690> /data/svndata/www.example.com/

“root”的密碼: 123456

認證領域: <svn://localhost:3690> /data/svndata/www.example.com/

“user01”的密碼: 123456


-----------------------------------------------------------------------

注意!  你的密碼,對於認證域:


  <svn://localhost:3690> /data/svndata/www.example.com/


只能明文儲存在磁碟上!  如果可能的話,請考慮配置你的系統,讓 Subversion

可以儲存加密後的密碼。請參閱文檔以獲得詳細資料。


你可以通過在“/root/.subversion/servers”中設定選項“store-plaintext-


passwords”為“yes”或“no”,

來避免再次出現此警告。

-----------------------------------------------------------------------

儲存未加密的密碼(yes/no)?yes

A    /usr/local/apache2/htdocs/www.example.com/1.txt

A    /usr/local/apache2/htdocs/www.example.com/2.txt

A    /usr/local/apache2/htdocs/www.example.com/3.txt

取出版本 3。


==============================================

svn認證成功,同步認證資訊會儲存在apache虛擬目錄 ./www.example.com/.svn/ 下

註:這裡同步的3個txt檔案為版本庫已儲存資料


3.重啟svn服務:

# killall svnserve

# /usr/local/svn/bin/svnserve -d -r /data/svndata/


四.svn用戶端配置

(svn client)

1.下載TortoiseSVN,並預設安裝

http://sourceforge.net/projects/tortoisesvn/files/latest/download?source=dlp

2.建立版本庫:

例如:

1).在F盤建立work檔案夾並右鍵選擇SVN Checkout,建立svn用戶端版本庫

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/113511HJ-1.png" style="float:none;" title="31.png" />


2).輸入svn遠程版本庫URL,以及本地版本庫存放路徑


650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1135115N8-2.png" style="float:none;" title="8.png" />

3).輸入該版本庫使用者名稱密碼,預設該賬戶資訊明文儲存在/data/svndata/www.example.com/conf/passwd內

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1135115431-3.png" style="float:none;" title="9.png" />


4).建立版本庫完成,顯示為第一個版本

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1135115H5-4.png" style="float:none;" title="34.png" />

3.同步版本庫

例如:在windows用戶端版本庫裡有新的檔案更新,如何將資料同步到web端

1).首先,右鍵該版本庫www.example.com目錄,選擇svn Update

相當於將svn伺服器端的資料同步更新到本地,即擷取資料。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1135114Y5-5.png" style="float:none;" title="2.png" />


2).顯示更新到第四個版本

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/11351145c-6.png" style="float:none;" title="3.png" />

3).右鍵該版本庫www.example.com目錄,選擇svn Commit

相當於將本地用戶端的資料同步提交到svn服務端,即推送資料。

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1135111335-7.png" style="float:none;" title="4.png" />


4).將需要推送的資料打鉤,OK即可完成操作.

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/113511N24-8.png" style="float:none;" title="5.png" />

5).顯示目前為第五個版本

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1135113111-9.png" style="float:none;" title="6.png" />

查看是否成功將檔案推送到apache虛擬目錄

# cd /usr/local/apache/htdocs

# pwd

# ls -l

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/1135115B1-10.png" title="7.png" />


---------大功告成-----------


本文出自 “一路向北” 部落格,請務必保留此出處http://showerlee.blog.51cto.com/2047005/1240955

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.