Centos6.3下apache+svn部署web版本同步
? ? ?前段時間一直忙項目,所以項目初期的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
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根目錄:
# yum install expat* -y
# wget http://www.sqlite.org/sqlite-amalgamation-3071501.zip
# unzip sqlite-amalgamation-3071501.zip
# mv sqlite-amalgamation-3071501 sqlite-amalgamation
之前未安裝apache請看紅字,若安裝apache直接無視:
-------------------------------------------------
注:因為之前已經編譯成功apache,所以apache下面的apr與apr-util組件已成功編譯到系統,如果您的系統未裝apache,則這里需要安裝apr與apr-util組件并在編譯svn時加上此組件的編譯參數
假設apr與apr-util后來單獨編譯到/usr/local/apr與/usr/local/apr-util目錄
安裝apr:
# cd ..
# wget http://apache.fayea.com/apache-mirror//apr/apr-1.5.0.tar.gz
# tar zxvf apr-1.5.0.tar.gz
# cd apr-1.5.0
# ./configure --prefix=/usr/local/apr
# make && make install
# cd ..
安裝apr-util:
# wget http://apache.fayea.com/apache-mirror//apr/apr-util-1.5.3.tar.gz
# tar zxvf apr-util-1.5.3
# cd apr-util-1.5.3
# ./configure --prefix=/usr/local/apr-util
# make && make install
# cd ..
編譯svn:
# cd subversion-1.8.0
# ./configure --prefix=/usr/local/svn -with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/bin/apu-1-config
--------------------------------------------------
編譯安裝
# cd subversion-1.8.0
# ./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指令執行以下操作。
之前未安裝svnserve可執行如下命令加載環境變量:
# echo "PATH=$PATH:/usr/local/svn/bin;export PATH" >> /etc/profile
# source /etc/profile
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客戶端版本庫
2).輸入svn遠程版本庫URL,以及本地版本庫存放路徑
3).輸入該版本庫用戶名密碼,默認該賬戶信息明文保存在/data/svndata/www.example.com/conf/passwd內
4).創建版本庫完成,顯示為第一個版本
3.同步版本庫
例如:在windows客戶端版本庫里有新的文件更新,如何將數據同步到web端
1).首先,右鍵該版本庫www.example.com目錄,選擇svn Update
相當于將svn服務器端的數據同步更新到本地,即獲取數據。
2).顯示更新到第四個版本
3).右鍵該版本庫www.example.com目錄,選擇svn Commit
相當于將本地客戶端的數據同步提交到svn服務端,即推送數據。
4).將需要推送的數據打鉤,OK即可完成操作.
5).顯示目前為第五個版本
查看是否成功將文件推送到apache虛擬目錄
# cd /usr/local/apache/htdocs
# pwd
# ls -l
---------大功告成-----------
轉載于:https://blog.51cto.com/showerlee/1240955
總結
以上是生活随笔為你收集整理的Centos6.3下apache+svn部署web版本同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于使用AIR开发移动APP 的技术解决
- 下一篇: Android应用--简、美音乐播放器获